acryl-datahub 1.2.0.6__py3-none-any.whl → 1.2.0.7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of acryl-datahub might be problematic. Click here for more details.

Files changed (84) hide show
  1. {acryl_datahub-1.2.0.6.dist-info → acryl_datahub-1.2.0.7.dist-info}/METADATA +2629 -2543
  2. {acryl_datahub-1.2.0.6.dist-info → acryl_datahub-1.2.0.7.dist-info}/RECORD +83 -75
  3. {acryl_datahub-1.2.0.6.dist-info → acryl_datahub-1.2.0.7.dist-info}/entry_points.txt +1 -0
  4. datahub/_version.py +1 -1
  5. datahub/api/graphql/operation.py +1 -1
  6. datahub/ingestion/autogenerated/capability_summary.json +46 -6
  7. datahub/ingestion/autogenerated/lineage.json +3 -2
  8. datahub/ingestion/run/pipeline.py +1 -0
  9. datahub/ingestion/source/aws/s3_boto_utils.py +97 -5
  10. datahub/ingestion/source/bigquery_v2/bigquery_connection.py +12 -1
  11. datahub/ingestion/source/common/subtypes.py +3 -0
  12. datahub/ingestion/source/data_lake_common/path_spec.py +1 -1
  13. datahub/ingestion/source/datahub/datahub_database_reader.py +19 -8
  14. datahub/ingestion/source/dbt/dbt_common.py +74 -0
  15. datahub/ingestion/source/dremio/dremio_aspects.py +3 -2
  16. datahub/ingestion/source/dremio/dremio_source.py +4 -0
  17. datahub/ingestion/source/dynamodb/dynamodb.py +10 -7
  18. datahub/ingestion/source/excel/__init__.py +0 -0
  19. datahub/ingestion/source/excel/config.py +92 -0
  20. datahub/ingestion/source/excel/excel_file.py +539 -0
  21. datahub/ingestion/source/excel/profiling.py +308 -0
  22. datahub/ingestion/source/excel/report.py +49 -0
  23. datahub/ingestion/source/excel/source.py +662 -0
  24. datahub/ingestion/source/excel/util.py +18 -0
  25. datahub/ingestion/source/fivetran/fivetran_query.py +8 -1
  26. datahub/ingestion/source/openapi.py +1 -1
  27. datahub/ingestion/source/powerbi/config.py +33 -0
  28. datahub/ingestion/source/powerbi/m_query/data_classes.py +1 -0
  29. datahub/ingestion/source/powerbi/m_query/pattern_handler.py +100 -10
  30. datahub/ingestion/source/powerbi/powerbi.py +5 -0
  31. datahub/ingestion/source/qlik_sense/qlik_sense.py +1 -1
  32. datahub/ingestion/source/redshift/config.py +9 -6
  33. datahub/ingestion/source/redshift/lineage.py +386 -687
  34. datahub/ingestion/source/redshift/redshift.py +19 -106
  35. datahub/ingestion/source/s3/source.py +65 -59
  36. datahub/ingestion/source/snowflake/constants.py +2 -0
  37. datahub/ingestion/source/snowflake/snowflake_config.py +10 -0
  38. datahub/ingestion/source/snowflake/snowflake_connection.py +16 -5
  39. datahub/ingestion/source/snowflake/snowflake_query.py +27 -0
  40. datahub/ingestion/source/snowflake/snowflake_report.py +1 -0
  41. datahub/ingestion/source/snowflake/snowflake_schema.py +179 -7
  42. datahub/ingestion/source/snowflake/snowflake_schema_gen.py +25 -7
  43. datahub/ingestion/source/snowflake/snowflake_summary.py +1 -0
  44. datahub/ingestion/source/snowflake/snowflake_utils.py +18 -5
  45. datahub/ingestion/source/snowflake/snowflake_v2.py +6 -1
  46. datahub/ingestion/source/sql/hive_metastore.py +1 -0
  47. datahub/ingestion/source/sql/mssql/job_models.py +3 -1
  48. datahub/ingestion/source/sql/mssql/source.py +62 -3
  49. datahub/ingestion/source/sql_queries.py +24 -2
  50. datahub/ingestion/source/state/checkpoint.py +3 -28
  51. datahub/ingestion/source/unity/config.py +74 -9
  52. datahub/ingestion/source/unity/proxy.py +167 -5
  53. datahub/ingestion/source/unity/proxy_patch.py +321 -0
  54. datahub/ingestion/source/unity/proxy_types.py +24 -0
  55. datahub/ingestion/source/unity/report.py +5 -0
  56. datahub/ingestion/source/unity/source.py +111 -1
  57. datahub/ingestion/source/usage/usage_common.py +1 -0
  58. datahub/metadata/_internal_schema_classes.py +573 -517
  59. datahub/metadata/_urns/urn_defs.py +1748 -1748
  60. datahub/metadata/schema.avsc +18564 -18484
  61. datahub/metadata/schemas/ChartInfo.avsc +2 -1
  62. datahub/metadata/schemas/DataHubPageModuleProperties.avsc +9 -0
  63. datahub/metadata/schemas/InstitutionalMemory.avsc +9 -0
  64. datahub/metadata/schemas/LogicalParent.avsc +104 -100
  65. datahub/metadata/schemas/MetadataChangeEvent.avsc +81 -45
  66. datahub/metadata/schemas/Ownership.avsc +69 -0
  67. datahub/metadata/schemas/SchemaFieldKey.avsc +3 -1
  68. datahub/metadata/schemas/StructuredProperties.avsc +69 -0
  69. datahub/metadata/schemas/StructuredPropertyDefinition.avsc +3 -0
  70. datahub/metadata/schemas/__init__.py +3 -3
  71. datahub/sdk/chart.py +36 -22
  72. datahub/sdk/dashboard.py +38 -62
  73. datahub/sdk/lineage_client.py +6 -26
  74. datahub/sdk/main_client.py +7 -3
  75. datahub/sdk/search_filters.py +16 -0
  76. datahub/specific/aspect_helpers/siblings.py +73 -0
  77. datahub/specific/dataset.py +2 -0
  78. datahub/sql_parsing/sql_parsing_aggregator.py +3 -0
  79. datahub/sql_parsing/tool_meta_extractor.py +1 -3
  80. datahub/upgrade/upgrade.py +14 -2
  81. datahub/ingestion/source/redshift/lineage_v2.py +0 -466
  82. {acryl_datahub-1.2.0.6.dist-info → acryl_datahub-1.2.0.7.dist-info}/WHEEL +0 -0
  83. {acryl_datahub-1.2.0.6.dist-info → acryl_datahub-1.2.0.7.dist-info}/licenses/LICENSE +0 -0
  84. {acryl_datahub-1.2.0.6.dist-info → acryl_datahub-1.2.0.7.dist-info}/top_level.txt +0 -0
