openmetadata-ingestion 1.6.3.2.dev0__py3-none-any.whl → 1.6.4.0__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 openmetadata-ingestion might be problematic. Click here for more details.

Files changed (699) hide show
  1. metadata/generated/schema/analytics/__init__.py +1 -1
  2. metadata/generated/schema/analytics/basic.py +1 -1
  3. metadata/generated/schema/analytics/reportData.py +1 -1
  4. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  5. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  6. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  7. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  8. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  9. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  10. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  11. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  12. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  13. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  14. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  15. metadata/generated/schema/api/__init__.py +1 -1
  16. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  17. metadata/generated/schema/api/addTagToAssetsRequest.py +1 -1
  18. metadata/generated/schema/api/analytics/__init__.py +1 -1
  19. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  20. metadata/generated/schema/api/automations/__init__.py +1 -1
  21. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  22. metadata/generated/schema/api/bulkAssets.py +1 -1
  23. metadata/generated/schema/api/classification/__init__.py +1 -1
  24. metadata/generated/schema/api/classification/createClassification.py +1 -1
  25. metadata/generated/schema/api/classification/createTag.py +1 -1
  26. metadata/generated/schema/api/classification/loadTags.py +1 -1
  27. metadata/generated/schema/api/createBot.py +1 -1
  28. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  29. metadata/generated/schema/api/createType.py +1 -1
  30. metadata/generated/schema/api/data/__init__.py +1 -1
  31. metadata/generated/schema/api/data/createAPICollection.py +1 -1
  32. metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
  33. metadata/generated/schema/api/data/createChart.py +1 -1
  34. metadata/generated/schema/api/data/createContainer.py +1 -1
  35. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  36. metadata/generated/schema/api/data/createDashboard.py +1 -1
  37. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  38. metadata/generated/schema/api/data/createDatabase.py +1 -1
  39. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  40. metadata/generated/schema/api/data/createGlossary.py +1 -1
  41. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  42. metadata/generated/schema/api/data/createMetric.py +1 -1
  43. metadata/generated/schema/api/data/createMlModel.py +1 -1
  44. metadata/generated/schema/api/data/createPipeline.py +1 -1
  45. metadata/generated/schema/api/data/createQuery.py +1 -1
  46. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  47. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  48. metadata/generated/schema/api/data/createTable.py +1 -1
  49. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  50. metadata/generated/schema/api/data/createTopic.py +1 -1
  51. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  52. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  53. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  54. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  55. metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
  56. metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
  57. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  58. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  59. metadata/generated/schema/api/docStore/__init__.py +1 -1
  60. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  61. metadata/generated/schema/api/domains/__init__.py +1 -1
  62. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  63. metadata/generated/schema/api/domains/createDomain.py +1 -1
  64. metadata/generated/schema/api/feed/__init__.py +1 -1
  65. metadata/generated/schema/api/feed/closeTask.py +1 -1
  66. metadata/generated/schema/api/feed/createPost.py +1 -1
  67. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  68. metadata/generated/schema/api/feed/createThread.py +1 -1
  69. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  70. metadata/generated/schema/api/feed/threadCount.py +1 -1
  71. metadata/generated/schema/api/governance/__init__.py +1 -1
  72. metadata/generated/schema/api/governance/createWorkflowDefinition.py +1 -1
  73. metadata/generated/schema/api/governance/createWorkflowInstanceState.py +1 -1
  74. metadata/generated/schema/api/lineage/__init__.py +1 -1
  75. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  76. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  77. metadata/generated/schema/api/policies/__init__.py +1 -1
  78. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  79. metadata/generated/schema/api/services/__init__.py +1 -1
  80. metadata/generated/schema/api/services/createApiService.py +1 -1
  81. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  82. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  83. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  84. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  85. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  86. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  87. metadata/generated/schema/api/services/createSearchService.py +1 -1
  88. metadata/generated/schema/api/services/createStorageService.py +1 -1
  89. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  90. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  91. metadata/generated/schema/api/setOwner.py +1 -1
  92. metadata/generated/schema/api/teams/__init__.py +1 -1
  93. metadata/generated/schema/api/teams/createPersona.py +1 -1
  94. metadata/generated/schema/api/teams/createRole.py +1 -1
  95. metadata/generated/schema/api/teams/createTeam.py +1 -1
  96. metadata/generated/schema/api/teams/createUser.py +1 -1
  97. metadata/generated/schema/api/tests/__init__.py +1 -1
  98. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  99. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  100. metadata/generated/schema/api/tests/createTestCase.py +1 -1
  101. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  102. metadata/generated/schema/api/tests/createTestCaseResult.py +1 -1
  103. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  104. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  105. metadata/generated/schema/api/voteRequest.py +1 -1
  106. metadata/generated/schema/auth/__init__.py +1 -1
  107. metadata/generated/schema/auth/basicAuth.py +1 -1
  108. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  109. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  110. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  111. metadata/generated/schema/auth/emailRequest.py +1 -1
  112. metadata/generated/schema/auth/emailVerificationToken.py +2 -4
  113. metadata/generated/schema/auth/generateToken.py +1 -1
  114. metadata/generated/schema/auth/jwtAuth.py +1 -1
  115. metadata/generated/schema/auth/loginRequest.py +1 -1
  116. metadata/generated/schema/auth/logoutRequest.py +1 -1
  117. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  118. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  119. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  120. metadata/generated/schema/auth/refreshToken.py +1 -1
  121. metadata/generated/schema/auth/registrationRequest.py +1 -1
  122. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  123. metadata/generated/schema/auth/revokeToken.py +1 -1
  124. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  125. metadata/generated/schema/auth/ssoAuth.py +1 -1
  126. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  127. metadata/generated/schema/configuration/__init__.py +1 -1
  128. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  129. metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
  130. metadata/generated/schema/configuration/authConfig.py +1 -1
  131. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  132. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  133. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  134. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  135. metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
  136. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  137. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  138. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  139. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  140. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  141. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  142. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  143. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  144. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  145. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  146. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  147. metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
  148. metadata/generated/schema/configuration/lineageSettings.py +1 -1
  149. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  150. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  151. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  152. metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
  153. metadata/generated/schema/configuration/searchSettings.py +1 -1
  154. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  155. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  156. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  157. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  158. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  159. metadata/generated/schema/configuration/workflowSettings.py +1 -1
  160. metadata/generated/schema/dataInsight/__init__.py +1 -1
  161. metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
  162. metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
  163. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -1
  164. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
  165. metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
  166. metadata/generated/schema/dataInsight/custom/lineChart.py +1 -1
  167. metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
  168. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  169. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  170. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  171. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  172. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  173. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  174. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  175. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  176. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  177. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  178. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  179. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  180. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  181. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  182. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  183. metadata/generated/schema/email/__init__.py +1 -1
  184. metadata/generated/schema/email/emailRequest.py +1 -1
  185. metadata/generated/schema/email/emailTemplate.py +1 -1
  186. metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
  187. metadata/generated/schema/email/smtpSettings.py +1 -1
  188. metadata/generated/schema/email/templateValidationReponse.py +1 -1
  189. metadata/generated/schema/entity/__init__.py +1 -1
  190. metadata/generated/schema/entity/applications/__init__.py +1 -1
  191. metadata/generated/schema/entity/applications/app.py +1 -1
  192. metadata/generated/schema/entity/applications/appExtension.py +1 -1
  193. metadata/generated/schema/entity/applications/appRunRecord.py +3 -1
  194. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  195. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
  196. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  197. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  198. metadata/generated/schema/entity/applications/configuration/external/automator/addCustomProperties.py +1 -1
  199. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  200. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  201. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  202. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  203. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  204. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
  205. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  206. metadata/generated/schema/entity/applications/configuration/external/automator/removeCustomPropertiesAction.py +1 -1
  207. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +10 -2
  208. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  209. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  210. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +23 -3
  211. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  212. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
  213. metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
  214. metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +1 -1
  215. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  216. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  217. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  218. metadata/generated/schema/entity/applications/configuration/internal/dataRetentionConfiguration.py +1 -1
  219. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  220. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  221. metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
  222. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  223. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  224. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  225. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  226. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
  227. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  228. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  229. metadata/generated/schema/entity/automations/__init__.py +1 -1
  230. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  231. metadata/generated/schema/entity/automations/workflow.py +1 -1
  232. metadata/generated/schema/entity/bot.py +1 -1
  233. metadata/generated/schema/entity/classification/__init__.py +1 -1
  234. metadata/generated/schema/entity/classification/classification.py +1 -1
  235. metadata/generated/schema/entity/classification/tag.py +1 -1
  236. metadata/generated/schema/entity/data/__init__.py +1 -1
  237. metadata/generated/schema/entity/data/apiCollection.py +1 -1
  238. metadata/generated/schema/entity/data/apiEndpoint.py +1 -1
  239. metadata/generated/schema/entity/data/chart.py +1 -1
  240. metadata/generated/schema/entity/data/container.py +1 -1
  241. metadata/generated/schema/entity/data/dashboard.py +1 -1
  242. metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
  243. metadata/generated/schema/entity/data/database.py +1 -1
  244. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  245. metadata/generated/schema/entity/data/glossary.py +1 -1
  246. metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
  247. metadata/generated/schema/entity/data/metric.py +1 -1
  248. metadata/generated/schema/entity/data/mlmodel.py +1 -1
  249. metadata/generated/schema/entity/data/pipeline.py +1 -1
  250. metadata/generated/schema/entity/data/query.py +1 -1
  251. metadata/generated/schema/entity/data/report.py +1 -1
  252. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  253. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  254. metadata/generated/schema/entity/data/table.py +2 -1
  255. metadata/generated/schema/entity/data/topic.py +1 -1
  256. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  257. metadata/generated/schema/entity/docStore/document.py +1 -1
  258. metadata/generated/schema/entity/domains/__init__.py +1 -1
  259. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  260. metadata/generated/schema/entity/domains/domain.py +1 -1
  261. metadata/generated/schema/entity/events/__init__.py +1 -1
  262. metadata/generated/schema/entity/events/webhook.py +1 -1
  263. metadata/generated/schema/entity/feed/__init__.py +1 -1
  264. metadata/generated/schema/entity/feed/assets.py +1 -1
  265. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  266. metadata/generated/schema/entity/feed/description.py +1 -1
  267. metadata/generated/schema/entity/feed/domain.py +1 -1
  268. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  269. metadata/generated/schema/entity/feed/owner.py +1 -1
  270. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  271. metadata/generated/schema/entity/feed/tag.py +1 -1
  272. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  273. metadata/generated/schema/entity/feed/thread.py +1 -1
  274. metadata/generated/schema/entity/policies/__init__.py +1 -1
  275. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  276. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
  277. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  278. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  279. metadata/generated/schema/entity/policies/filters.py +1 -1
  280. metadata/generated/schema/entity/policies/policy.py +1 -1
  281. metadata/generated/schema/entity/services/__init__.py +1 -1
  282. metadata/generated/schema/entity/services/apiService.py +1 -1
  283. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  284. metadata/generated/schema/entity/services/connections/api/__init__.py +1 -1
  285. metadata/generated/schema/entity/services/connections/api/restConnection.py +1 -1
  286. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  287. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  288. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  289. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  290. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  291. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  292. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  293. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  294. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  295. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  296. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  297. metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +1 -1
  298. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  299. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  300. metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
  301. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  302. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  303. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  304. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  305. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  306. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  307. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  308. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  309. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  310. metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +1 -1
  311. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  312. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  313. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  314. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  315. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  316. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
  317. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  318. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  319. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  320. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  321. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  322. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  323. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  324. metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
  325. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  326. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  327. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +9 -1
  328. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  329. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  330. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  331. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  332. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  333. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  334. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  335. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  336. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  337. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  338. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  339. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  340. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  341. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  342. metadata/generated/schema/entity/services/connections/database/exasolConnection.py +1 -1
  343. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  344. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  345. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  346. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  347. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  348. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  349. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  350. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  351. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  352. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  353. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  354. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  355. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  356. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  357. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  358. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
  359. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  360. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  361. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  362. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  363. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  364. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  365. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  366. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  367. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  368. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  369. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  370. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  371. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  372. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +9 -1
  373. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  374. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  375. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
  376. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  377. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  378. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  379. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  380. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  382. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  383. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  384. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  385. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  386. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  387. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  388. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  389. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  390. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  391. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  392. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  393. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  394. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  395. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  396. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  397. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  398. metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
  399. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  400. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  401. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  402. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  403. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  404. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  405. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  406. metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +1 -1
  407. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +1 -1
  408. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  409. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  410. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  411. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  412. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  413. metadata/generated/schema/entity/services/connections/pipeline/matillion/__init__.py +3 -0
  414. metadata/generated/schema/entity/services/connections/pipeline/matillion/matillionETL.py +39 -0
  415. metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +4 -25
  416. metadata/generated/schema/entity/services/connections/pipeline/nifi/__init__.py +3 -0
  417. metadata/generated/schema/entity/services/connections/pipeline/nifi/basicAuth.py +40 -0
  418. metadata/generated/schema/entity/services/connections/pipeline/nifi/clientCertificateAuth.py +38 -0
  419. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +3 -2
  420. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  421. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  422. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  423. metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +1 -1
  424. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  425. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  426. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  427. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  428. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  429. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  430. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  431. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  432. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  433. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  434. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  435. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  436. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  437. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  438. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  439. metadata/generated/schema/entity/services/dashboardService.py +1 -1
  440. metadata/generated/schema/entity/services/databaseService.py +1 -1
  441. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  442. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +7 -1
  443. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  444. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  445. metadata/generated/schema/entity/services/messagingService.py +1 -1
  446. metadata/generated/schema/entity/services/metadataService.py +1 -1
  447. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  448. metadata/generated/schema/entity/services/pipelineService.py +1 -1
  449. metadata/generated/schema/entity/services/searchService.py +1 -1
  450. metadata/generated/schema/entity/services/serviceType.py +1 -1
  451. metadata/generated/schema/entity/services/storageService.py +1 -1
  452. metadata/generated/schema/entity/teams/__init__.py +1 -1
  453. metadata/generated/schema/entity/teams/persona.py +1 -1
  454. metadata/generated/schema/entity/teams/role.py +1 -1
  455. metadata/generated/schema/entity/teams/team.py +1 -1
  456. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  457. metadata/generated/schema/entity/teams/user.py +1 -1
  458. metadata/generated/schema/entity/type.py +1 -1
  459. metadata/generated/schema/entity/utils/__init__.py +1 -1
  460. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  461. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  462. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  463. metadata/generated/schema/events/__init__.py +1 -1
  464. metadata/generated/schema/events/alertMetrics.py +1 -1
  465. metadata/generated/schema/events/api/__init__.py +1 -1
  466. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  467. metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +1 -1
  468. metadata/generated/schema/events/api/eventsRecord.py +1 -1
  469. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
  470. metadata/generated/schema/events/api/typedEvent.py +1 -1
  471. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  472. metadata/generated/schema/events/eventFilterRule.py +1 -1
  473. metadata/generated/schema/events/eventSubscription.py +1 -1
  474. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  475. metadata/generated/schema/events/failedEvent.py +1 -1
  476. metadata/generated/schema/events/failedEventResponse.py +1 -1
  477. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  478. metadata/generated/schema/events/statusContext.py +1 -1
  479. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  480. metadata/generated/schema/events/subscriptionStatus.py +1 -1
  481. metadata/generated/schema/events/testDestinationStatus.py +1 -1
  482. metadata/generated/schema/governance/workflows/__init__.py +1 -1
  483. metadata/generated/schema/governance/workflows/elements/__init__.py +1 -1
  484. metadata/generated/schema/governance/workflows/elements/edge.py +1 -1
  485. metadata/generated/schema/governance/workflows/elements/nodeSubType.py +1 -1
  486. metadata/generated/schema/governance/workflows/elements/nodeType.py +1 -1
  487. metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +1 -1
  488. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +1 -1
  489. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +1 -1
  490. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
  491. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +1 -1
  492. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
  493. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
  494. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
  495. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
  496. metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
  497. metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +1 -1
  498. metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
  499. metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +1 -1
  500. metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +1 -1
  501. metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
  502. metadata/generated/schema/governance/workflows/workflowInstance.py +1 -1
  503. metadata/generated/schema/governance/workflows/workflowInstanceState.py +1 -1
  504. metadata/generated/schema/jobs/__init__.py +1 -1
  505. metadata/generated/schema/jobs/backgroundJob.py +1 -1
  506. metadata/generated/schema/jobs/enumCleanupArgs.py +1 -1
  507. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  508. metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +1 -1
  509. metadata/generated/schema/metadataIngestion/application.py +1 -1
  510. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  511. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  512. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  513. metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +1 -1
  514. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  515. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  516. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +9 -1
  517. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  518. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  519. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  520. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  521. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  522. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  523. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  524. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  525. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  526. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  527. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  528. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  529. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  530. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  531. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +2 -2
  532. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  533. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  534. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  535. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  536. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  537. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  538. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  539. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  540. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  541. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  542. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  543. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  544. metadata/generated/schema/monitoring/__init__.py +1 -1
  545. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  546. metadata/generated/schema/security/__init__.py +1 -1
  547. metadata/generated/schema/security/client/__init__.py +1 -1
  548. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  549. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  550. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  551. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  552. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  553. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  554. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  555. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  556. metadata/generated/schema/security/credentials/__init__.py +1 -1
  557. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  558. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  559. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  560. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  561. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  562. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  563. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  564. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  565. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  566. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  567. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  568. metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
  569. metadata/generated/schema/security/sasl/__init__.py +1 -1
  570. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  571. metadata/generated/schema/security/secrets/__init__.py +1 -1
  572. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  573. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  574. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  575. metadata/generated/schema/security/securityConfiguration.py +1 -1
  576. metadata/generated/schema/security/ssl/__init__.py +1 -1
  577. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  578. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  579. metadata/generated/schema/settings/__init__.py +1 -1
  580. metadata/generated/schema/settings/settings.py +1 -1
  581. metadata/generated/schema/system/__init__.py +1 -1
  582. metadata/generated/schema/system/entityError.py +1 -1
  583. metadata/generated/schema/system/eventPublisherJob.py +1 -1
  584. metadata/generated/schema/system/indexingError.py +1 -1
  585. metadata/generated/schema/system/limitsResponse.py +1 -1
  586. metadata/generated/schema/system/ui/__init__.py +1 -1
  587. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  588. metadata/generated/schema/system/ui/page.py +1 -1
  589. metadata/generated/schema/system/validationResponse.py +1 -1
  590. metadata/generated/schema/tests/__init__.py +1 -1
  591. metadata/generated/schema/tests/assigned.py +1 -1
  592. metadata/generated/schema/tests/basic.py +20 -20
  593. metadata/generated/schema/tests/customMetric.py +1 -1
  594. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  595. metadata/generated/schema/tests/resolved.py +1 -1
  596. metadata/generated/schema/tests/testCase.py +1 -1
  597. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  598. metadata/generated/schema/tests/testDefinition.py +1 -1
  599. metadata/generated/schema/tests/testSuite.py +1 -1
  600. metadata/generated/schema/type/__init__.py +1 -1
  601. metadata/generated/schema/type/apiSchema.py +1 -1
  602. metadata/generated/schema/type/assetCertification.py +1 -1
  603. metadata/generated/schema/type/auditLog.py +1 -1
  604. metadata/generated/schema/type/basic.py +8 -1
  605. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  606. metadata/generated/schema/type/changeEvent.py +1 -1
  607. metadata/generated/schema/type/changeEventType.py +1 -1
  608. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  609. metadata/generated/schema/type/csvDocumentation.py +1 -1
  610. metadata/generated/schema/type/csvErrorType.py +1 -1
  611. metadata/generated/schema/type/csvFile.py +1 -1
  612. metadata/generated/schema/type/csvImportResult.py +1 -1
  613. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  614. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  615. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  616. metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
  617. metadata/generated/schema/type/customProperty.py +1 -1
  618. metadata/generated/schema/type/dailyCount.py +1 -1
  619. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  620. metadata/generated/schema/type/entityHierarchy.py +1 -1
  621. metadata/generated/schema/type/entityHistory.py +1 -1
  622. metadata/generated/schema/type/entityLineage.py +1 -1
  623. metadata/generated/schema/type/entityReference.py +1 -1
  624. metadata/generated/schema/type/entityReferenceList.py +1 -1
  625. metadata/generated/schema/type/entityRelationship.py +1 -1
  626. metadata/generated/schema/type/entityUsage.py +1 -1
  627. metadata/generated/schema/type/filterPattern.py +1 -1
  628. metadata/generated/schema/type/function.py +1 -1
  629. metadata/generated/schema/type/include.py +1 -1
  630. metadata/generated/schema/type/jdbcConnection.py +1 -1
  631. metadata/generated/schema/type/lifeCycle.py +1 -1
  632. metadata/generated/schema/type/paging.py +1 -1
  633. metadata/generated/schema/type/profile.py +1 -1
  634. metadata/generated/schema/type/queryParserData.py +1 -1
  635. metadata/generated/schema/type/reaction.py +1 -1
  636. metadata/generated/schema/type/schedule.py +1 -1
  637. metadata/generated/schema/type/schema.py +1 -1
  638. metadata/generated/schema/type/tableQuery.py +1 -1
  639. metadata/generated/schema/type/tableUsageCount.py +1 -1
  640. metadata/generated/schema/type/tagLabel.py +1 -1
  641. metadata/generated/schema/type/usageDetails.py +1 -1
  642. metadata/generated/schema/type/usageRequest.py +1 -1
  643. metadata/generated/schema/type/votes.py +1 -1
  644. metadata/ingestion/lineage/masker.py +1 -1
  645. metadata/ingestion/lineage/models.py +1 -2
  646. metadata/ingestion/lineage/parser.py +2 -2
  647. metadata/ingestion/lineage/sql_lineage.py +111 -5
  648. metadata/ingestion/ometa/mixins/query_mixin.py +2 -0
  649. metadata/ingestion/ometa/routes.py +4 -0
  650. metadata/ingestion/source/api/rest/metadata.py +33 -24
  651. metadata/ingestion/source/dashboard/looker/metadata.py +115 -13
  652. metadata/ingestion/source/dashboard/powerbi/client.py +150 -35
  653. metadata/ingestion/source/database/bigquery/metadata.py +67 -2
  654. metadata/ingestion/source/database/databricks/connection.py +8 -3
  655. metadata/ingestion/source/database/databricks/lineage.py +12 -24
  656. metadata/ingestion/source/database/databricks/queries.py +24 -0
  657. metadata/ingestion/source/database/databricks/query_parser.py +11 -15
  658. metadata/ingestion/source/database/databricks/usage.py +7 -37
  659. metadata/ingestion/source/database/db2/connection.py +1 -1
  660. metadata/ingestion/source/database/db2/service_spec.py +1 -4
  661. metadata/ingestion/source/database/dbt/metadata.py +3 -1
  662. metadata/ingestion/source/database/druid/service_spec.py +1 -5
  663. metadata/ingestion/source/database/greenplum/service_spec.py +1 -5
  664. metadata/ingestion/source/database/hive/service_spec.py +1 -5
  665. metadata/ingestion/source/database/impala/service_spec.py +1 -5
  666. metadata/ingestion/source/database/lineage_source.py +12 -1
  667. metadata/ingestion/source/database/mariadb/service_spec.py +1 -9
  668. metadata/ingestion/source/database/pinotdb/service_spec.py +1 -5
  669. metadata/ingestion/source/database/postgres/usage.py +15 -0
  670. metadata/ingestion/source/database/query_parser_source.py +1 -0
  671. metadata/ingestion/source/database/redshift/metadata.py +31 -11
  672. metadata/ingestion/source/database/redshift/queries.py +5 -0
  673. metadata/ingestion/source/database/singlestore/service_spec.py +1 -6
  674. metadata/ingestion/source/database/snowflake/connection.py +10 -2
  675. metadata/ingestion/source/database/snowflake/lineage.py +3 -0
  676. metadata/ingestion/source/database/snowflake/metadata.py +3 -0
  677. metadata/ingestion/source/database/snowflake/queries.py +8 -8
  678. metadata/ingestion/source/database/snowflake/query_parser.py +1 -0
  679. metadata/ingestion/source/database/sqlite/service_spec.py +1 -5
  680. metadata/ingestion/source/database/teradata/service_spec.py +1 -5
  681. metadata/ingestion/source/database/trino/connection.py +13 -0
  682. metadata/ingestion/source/database/unitycatalog/lineage.py +56 -32
  683. metadata/ingestion/source/database/unitycatalog/query_parser.py +7 -0
  684. metadata/ingestion/source/database/unitycatalog/service_spec.py +4 -0
  685. metadata/ingestion/source/database/unitycatalog/usage.py +41 -2
  686. metadata/ingestion/source/database/usage_source.py +1 -1
  687. metadata/ingestion/source/pipeline/nifi/connection.py +4 -2
  688. metadata/profiler/interface/sqlalchemy/unity_catalog/sampler_interface.py +29 -0
  689. metadata/profiler/source/fetcher/config.py +4 -0
  690. metadata/profiler/source/fetcher/fetcher_strategy.py +19 -2
  691. metadata/sampler/sampler_interface.py +0 -3
  692. metadata/sampler/sqlalchemy/bigquery/sampler.py +1 -2
  693. metadata/sampler/sqlalchemy/sampler.py +22 -9
  694. {openmetadata_ingestion-1.6.3.2.dev0.dist-info → openmetadata_ingestion-1.6.4.0.dist-info}/METADATA +378 -359
  695. {openmetadata_ingestion-1.6.3.2.dev0.dist-info → openmetadata_ingestion-1.6.4.0.dist-info}/RECORD +699 -693
  696. {openmetadata_ingestion-1.6.3.2.dev0.dist-info → openmetadata_ingestion-1.6.4.0.dist-info}/LICENSE +0 -0
  697. {openmetadata_ingestion-1.6.3.2.dev0.dist-info → openmetadata_ingestion-1.6.4.0.dist-info}/WHEEL +0 -0
  698. {openmetadata_ingestion-1.6.3.2.dev0.dist-info → openmetadata_ingestion-1.6.4.0.dist-info}/entry_points.txt +0 -0
  699. {openmetadata_ingestion-1.6.3.2.dev0.dist-info → openmetadata_ingestion-1.6.4.0.dist-info}/top_level.txt +0 -0