@@ -188,7 +188,8 @@
188
188
  "createdActor": "inputEdges/*/created/actor",
189
189
  "createdOn": "inputEdges/*/created/time",
190
190
  "entityTypes": [
191
- "dataset"
191
+ "dataset",
192
+ "chart"
192
193
  ],
193
194
  "isLineage": true,
194
195
  "name": "Consumes",
@@ -148,6 +148,15 @@
148
148
  "name": "assetUrns",
149
149
  "Urn": "Urn",
150
150
  "urn_is_array": true
151
+ },
152
+ {
153
+ "type": [
154
+ "null",
155
+ "string"
156
+ ],
157
+ "name": "dynamicFilterJson",
158
+ "default": null,
159
+ "doc": "Optional dynamic filters\n\nThe stringified json representing the logical predicate built in the UI to select assets.\nThis predicate is turned into orFilters to send through graphql since graphql doesn't support\narbitrary nesting. This string is used to restore the UI for this logical predicate."
151
160
  }
152
161
  ],
153
162
  "doc": "The params required if the module is type ASSET_COLLECTION"
@@ -75,6 +75,15 @@
75
75
  },
76
76
  "name": "createStamp",
77
77
  "doc": "Audit stamp associated with creation of this record"
78
+ },
79
+ {
80
+ "type": [
81
+ "null",
82
+ "com.linkedin.pegasus2avro.common.AuditStamp"
83
+ ],
84
+ "name": "updateStamp",
85
+ "default": null,
86
+ "doc": "Audit stamp associated with updation of this record"
78
87
  }
79
88
  ],
80
89
  "doc": "Metadata corresponding to a record of institutional memory."
@@ -31,110 +31,114 @@
31
31
  "queryByDefault": false
32
32
  }
33
33
  },
34
- "type": {
35
- "type": "record",
36
- "name": "Edge",
37
- "namespace": "com.linkedin.pegasus2avro.common",
38
- "fields": [
39
- {
40
- "java": {
41
- "class": "com.linkedin.pegasus2avro.common.urn.Urn"
34
+ "type": [
35
+ "null",
36
+ {
37
+ "type": "record",
38
+ "name": "Edge",
39
+ "namespace": "com.linkedin.pegasus2avro.common",
40
+ "fields": [
41
+ {
42
+ "java": {
43
+ "class": "com.linkedin.pegasus2avro.common.urn.Urn"
44
+ },
45
+ "type": [
46
+ "null",
47
+ "string"
48
+ ],
49
+ "name": "sourceUrn",
50
+ "default": null,
51
+ "doc": "Urn of the source of this relationship edge.\nIf not specified, assumed to be the entity that this aspect belongs to.",
52
+ "Urn": "Urn"
42
53
  },
43
- "type": [
44
- "null",
45
- "string"
46
- ],
47
- "name": "sourceUrn",
48
- "default": null,
49
- "doc": "Urn of the source of this relationship edge.\nIf not specified, assumed to be the entity that this aspect belongs to.",
50
- "Urn": "Urn"
51
- },
52
- {
53
- "java": {
54
- "class": "com.linkedin.pegasus2avro.common.urn.Urn"
54
+ {
55
+ "java": {
56
+ "class": "com.linkedin.pegasus2avro.common.urn.Urn"
57
+ },
58
+ "type": "string",
59
+ "name": "destinationUrn",
60
+ "doc": "Urn of the destination of this relationship edge.",
61
+ "Urn": "Urn"
55
62
  },
56
- "type": "string",
57
- "name": "destinationUrn",
58
- "doc": "Urn of the destination of this relationship edge.",
59
- "Urn": "Urn"
60
- },
61
- {
62
- "type": [
63
- "null",
64
- {
65
- "type": "record",
66
- "name": "AuditStamp",
67
- "namespace": "com.linkedin.pegasus2avro.common",
68
- "fields": [
69
- {
70
- "type": "long",
71
- "name": "time",
72
- "doc": "When did the resource/association/sub-resource move into the specific lifecycle stage represented by this AuditEvent."
73
- },
74
- {
75
- "java": {
76
- "class": "com.linkedin.pegasus2avro.common.urn.Urn"
63
+ {
64
+ "type": [
65
+ "null",
66
+ {
67
+ "type": "record",
68
+ "name": "AuditStamp",
69
+ "namespace": "com.linkedin.pegasus2avro.common",
70
+ "fields": [
71
+ {
72
+ "type": "long",
73
+ "name": "time",
74
+ "doc": "When did the resource/association/sub-resource move into the specific lifecycle stage represented by this AuditEvent."
77
75
  },
78
- "type": "string",
79
- "name": "actor",
80
- "doc": "The entity (e.g. a member URN) which will be credited for moving the resource/association/sub-resource into the specific lifecycle stage. It is also the one used to authorize the change.",
81
- "Urn": "Urn"
82
- },
83
- {
84
- "java": {
85
- "class": "com.linkedin.pegasus2avro.common.urn.Urn"
76
+ {
77
+ "java": {
78
+ "class": "com.linkedin.pegasus2avro.common.urn.Urn"
79
+ },
80
+ "type": "string",
81
+ "name": "actor",
82
+ "doc": "The entity (e.g. a member URN) which will be credited for moving the resource/association/sub-resource into the specific lifecycle stage. It is also the one used to authorize the change.",
83
+ "Urn": "Urn"
86
84
  },
87
- "type": [
88
- "null",
89
- "string"
90
- ],
91
- "name": "impersonator",
92
- "default": null,
93
- "doc": "The entity (e.g. a service URN) which performs the change on behalf of the Actor and must be authorized to act as the Actor.",
94
- "Urn": "Urn"
95
- },
96
- {
97
- "type": [
98
- "null",
99
- "string"
100
- ],
101
- "name": "message",
102
- "default": null,
103
- "doc": "Additional context around how DataHub was informed of the particular change. For example: was the change created by an automated process, or manually."
104
- }
105
- ],
106
- "doc": "Data captured on a resource/association/sub-resource level giving insight into when that resource/association/sub-resource moved into a particular lifecycle stage, and who acted to move it into that specific lifecycle stage."
107
- }
108
- ],
109
- "name": "created",
110
- "default": null,
111
- "doc": "Audit stamp containing who created this relationship edge and when"
112
- },
113
- {
114
- "type": [
115
- "null",
116
- "com.linkedin.pegasus2avro.common.AuditStamp"
117
- ],
118
- "name": "lastModified",
119
- "default": null,
120
- "doc": "Audit stamp containing who last modified this relationship edge and when"
121
- },
122
- {
123
- "type": [
124
- "null",
125
- {
126
- "type": "map",
127
- "values": "string"
128
- }
129
- ],
130
- "name": "properties",
131
- "default": null,
132
- "doc": "A generic properties bag that allows us to store specific information on this graph edge."
133
- }
134
- ],
135
- "doc": "A common structure to represent all edges to entities when used inside aspects as collections\nThis ensures that all edges have common structure around audit-stamps and will support PATCH, time-travel automatically."
136
- },
137
- "name": "parent"
85
+ {
86
+ "java": {
87
+ "class": "com.linkedin.pegasus2avro.common.urn.Urn"
88
+ },
89
+ "type": [
90
+ "null",
91
+ "string"
92
+ ],
93
+ "name": "impersonator",
94
+ "default": null,
95
+ "doc": "The entity (e.g. a service URN) which performs the change on behalf of the Actor and must be authorized to act as the Actor.",
96
+ "Urn": "Urn"
97
+ },
98
+ {
99
+ "type": [
100
+ "null",
101
+ "string"
102
+ ],
103
+ "name": "message",
104
+ "default": null,
105
+ "doc": "Additional context around how DataHub was informed of the particular change. For example: was the change created by an automated process, or manually."
106
+ }
107
+ ],
108
+ "doc": "Data captured on a resource/association/sub-resource level giving insight into when that resource/association/sub-resource moved into a particular lifecycle stage, and who acted to move it into that specific lifecycle stage."
109
+ }
110
+ ],
111
+ "name": "created",
112
+ "default": null,
113
+ "doc": "Audit stamp containing who created this relationship edge and when"
114
+ },
115
+ {
116
+ "type": [
117
+ "null",
118
+ "com.linkedin.pegasus2avro.common.AuditStamp"
119
+ ],
120
+ "name": "lastModified",
121
+ "default": null,
122
+ "doc": "Audit stamp containing who last modified this relationship edge and when"
123
+ },
124
+ {
125
+ "type": [
126
+ "null",
127
+ {
128
+ "type": "map",
129
+ "values": "string"
130
+ }
131
+ ],
132
+ "name": "properties",
133
+ "default": null,
134
+ "doc": "A generic properties bag that allows us to store specific information on this graph edge."
135
+ }
136
+ ],
137
+ "doc": "A common structure to represent all edges to entities when used inside aspects as collections\nThis ensures that all edges have common structure around audit-stamps and will support PATCH, time-travel automatically."
138
+ }
139
+ ],
140
+ "name": "parent",
141
+ "default": null
138
142
  }
139
143
  ]
140
144
  }
@@ -332,7 +332,8 @@
332
332
  "createdActor": "inputEdges/*/created/actor",
333
333
  "createdOn": "inputEdges/*/created/time",
334
334
  "entityTypes": [
335
- "dataset"
335
+ "dataset",
336
+ "chart"
336
337
  ],
337
338
  "isLineage": true,
338
339
  "name": "Consumes",
@@ -747,6 +748,75 @@
747
748
  "name": "source",
748
749
  "default": null,
749
750
  "doc": "Source information for the ownership"
751
+ },
752
+ {
753
+ "Searchable": {
754
+ "/actor": {
755
+ "fieldName": "ownerAttributionActors",
756
+ "fieldType": "URN",
757
+ "queryByDefault": false
758
+ },
759
+ "/source": {
760
+ "fieldName": "ownerAttributionSources",
761
+ "fieldType": "URN",
762
+ "queryByDefault": false
763
+ },
764
+ "/time": {
765
+ "fieldName": "ownerAttributionDates",
766
+ "fieldType": "DATETIME",
767
+ "queryByDefault": false
768
+ }
769
+ },
770
+ "type": [
771
+ "null",
772
+ {
773
+ "type": "record",
774
+ "name": "MetadataAttribution",
775
+ "namespace": "com.linkedin.pegasus2avro.common",
776
+ "fields": [
777
+ {
778
+ "type": "long",
779
+ "name": "time",
780
+ "doc": "When this metadata was updated."
781
+ },
782
+ {
783
+ "java": {
784
+ "class": "com.linkedin.pegasus2avro.common.urn.Urn"
785
+ },
786
+ "type": "string",
787
+ "name": "actor",
788
+ "doc": "The entity (e.g. a member URN) responsible for applying the assocated metadata. This can\neither be a user (in case of UI edits) or the datahub system for automation.",
789
+ "Urn": "Urn"
790
+ },
791
+ {
792
+ "java": {
793
+ "class": "com.linkedin.pegasus2avro.common.urn.Urn"
794
+ },
795
+ "type": [
796
+ "null",
797
+ "string"
798
+ ],
799
+ "name": "source",
800
+ "default": null,
801
+ "doc": "The DataHub source responsible for applying the associated metadata. This will only be filled out\nwhen a DataHub source is responsible. This includes the specific metadata test urn, the automation urn.",
802
+ "Urn": "Urn"
803
+ },
804
+ {
805
+ "type": {
806
+ "type": "map",
807
+ "values": "string"
808
+ },
809
+ "name": "sourceDetail",
810
+ "default": {},
811
+ "doc": "The details associated with why this metadata was applied. For example, this could include\nthe actual regex rule, sql statement, ingestion pipeline ID, etc."
812
+ }
813
+ ],
814
+ "doc": "Information about who, why, and how this metadata was applied"
815
+ }
816
+ ],
817
+ "name": "attribution",
818
+ "default": null,
819
+ "doc": "Information about who, why, and how this metadata was applied"
750
820
  }