@@ -92,6 +92,7 @@ from metadata.generated.schema.api.services.createStorageService import (
92
92
  from metadata.generated.schema.api.services.ingestionPipelines.createIngestionPipeline import (
93
93
  CreateIngestionPipelineRequest,
94
94
  )
95
+ from metadata.generated.schema.api.teams.createPersona import CreatePersonaRequest
95
96
  from metadata.generated.schema.api.teams.createRole import CreateRoleRequest
96
97
  from metadata.generated.schema.api.teams.createTeam import CreateTeamRequest
97
98
  from metadata.generated.schema.api.teams.createUser import CreateUserRequest
@@ -157,6 +158,7 @@ from metadata.generated.schema.entity.services.mlmodelService import MlModelServ
157
158
  from metadata.generated.schema.entity.services.pipelineService import PipelineService
158
159
  from metadata.generated.schema.entity.services.searchService import SearchService
159
160
  from metadata.generated.schema.entity.services.storageService import StorageService
161
+ from metadata.generated.schema.entity.teams.persona import Persona
160
162
  from metadata.generated.schema.entity.teams.role import Role
161
163
  from metadata.generated.schema.entity.teams.team import Team
162
164
  from metadata.generated.schema.entity.teams.user import AuthenticationMechanism, User
@@ -217,6 +219,8 @@ ROUTES = {
217
219
  CreateTeamRequest.__name__: "/teams",
218
220
  User.__name__: "/users",
219
221
  CreateUserRequest.__name__: "/users",
222
+ Persona.__name__: "/personas",
223
+ CreatePersonaRequest.__name__: "/personas",
220
224
  AuthenticationMechanism.__name__: "/users/auth-mechanism",
221
225
  Bot.__name__: "/bots",
222
226
  CreateBot.__name__: "/bots",
@@ -171,7 +171,7 @@ class RestSource(ApiServiceSource):
171
171
  break
172
172
  return filtered_paths
173
173
  except Exception as err:
174
- logger.info(
174
+ logger.warning(
175
175
  f"Error while filtering endpoints for collection {collection.name.root}"
176
176
  )
177
177
  return None
@@ -184,7 +184,7 @@ class RestSource(ApiServiceSource):
184
184
  endpoint.name = f"{path} - {method_type}"
185
185
  return endpoint
186
186
  except Exception as err:
187
- logger.info(f"Error while parsing endpoint data: {err}")
187
+ logger.warning(f"Error while parsing endpoint data: {err}")
188
188
  return None
189
189
 
190
190
  def _generate_collection_url(self, collection_name: str) -> Optional[AnyUrl]:
@@ -195,7 +195,7 @@ class RestSource(ApiServiceSource):
195
195
  f"{self.config.serviceConnection.root.config.openAPISchemaURL}#tag/{collection_name}"
196
196
  )
197
197
  except Exception as err:
198
- logger.info(f"Error while generating collection url: {err}")
198
+ logger.warning(f"Error while generating collection url: {err}")
199
199
  return None
200
200
 
201
201
  def _generate_endpoint_url(self, endpoint_name: str) -> AnyUrl:
@@ -203,15 +203,14 @@ class RestSource(ApiServiceSource):
203
203
  base_url = self.config.serviceConnection.root.config.openAPISchemaURL
204
204
  if endpoint_name:
205
205
  return AnyUrl(f"{base_url}#operation/{endpoint_name}")
206
- else:
207
- return AnyUrl(base_url)
206
+ return AnyUrl(base_url)
208
207
 
209
208
  def _get_api_request_method(self, method_type: str) -> Optional[str]:
210
209
  """fetch endpoint request method"""
211
210
  try:
212
211
  return ApiRequestMethod[method_type.upper()]
213
212
  except KeyError as err:
214
- logger.info(f"Keyerror while fetching request method: {err}")
213
+ logger.warning(f"Keyerror while fetching request method: {err}")
215
214
  return None
216
215
 
217
216
  def _get_request_schema(self, info: dict) -> Optional[APISchema]:
@@ -227,9 +226,9 @@ class RestSource(ApiServiceSource):
227
226
  if not schema_ref:
228
227
  logger.debug("No request schema found for the endpoint")
229
228
  return None
230
- return self._process_schema(schema_ref)
229
+ return APISchema(schemaFields=self.process_schema_fields(schema_ref))
231
230
  except Exception as err:
232
- logger.info(f"Error while parsing request schema: {err}")
231
+ logger.warning(f"Error while parsing request schema: {err}")
233
232
  return None
234
233
 
235
234
  def _get_response_schema(self, info: dict) -> Optional[APISchema]:
@@ -246,33 +245,43 @@ class RestSource(ApiServiceSource):
246
245
  if not schema_ref:
247
246
  logger.debug("No response schema found for the endpoint")
248
247
  return None
249
- return self._process_schema(schema_ref)
248
+ return APISchema(schemaFields=self.process_schema_fields(schema_ref))
250
249
  except Exception as err:
251
- logger.info(f"Error while parsing response schema: {err}")
250
+ logger.warning(f"Error while parsing response schema: {err}")
252
251
  return None
253
252
 
254
- def _process_schema(self, schema_ref: str) -> Optional[List[APISchema]]:
255
- """process schema"""
253
+ def process_schema_fields(self, schema_ref: str) -> Optional[List[FieldModel]]:
256
254
  try:
257
- schema_ref = schema_ref.split("/")[-1]
255
+ schema_name = schema_ref.split("/")[-1]
258
256
  schema_fields = (
259
- self.json_response.get("components").get("schemas").get(schema_ref)
257
+ self.json_response.get("components").get("schemas").get(schema_name)
260
258
  )
261
259
 
262
260
  fetched_fields = []
263
261
  for key, val in schema_fields.get("properties", {}).items():
264
262
  dtype = val.get("type")
265
- if not dtype:
266
- continue
267
- fetched_fields.append(
268
- FieldModel(
269
- name=key,
270
- dataType=DataTypeTopic[dtype.upper()]
263
+ if dtype:
264
+ parsed_dtype = (
265
+ DataTypeTopic[dtype.upper()]
271
266
  if dtype.upper() in DataTypeTopic.__members__
272
- else DataTypeTopic.UNKNOWN,
267
+ else DataTypeTopic.UNKNOWN
273
268
  )
274
- )
275
- return APISchema(schemaFields=fetched_fields)
269
+ fetched_fields.append(FieldModel(name=key, dataType=parsed_dtype))
270
+ else:
271
+ # If type of field is not defined then check for sub-schema
272
+ # Check if it's `object` type field
273
+ # check infinite recrusrion by comparing with parent(schema_ref)
274
+ object_children = None
275
+ if val.get("$ref") and val.get("$ref") != schema_ref:
276
+ object_children = self.process_schema_fields(val.get("$ref"))
277
+ fetched_fields.append(
278
+ FieldModel(
279
+ name=key,
280
+ dataType=DataTypeTopic.UNKNOWN,
281
+ children=object_children,
282
+ )
283
+ )
284
+ return fetched_fields
276
285
  except Exception as err:
277
- logger.info(f"Error while processing request schema: {err}")
286
+ logger.warning(f"Error while processing schema fields: {err}")
278
287
  return None
@@ -21,6 +21,7 @@ Notes:
21
21
  """
22
22
  import copy
23
23
  import os
24
+ import re
24
25
  import traceback
25
26
  from datetime import datetime
26
27
  from pathlib import Path
@@ -39,6 +40,7 @@ from typing import (
39
40
 
40
41
  import giturlparse
41
42
  import lkml
43
+ import networkx as nx
42
44
  from liquid import Template
43
45
  from looker_sdk.sdk.api40.methods import Looker40SDK
44
46
  from looker_sdk.sdk.api40.models import Dashboard as LookerDashboard
@@ -134,6 +136,10 @@ logger = ingestion_logger()
134
136
  LIST_DASHBOARD_FIELDS = ["id", "title"]
135
137
  IMPORTED_PROJECTS_DIR = "imported_projects"
136
138
 
139
+ # we need to find the derived references in the SQL query using regex
140
+ # https://cloud.google.com/looker/docs/derived-tables#referencing_derived_tables_in_other_derived_tables
141
+ DERIVED_REFERENCES = r"\${([\w\s\d_.]+)\.SQL_TABLE_NAME}"
142
+
137
143
  # Here we can update the fields to get further information, such as:
138
144
  # created_at, updated_at, last_updater_id, deleted_at, deleter_id, favorite_count, last_viewed_at
139
145
  GET_DASHBOARD_FIELDS = [
@@ -165,6 +171,13 @@ def build_datamodel_name(model_name: str, explore_name: str) -> str:
165
171
  return clean_dashboard_name(model_name + "_" + explore_name)
166
172
 
167
173
 
174
+ def find_derived_references(sql_query: str) -> List[str]:
175
+ if sql_query is None:
176
+ return []
177
+ matches = re.findall(DERIVED_REFERENCES, sql_query)
178
+ return matches
179
+
180
+
168
181
  class LookerSource(DashboardServiceSource):
169
182
  """
170
183
  Looker Source Class.
@@ -172,6 +185,8 @@ class LookerSource(DashboardServiceSource):
172
185
  Its client uses Looker 40 from the SDK: client = looker_sdk.init40()
173
186
  """
174
187
 
188
+ # pylint: disable=too-many-instance-attributes
189
+
175
190
  config: WorkflowSource
176
191
  metadata: OpenMetadata
177
192
  client: Looker40SDK
@@ -192,6 +207,10 @@ class LookerSource(DashboardServiceSource):
192
207
  self._main__lookml_manifest: Optional[LookMLManifest] = None
193
208
  self._view_data_model: Optional[DashboardDataModel] = None
194
209
 
210
+ self._parsed_views: Optional[Dict[str, str]] = {}
211
+ self._unparsed_views: Optional[Dict[str, str]] = {}
212
+ self._derived_dependencies = nx.DiGraph()
213
+
195
214
  self._added_lineage: Optional[Dict] = {}
196
215
 
197
216
  @classmethod
@@ -557,6 +576,68 @@ class LookerSource(DashboardServiceSource):
557
576
  )
558
577
  )
559
578
 
579
+ def replace_derived_references(self, sql_query):
580
+ """
581
+ Replace all derived references with the parsed views sql query
582
+ will replace the derived references in the SQL query using regex
583
+ for e.g. It will replace ${view_name.SQL_TABLE_NAME} with the parsed view query for view_name
584
+ https://cloud.google.com/looker/docs/derived-tables#referencing_derived_tables_in_other_derived_tables
585
+ """
586
+ try:
587
+ sql_query = re.sub(
588
+ DERIVED_REFERENCES,
589
+ # from `${view_name.SQL_TABLE_NAME}` we want the `view_name`.
590
+ # match.group(1) will give us the `view_name`
591
+ lambda match: f"({self._parsed_views.get(match.group(1), match.group(0))})",
592
+ sql_query,
593
+ )
594
+ except Exception as e:
595
+ logger.warning(
596
+ f"Something went wrong while replacing derived view references: {e}"
597
+ )
598
+ return sql_query
599
+
600
+ def build_lineage_for_unparsed_views(self) -> Iterable[Either[AddLineageRequest]]:
601
+ """
602
+ build lineage by parsing the unparsed views containing derived references
603
+ """
604
+ try:
605
+ # Doing a reversed topological sort to process the views in the right order
606
+ for view_name in reversed(
607
+ list(nx.topological_sort(self._derived_dependencies))
608
+ ):
609
+ if view_name in self._parsed_views:
610
+ # Skip if already processed
611
+ continue
612
+ sql_query = self.replace_derived_references(
613
+ self._unparsed_views[view_name]
614
+ )
615
+ if view_references := find_derived_references(sql_query):
616
+ # There are still derived references in the view query
617
+ logger.debug(
618
+ f"Views {view_references} not found for {view_name}. Skipping."
619
+ )
620
+ continue
621
+ self._parsed_views[view_name] = sql_query
622
+ del self._unparsed_views[view_name]
623
+ yield from self._build_lineage_for_view(view_name, sql_query)
624
+
625
+ except Exception as err:
626
+ yield Either(
627
+ left=StackTraceError(
628
+ name="parse_unparsed_views",
629
+ error=f"Error parsing unparsed views: {err}",
630
+ stackTrace=traceback.format_exc(),
631
+ )
632
+ )
633
+
634
+ def _add_dependency_edge(self, view_name: str, view_references: List[str]):
635
+ """
636
+ Add a dependency edge between the view and the derived reference
637
+ """
638
+ for dependent_view_name in view_references:
639
+ self._derived_dependencies.add_edge(view_name, dependent_view_name)
640
+
560
641
  def add_view_lineage(
561
642
  self, view: LookMlView, explore: LookmlModelExplore
562
643
  ) -> Iterable[Either[AddLineageRequest]]:
@@ -589,6 +670,7 @@ class LookerSource(DashboardServiceSource):
589
670
  for db_service_name in db_service_names or []:
590
671
  dialect = self._get_db_dialect(db_service_name)
591
672
  source_table_name = self._clean_table_name(sql_table_name, dialect)
673
+ self._parsed_views[view.name] = source_table_name
592
674
 
593
675
  # View to the source is only there if we are informing the dbServiceNames
594
676
  yield self.build_lineage_request(
@@ -601,20 +683,19 @@ class LookerSource(DashboardServiceSource):
601
683
  sql_query = view.derived_table.sql
602
684
  if not sql_query:
603
685
  return
686
+ if find_derived_references(sql_query):
687
+ sql_query = self.replace_derived_references(sql_query)
688
+ # If we still have derived references, we cannot process the view
689
+ if view_references := find_derived_references(sql_query):
690
+ self._add_dependency_edge(view.name, view_references)
691
+ logger.warning(
692
+ f"Not all references are replaced for view [{view.name}]. Parsing it later."
693
+ )
694
+ return
604
695
  logger.debug(f"Processing view [{view.name}] with SQL: \n[{sql_query}]")
605
- for db_service_name in db_service_names or []:
606
- lineage_parser = LineageParser(
607
- sql_query,
608
- self._get_db_dialect(db_service_name),
609
- timeout_seconds=30,
610
- )
611
- if lineage_parser.source_tables:
612
- for from_table_name in lineage_parser.source_tables:
613
- yield self.build_lineage_request(
614
- source=str(from_table_name),
615
- db_service_name=db_service_name,
616
- to_entity=self._view_data_model,
617
- )
696
+ yield from self._build_lineage_for_view(view.name, sql_query)
697
+ if self._unparsed_views:
698
+ self.build_lineage_for_unparsed_views()
618
699
 
619
700
  except Exception as err:
620
701
  yield Either(
@@ -625,6 +706,27 @@ class LookerSource(DashboardServiceSource):
625
706
  )
626
707
  )
627
708
 
709
+ def _build_lineage_for_view(
710
+ self, view_name: str, sql_query: str
711
+ ) -> Iterable[Either[AddLineageRequest]]:
712
+ """
713
+ Parse the SQL query and build lineage for the view.
714
+ """
715
+ for db_service_name in self.get_db_service_names() or []:
716
+ lineage_parser = LineageParser(
717
+ sql_query,
718
+ self._get_db_dialect(db_service_name),
719
+ timeout_seconds=30,
720
+ )
721
+ if lineage_parser.source_tables:
722
+ self._parsed_views[view_name] = sql_query
723
+ for from_table_name in lineage_parser.source_tables:
724
+ yield self.build_lineage_request(
725
+ source=str(from_table_name),
726
+ db_service_name=db_service_name,
727
+ to_entity=self._view_data_model,
728
+ )
729
+
628
730
  def _get_db_dialect(self, db_service_name) -> Dialect:
629
731
  db_service = self.metadata.get_by_name(DatabaseService, db_service_name)
630
732
  return ConnectionTypeDialectMapper.dialect_of(
@@ -47,7 +47,10 @@ from metadata.utils.logger import utils_logger
47
47
 
48
48
  logger = utils_logger()
49
49
 
50
-
50
+ GETGROUPS_DEFAULT_PARAMS = {"$top": "1", "$skip": "0"}
51
+ API_RESPONSE_MESSAGE_KEY = "message"
52
+ AUTH_TOKEN_MAX_RETRIES = 5
53
+ AUTH_TOKEN_RETRY_WAIT = 120
51
54
  # Similar inner methods with mode client. That's fine.
52
55
  # pylint: disable=duplicate-code
53
56
  class PowerBiApiClient:
@@ -59,6 +62,9 @@ class PowerBiApiClient:
59
62
 
60
63
  def __init__(self, config: PowerBIConnection):
61
64
  self.config = config
65
+ self.pagination_entity_per_page = min(
66
+ 100, self.config.pagination_entity_per_page
67
+ )
62
68
  self.msal_client = msal.ConfidentialClientApplication(
63
69
  client_id=self.config.clientId,
64
70
  client_credential=self.config.clientSecret.get_secret_value(),
@@ -82,42 +88,84 @@ class PowerBiApiClient:
82
88
  """
83
89
  logger.info("Generating PowerBi access token")
84
90
 
85
- response_data = self.msal_client.acquire_token_silent(
86
- scopes=self.config.scope, account=None
87
- )
88
-
91
+ response_data = self.get_auth_token_from_cache()
89
92
  if not response_data:
90
93
  logger.info("Token does not exist in the cache. Getting a new token.")
91
- response_data = self.msal_client.acquire_token_for_client(
92
- scopes=self.config.scope
93
- )
94
+ response_data = self.generate_new_auth_token()
95
+ response_data = response_data or {}
94
96
  auth_response = PowerBiToken(**response_data)
95
97
  if not auth_response.access_token:
96
98
  raise InvalidSourceException(
97
- "Failed to generate the PowerBi access token. Please check provided config"
99
+ f"Failed to generate the PowerBi access token. Please check provided config {response_data}"
98
100
  )
99
101
 
100
102
  logger.info("PowerBi Access Token generated successfully")
101
103
  return auth_response.access_token, auth_response.expires_in
102
104
 
105
+ def generate_new_auth_token(self) -> Optional[dict]:
106
+ """generate new auth token"""
107
+ retry = AUTH_TOKEN_MAX_RETRIES
108
+ while retry:
109
+ try:
110
+ response_data = self.msal_client.acquire_token_for_client(
111
+ scopes=self.config.scope
112
+ )
113
+ return response_data
114
+ except Exception as exc:
115
+ logger.debug(traceback.format_exc())
116
+ logger.warning(f"Error generating new auth token: {exc}")
117
+ # wait for time and retry
118
+ retry -= 1
119
+ if retry:
120
+ logger.warning(
121
+ f"Error generating new token: {exc}, "
122
+ f"sleep {AUTH_TOKEN_RETRY_WAIT} seconds retrying {retry} more times.."
123
+ )
124
+ sleep(AUTH_TOKEN_RETRY_WAIT)
125
+ else:
126
+ logger.warning(
127
+ "Could not generate new token after maximum retries, "
128
+ "Please check provided configs"
129
+ )
130
+ return None
131
+
132
+ def get_auth_token_from_cache(self) -> Optional[dict]:
133
+ """fetch auth token from cache"""
134
+ retry = AUTH_TOKEN_MAX_RETRIES
135
+ while retry:
136
+ try:
137
+ response_data = self.msal_client.acquire_token_silent(
138
+ scopes=self.config.scope, account=None
139
+ )
140
+ return response_data
141
+ except Exception as exc:
142
+ logger.debug(traceback.format_exc())
143
+ logger.warning(f"Error getting token from cache: {exc}")
144
+ retry -= 1
145
+ if retry:
146
+ logger.warning(
147
+ f"Error getting token from cache: {exc}, "
148
+ f"sleep {AUTH_TOKEN_RETRY_WAIT} seconds retrying {retry} more times.."
149
+ )
150
+ sleep(AUTH_TOKEN_RETRY_WAIT)
151
+ else:
152
+ logger.warning(
153
+ "Could not get token from cache after maximum retries, "
154
+ "Please check provided configs"
155
+ )
156
+ return None
157
+
103
158
  def fetch_dashboards(self) -> Optional[List[PowerBIDashboard]]:
104
159
  """Get dashboards method
105
160
  Returns:
106
161
  List[PowerBIDashboard]
107
162
  """
108
- try:
109
- if self.config.useAdminApis:
110
- response_data = self.client.get("/myorg/admin/dashboards")
111
- response = DashboardsResponse(**response_data)
112
- return response.value
113
- group = self.fetch_all_workspaces()[0]
114
- return self.fetch_all_org_dashboards(group_id=group.id)
115
-
116
- except Exception as exc: # pylint: disable=broad-except
117
- logger.debug(traceback.format_exc())
118
- logger.warning(f"Error fetching dashboards: {exc}")
119
-
120
- return None
163
+ if self.config.useAdminApis:
164
+ response_data = self.client.get("/myorg/admin/dashboards")
165
+ response = DashboardsResponse(**response_data)
166
+ return response.value
167
+ group = self.fetch_all_workspaces()[0]
168
+ return self.fetch_all_org_dashboards(group_id=group.id)
121
169
 
122
170
  def fetch_all_org_dashboards(
123
171
  self, group_id: str
@@ -205,6 +253,7 @@ class PowerBiApiClient:
205
253
 
206
254
  return None
207
255
 
256
+ # pylint: disable=too-many-branches,too-many-statements
208
257
  def fetch_all_workspaces(self) -> Optional[List[Group]]:
209
258
  """Method to fetch all powerbi workspace details
210
259
  Returns:
@@ -213,28 +262,94 @@ class PowerBiApiClient:
213
262
  try:
214
263
  admin = "admin/" if self.config.useAdminApis else ""
215
264
  api_url = f"/myorg/{admin}groups"
216
- entities_per_page = self.config.pagination_entity_per_page
217
- params_data = {"$top": "1"}
218
- response_data = self.client.get(api_url, data=params_data)
219
- response = GroupsResponse(**response_data)
220
- count = response.odata_count
265
+ entities_per_page = self.pagination_entity_per_page
266
+ failed_indexes = []
267
+ params_data = GETGROUPS_DEFAULT_PARAMS
268
+ response = self.client.get(api_url, data=params_data)
269
+ if (
270
+ not response
271
+ or API_RESPONSE_MESSAGE_KEY in response
272
+ or len(response) != len(GroupsResponse.__annotations__)
273
+ ):
274
+ logger.warning("Error fetching workspaces between results: (0, 1)")
275
+ if response and response.get(API_RESPONSE_MESSAGE_KEY):
276
+ logger.warning(
277
+ "Error message from API response: "
278
+ f"{str(response.get(API_RESPONSE_MESSAGE_KEY))}"
279
+ )
280
+ failed_indexes.append(params_data)
281
+ count = 0
282
+ else:
283
+ try:
284
+ response = GroupsResponse(**response)
285
+ count = response.odata_count
286
+ except Exception as exc:
287
+ logger.warning(f"Error processing GetGroups response: {exc}")
288
+ count = 0
221
289
  indexes = math.ceil(count / entities_per_page)
222
-
223
290
  workspaces = []
224
291
  for index in range(indexes):
225
292
  params_data = {
226
293
  "$top": str(entities_per_page),
227
294
  "$skip": str(index * entities_per_page),
228
295
  }
229
- response_data = self.client.get(api_url, data=params_data)
230
- if not response_data:
231
- logger.error(
232
- "Error fetching workspaces between results: "
233
- f"{str(index * entities_per_page)} - {str(entities_per_page)}"
296
+ response = self.client.get(api_url, data=params_data)
297
+ if (
298
+ not response
299
+ or API_RESPONSE_MESSAGE_KEY in response
300
+ or len(response) != len(GroupsResponse.__annotations__)
301
+ ):
302
+ index_range = (
303
+ int(params_data.get("$skip")),
304
+ int(params_data.get("$skip")) + int(params_data.get("$top")),
305
+ )
306
+ logger.warning(
307
+ f"Error fetching workspaces between results: {str(index_range)}"
234
308
  )
309
+ if response and response.get(API_RESPONSE_MESSAGE_KEY):
310
+ logger.warning(
311
+ "Error message from API response: "
312
+ f"{str(response.get(API_RESPONSE_MESSAGE_KEY))}"
313
+ )
314
+ failed_indexes.append(params_data)
235
315
  continue
236
- response = GroupsResponse(**response_data)
237
- workspaces.extend(response.value)
316
+ try:
317
+ response = GroupsResponse(**response)
318
+ workspaces.extend(response.value)
319
+ except Exception as exc:
320
+ logger.warning(f"Error processing GetGroups response: {exc}")
321
+
322
+ if failed_indexes:
323
+ logger.info(
324
+ "Retrying one more time on failed indexes to get workspaces"
325
+ )
326
+ for params_data in failed_indexes:
327
+ response = self.client.get(api_url, data=params_data)
328
+ if (
329
+ not response
330
+ or API_RESPONSE_MESSAGE_KEY in response
331
+ or len(response) != len(GroupsResponse.__annotations__)
332
+ ):
333
+ index_range = (
334
+ int(params_data.get("$skip")),
335
+ int(params_data.get("$skip"))
336
+ + int(params_data.get("$top")),
337
+ )
338
+ logger.warning(
339
+ f"Workspaces between results {str(index_range)} "
340
+ "could not be fetched on multiple attempts"
341
+ )
342
+ if response and response.get(API_RESPONSE_MESSAGE_KEY):
343
+ logger.warning(
344
+ "Error message from API response: "
345
+ f"{str(response.get(API_RESPONSE_MESSAGE_KEY))}"
346
+ )
347
+ continue
348
+ try:
349
+ response = GroupsResponse(**response)
350
+ workspaces.extend(response.value)
351
+ except Exception as exc:
352
+ logger.warning(f"Error processing GetGroups response: {exc}")
238
353
  return workspaces
239
354
  except Exception as exc: # pylint: disable=broad-except
240
355
  logger.debug(traceback.format_exc())