751
821
  ],
752
822
  "doc": "Ownership information"
@@ -883,50 +953,7 @@
883
953
  },
884
954
  "type": [
885
955
  "null",
886
- {
887
- "type": "record",
888
- "name": "MetadataAttribution",
889
- "namespace": "com.linkedin.pegasus2avro.common",
890
- "fields": [
891
- {
892
- "type": "long",
893
- "name": "time",
894
- "doc": "When this metadata was updated."
895
- },
896
- {
897
- "java": {
898
- "class": "com.linkedin.pegasus2avro.common.urn.Urn"
899
- },
900
- "type": "string",
901
- "name": "actor",
902
- "doc": "The entity (e.g. a member URN) responsible for applying the assocated metadata. This can\neither be a user (in case of UI edits) or the datahub system for automation.",
903
- "Urn": "Urn"
904
- },
905
- {
906
- "java": {
907
- "class": "com.linkedin.pegasus2avro.common.urn.Urn"
908
- },
909
- "type": [
910
- "null",
911
- "string"
912
- ],
913
- "name": "source",
914
- "default": null,
915
- "doc": "The DataHub source responsible for applying the associated metadata. This will only be filled out\nwhen a DataHub source is responsible. This includes the specific metadata test urn, the automation urn.",
916
- "Urn": "Urn"
917
- },
918
- {
919
- "type": {
920
- "type": "map",
921
- "values": "string"
922
- },
923
- "name": "sourceDetail",
924
- "default": {},
925
- "doc": "The details associated with why this metadata was applied. For example, this could include\nthe actual regex rule, sql statement, ingestion pipeline ID, etc."
926
- }
927
- ],
928
- "doc": "Information about who, why, and how this metadata was applied"
929
- }
956
+ "com.linkedin.pegasus2avro.common.MetadataAttribution"
930
957
  ],
931
958
  "name": "attribution",
932
959
  "default": null,
@@ -1107,6 +1134,15 @@
1107
1134
  "type": "com.linkedin.pegasus2avro.common.AuditStamp",
1108
1135
  "name": "createStamp",
1109
1136
  "doc": "Audit stamp associated with creation of this record"
1137
+ },
1138
+ {
1139
+ "type": [
1140
+ "null",
1141
+ "com.linkedin.pegasus2avro.common.AuditStamp"
1142
+ ],
1143
+ "name": "updateStamp",
1144
+ "default": null,
1145
+ "doc": "Audit stamp associated with updation of this record"
1110
1146
  }
1111
1147
  ],
1112
1148
  "doc": "Metadata corresponding to a record of institutional memory."
@@ -162,6 +162,75 @@
162
162
  "name": "source",
163
163
  "default": null,
164
164
  "doc": "Source information for the ownership"
165
+ },
166
+ {
167
+ "Searchable": {
168
+ "/actor": {
169
+ "fieldName": "ownerAttributionActors",
170
+ "fieldType": "URN",
171
+ "queryByDefault": false
172
+ },
173
+ "/source": {
174
+ "fieldName": "ownerAttributionSources",
175
+ "fieldType": "URN",
176
+ "queryByDefault": false
177
+ },
178
+ "/time": {
179
+ "fieldName": "ownerAttributionDates",
180
+ "fieldType": "DATETIME",
181
+ "queryByDefault": false
182
+ }
183
+ },
184
+ "type": [
185
+ "null",
186
+ {
187
+ "type": "record",
188
+ "name": "MetadataAttribution",
189
+ "namespace": "com.linkedin.pegasus2avro.common",
190
+ "fields": [
191
+ {
192
+ "type": "long",
193
+ "name": "time",
194
+ "doc": "When this metadata was updated."
195
+ },
196
+ {
197
+ "java": {
198
+ "class": "com.linkedin.pegasus2avro.common.urn.Urn"
199
+ },
200
+ "type": "string",
201
+ "name": "actor",
202
+ "doc": "The entity (e.g. a member URN) responsible for applying the assocated metadata. This can\neither be a user (in case of UI edits) or the datahub system for automation.",
203
+ "Urn": "Urn"
204
+ },
205
+ {
206
+ "java": {
207
+ "class": "com.linkedin.pegasus2avro.common.urn.Urn"
208
+ },
209
+ "type": [
210
+ "null",
211
+ "string"
212
+ ],
213
+ "name": "source",
214
+ "default": null,
215
+ "doc": "The DataHub source responsible for applying the associated metadata. This will only be filled out\nwhen a DataHub source is responsible. This includes the specific metadata test urn, the automation urn.",
216
+ "Urn": "Urn"
217
+ },
218
+ {
219
+ "type": {
220
+ "type": "map",
221
+ "values": "string"
222
+ },
223
+ "name": "sourceDetail",
224
+ "default": {},
225
+ "doc": "The details associated with why this metadata was applied. For example, this could include\nthe actual regex rule, sql statement, ingestion pipeline ID, etc."
226
+ }
227
+ ],
228
+ "doc": "Information about who, why, and how this metadata was applied"
229
+ }
230
+ ],
231
+ "name": "attribution",
232
+ "default": null,
233
+ "doc": "Information about who, why, and how this metadata was applied"
165
234
  }
166
235
  ],
167
236
  "doc": "Ownership information"
@@ -15,7 +15,9 @@
15
15
  "testResults",
16
16
  "deprecation",
17
17
  "subTypes",
18
- "logicalParent"
18
+ "logicalParent",
19
+ "globalTags",
20
+ "glossaryTerms"
19
21
  ]
20
22
  },
21
23
  "name": "SchemaFieldKey",
@@ -94,6 +94,75 @@
94
94
  "name": "lastModified",
95
95
  "default": null,
96
96
  "doc": "Audit stamp containing who last modified this relationship edge and when"
97
+ },
98
+ {
99
+ "Searchable": {
100
+ "/actor": {
101
+ "fieldName": "structuredPropertyAttributionActors",
102
+ "fieldType": "URN",
103
+ "queryByDefault": false
104
+ },
105
+ "/source": {
106
+ "fieldName": "structuredPropertyAttributionSources",
107
+ "fieldType": "URN",
108
+ "queryByDefault": false
109
+ },
110
+ "/time": {
111
+ "fieldName": "structuredPropertyAttributionDates",
112
+ "fieldType": "DATETIME",
113
+ "queryByDefault": false
114
+ }
115
+ },
116
+ "type": [
117
+ "null",
118
+ {
119
+ "type": "record",
120
+ "name": "MetadataAttribution",
121
+ "namespace": "com.linkedin.pegasus2avro.common",
122
+ "fields": [
123
+ {
124
+ "type": "long",
125
+ "name": "time",
126
+ "doc": "When this metadata was updated."
127
+ },
128
+ {
129
+ "java": {
130
+ "class": "com.linkedin.pegasus2avro.common.urn.Urn"
131
+ },
132
+ "type": "string",
133
+ "name": "actor",
134
+ "doc": "The entity (e.g. a member URN) responsible for applying the assocated metadata. This can\neither be a user (in case of UI edits) or the datahub system for automation.",
135
+ "Urn": "Urn"
136
+ },
137
+ {
138
+ "java": {
139
+ "class": "com.linkedin.pegasus2avro.common.urn.Urn"
140
+ },
141
+ "type": [
142
+ "null",
143
+ "string"
144
+ ],
145
+ "name": "source",
146
+ "default": null,
147
+ "doc": "The DataHub source responsible for applying the associated metadata. This will only be filled out\nwhen a DataHub source is responsible. This includes the specific metadata test urn, the automation urn.",
148
+ "Urn": "Urn"
149
+ },
150
+ {
151
+ "type": {
152
+ "type": "map",
153
+ "values": "string"
154
+ },
155
+ "name": "sourceDetail",
156
+ "default": {},
157
+ "doc": "The details associated with why this metadata was applied. For example, this could include\nthe actual regex rule, sql statement, ingestion pipeline ID, etc."
158
+ }
159
+ ],
160
+ "doc": "Information about who, why, and how this metadata was applied"
161
+ }
162
+ ],
163
+ "name": "attribution",
164
+ "default": null,
165
+ "doc": "Information about who, why, and how this metadata was applied"
97
166
  }
98
167
  ]
99
168
  }
@@ -23,6 +23,9 @@
23
23
  "doc": "The display name of the property. This is the name that will be shown in the UI and can be used to look up the property id."
24
24
  },
25
25
  {
26
+ "Searchable": {
27
+ "fieldType": "URN"
28
+ },
26
29
  "UrnValidation": {
27
30
  "entityTypes": [
28
31
  "dataType"
@@ -15,10 +15,10 @@ import pathlib
15
15
  def _load_schema(schema_name: str) -> str:
16
16
  return (pathlib.Path(__file__).parent / f"{schema_name}.avsc").read_text()
17
17
 
18
- def getMetadataChangeProposalSchema() -> str:
19
- return _load_schema("MetadataChangeProposal")
20
-
21
18
  def getMetadataChangeEventSchema() -> str:
22
19
  return _load_schema("MetadataChangeEvent")
23
20
 
21
+ def getMetadataChangeProposalSchema() -> str:
22
+ return _load_schema("MetadataChangeProposal")
23
+
24
24
  # fmt: on