openmetadata-ingestion 1.4.7.2__py3-none-any.whl → 1.4.8.1__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 (576) 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/analytics/__init__.py +1 -1
  18. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  19. metadata/generated/schema/api/automations/__init__.py +1 -1
  20. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  21. metadata/generated/schema/api/bulkAssets.py +1 -1
  22. metadata/generated/schema/api/classification/__init__.py +1 -1
  23. metadata/generated/schema/api/classification/createClassification.py +1 -1
  24. metadata/generated/schema/api/classification/createTag.py +1 -1
  25. metadata/generated/schema/api/classification/loadTags.py +1 -1
  26. metadata/generated/schema/api/createBot.py +1 -1
  27. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  28. metadata/generated/schema/api/createType.py +1 -1
  29. metadata/generated/schema/api/data/__init__.py +1 -1
  30. metadata/generated/schema/api/data/createChart.py +1 -1
  31. metadata/generated/schema/api/data/createContainer.py +1 -1
  32. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  33. metadata/generated/schema/api/data/createDashboard.py +1 -1
  34. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  35. metadata/generated/schema/api/data/createDatabase.py +1 -1
  36. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  37. metadata/generated/schema/api/data/createGlossary.py +1 -1
  38. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  39. metadata/generated/schema/api/data/createMlModel.py +1 -1
  40. metadata/generated/schema/api/data/createPipeline.py +1 -1
  41. metadata/generated/schema/api/data/createQuery.py +1 -1
  42. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  43. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  44. metadata/generated/schema/api/data/createTable.py +1 -1
  45. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  46. metadata/generated/schema/api/data/createTopic.py +1 -1
  47. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  48. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  49. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  50. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  51. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  52. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  53. metadata/generated/schema/api/docStore/__init__.py +1 -1
  54. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  55. metadata/generated/schema/api/domains/__init__.py +1 -1
  56. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  57. metadata/generated/schema/api/domains/createDomain.py +1 -1
  58. metadata/generated/schema/api/feed/__init__.py +1 -1
  59. metadata/generated/schema/api/feed/closeTask.py +1 -1
  60. metadata/generated/schema/api/feed/createPost.py +1 -1
  61. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  62. metadata/generated/schema/api/feed/createThread.py +1 -1
  63. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  64. metadata/generated/schema/api/feed/threadCount.py +1 -1
  65. metadata/generated/schema/api/lineage/__init__.py +1 -1
  66. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  67. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  68. metadata/generated/schema/api/policies/__init__.py +1 -1
  69. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  70. metadata/generated/schema/api/services/__init__.py +1 -1
  71. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  72. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  73. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  74. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  75. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  76. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  77. metadata/generated/schema/api/services/createSearchService.py +1 -1
  78. metadata/generated/schema/api/services/createStorageService.py +1 -1
  79. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  80. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  81. metadata/generated/schema/api/setOwner.py +1 -1
  82. metadata/generated/schema/api/teams/__init__.py +1 -1
  83. metadata/generated/schema/api/teams/createPersona.py +1 -1
  84. metadata/generated/schema/api/teams/createRole.py +1 -1
  85. metadata/generated/schema/api/teams/createTeam.py +1 -1
  86. metadata/generated/schema/api/teams/createUser.py +1 -1
  87. metadata/generated/schema/api/tests/__init__.py +1 -1
  88. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  89. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  90. metadata/generated/schema/api/tests/createTestCase.py +1 -1
  91. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  92. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  93. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  94. metadata/generated/schema/api/voteRequest.py +1 -1
  95. metadata/generated/schema/auth/__init__.py +1 -1
  96. metadata/generated/schema/auth/basicAuth.py +1 -1
  97. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  98. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  99. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  100. metadata/generated/schema/auth/emailRequest.py +1 -1
  101. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  102. metadata/generated/schema/auth/generateToken.py +1 -1
  103. metadata/generated/schema/auth/jwtAuth.py +1 -1
  104. metadata/generated/schema/auth/loginRequest.py +1 -1
  105. metadata/generated/schema/auth/logoutRequest.py +1 -1
  106. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  107. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  108. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  109. metadata/generated/schema/auth/refreshToken.py +1 -1
  110. metadata/generated/schema/auth/registrationRequest.py +1 -1
  111. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  112. metadata/generated/schema/auth/revokeToken.py +1 -1
  113. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  114. metadata/generated/schema/auth/ssoAuth.py +1 -1
  115. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  116. metadata/generated/schema/configuration/__init__.py +1 -1
  117. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  118. metadata/generated/schema/configuration/authConfig.py +1 -1
  119. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  120. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  121. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  122. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  123. metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
  124. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  125. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  126. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  127. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  128. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  129. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  130. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  131. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  132. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  133. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  134. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  135. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  136. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  137. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  138. metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
  139. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  140. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  141. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  142. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  143. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  144. metadata/generated/schema/dataInsight/__init__.py +1 -1
  145. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  146. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  147. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  148. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  149. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  150. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  151. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  152. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  153. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  154. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  155. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  156. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  157. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  158. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  159. metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithDescriptionByType.py +1 -1
  160. metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithOwnerByType.py +1 -1
  161. metadata/generated/schema/dataInsight/type/percentageOfServicesWithDescription.py +1 -1
  162. metadata/generated/schema/dataInsight/type/percentageOfServicesWithOwner.py +1 -1
  163. metadata/generated/schema/dataInsight/type/totalEntitiesByTier.py +1 -1
  164. metadata/generated/schema/dataInsight/type/totalEntitiesByType.py +1 -1
  165. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  166. metadata/generated/schema/email/__init__.py +1 -1
  167. metadata/generated/schema/email/emailRequest.py +1 -1
  168. metadata/generated/schema/email/smtpSettings.py +1 -1
  169. metadata/generated/schema/entity/__init__.py +1 -1
  170. metadata/generated/schema/entity/applications/__init__.py +1 -1
  171. metadata/generated/schema/entity/applications/app.py +1 -1
  172. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  173. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  174. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
  175. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  176. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  177. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  178. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  179. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  180. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  181. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  182. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
  183. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  184. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  185. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  186. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  187. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
  188. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  189. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
  190. metadata/generated/schema/entity/applications/configuration/external/metaPilotAppConfig.py +1 -1
  191. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  192. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  193. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  194. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  195. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  196. metadata/generated/schema/entity/applications/configuration/private/external/metaPilotAppPrivateConfig.py +1 -1
  197. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  198. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  199. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  200. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  201. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
  202. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  203. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  204. metadata/generated/schema/entity/automations/__init__.py +1 -1
  205. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  206. metadata/generated/schema/entity/automations/workflow.py +1 -1
  207. metadata/generated/schema/entity/bot.py +1 -1
  208. metadata/generated/schema/entity/classification/__init__.py +1 -1
  209. metadata/generated/schema/entity/classification/classification.py +1 -1
  210. metadata/generated/schema/entity/classification/tag.py +1 -1
  211. metadata/generated/schema/entity/data/__init__.py +1 -1
  212. metadata/generated/schema/entity/data/chart.py +1 -1
  213. metadata/generated/schema/entity/data/container.py +1 -1
  214. metadata/generated/schema/entity/data/dashboard.py +1 -1
  215. metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
  216. metadata/generated/schema/entity/data/database.py +1 -1
  217. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  218. metadata/generated/schema/entity/data/glossary.py +1 -1
  219. metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
  220. metadata/generated/schema/entity/data/metrics.py +1 -1
  221. metadata/generated/schema/entity/data/mlmodel.py +1 -1
  222. metadata/generated/schema/entity/data/pipeline.py +1 -1
  223. metadata/generated/schema/entity/data/query.py +1 -1
  224. metadata/generated/schema/entity/data/report.py +1 -1
  225. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  226. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  227. metadata/generated/schema/entity/data/table.py +1 -1
  228. metadata/generated/schema/entity/data/topic.py +1 -1
  229. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  230. metadata/generated/schema/entity/docStore/document.py +1 -1
  231. metadata/generated/schema/entity/domains/__init__.py +1 -1
  232. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  233. metadata/generated/schema/entity/domains/domain.py +1 -1
  234. metadata/generated/schema/entity/events/__init__.py +1 -1
  235. metadata/generated/schema/entity/events/webhook.py +1 -1
  236. metadata/generated/schema/entity/feed/__init__.py +1 -1
  237. metadata/generated/schema/entity/feed/assets.py +1 -1
  238. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  239. metadata/generated/schema/entity/feed/description.py +1 -1
  240. metadata/generated/schema/entity/feed/domain.py +1 -1
  241. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  242. metadata/generated/schema/entity/feed/owner.py +1 -1
  243. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  244. metadata/generated/schema/entity/feed/tag.py +1 -1
  245. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  246. metadata/generated/schema/entity/feed/thread.py +1 -1
  247. metadata/generated/schema/entity/policies/__init__.py +1 -1
  248. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  249. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
  250. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  251. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  252. metadata/generated/schema/entity/policies/filters.py +1 -1
  253. metadata/generated/schema/entity/policies/policy.py +1 -1
  254. metadata/generated/schema/entity/services/__init__.py +1 -1
  255. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  256. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  257. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  258. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  259. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  260. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  261. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  262. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  263. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  264. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  265. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  266. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  267. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  268. metadata/generated/schema/entity/services/connections/dashboard/mstrConnection.py +1 -1
  269. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  270. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  271. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  272. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  273. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  274. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  275. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  276. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  277. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  278. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  279. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  280. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  281. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  282. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  283. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  284. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
  285. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  286. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  287. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  288. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  289. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  290. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  291. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  292. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  293. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  294. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  295. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  296. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  297. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  298. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  299. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  300. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  301. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  302. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  303. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  304. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  305. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  306. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  307. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  308. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  309. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  310. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  311. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  312. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  313. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  314. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  315. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  316. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  317. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  318. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  319. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  320. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  321. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
  322. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  323. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  324. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  325. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  326. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  327. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  328. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  329. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  330. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  331. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  332. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  333. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  334. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  335. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  336. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
  337. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  338. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  339. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  340. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  341. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  342. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  343. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  344. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  345. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  346. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  347. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  348. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  349. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  350. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  351. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  352. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  353. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  354. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  355. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  356. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  357. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  358. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  359. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  360. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  361. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  362. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  363. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  364. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  365. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  366. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  367. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  368. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  369. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  370. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  371. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  372. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  373. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  374. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  375. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  376. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  377. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  378. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  379. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  380. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  382. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  383. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  384. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  385. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  386. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  387. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  388. metadata/generated/schema/entity/services/dashboardService.py +1 -1
  389. metadata/generated/schema/entity/services/databaseService.py +1 -1
  390. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  391. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
  392. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  393. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  394. metadata/generated/schema/entity/services/messagingService.py +1 -1
  395. metadata/generated/schema/entity/services/metadataService.py +1 -1
  396. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  397. metadata/generated/schema/entity/services/pipelineService.py +1 -1
  398. metadata/generated/schema/entity/services/searchService.py +1 -1
  399. metadata/generated/schema/entity/services/serviceType.py +1 -1
  400. metadata/generated/schema/entity/services/storageService.py +1 -1
  401. metadata/generated/schema/entity/teams/__init__.py +1 -1
  402. metadata/generated/schema/entity/teams/persona.py +1 -1
  403. metadata/generated/schema/entity/teams/role.py +1 -1
  404. metadata/generated/schema/entity/teams/team.py +1 -1
  405. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  406. metadata/generated/schema/entity/teams/user.py +1 -1
  407. metadata/generated/schema/entity/type.py +1 -1
  408. metadata/generated/schema/entity/utils/__init__.py +1 -1
  409. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  410. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  411. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  412. metadata/generated/schema/events/__init__.py +1 -1
  413. metadata/generated/schema/events/alertMetrics.py +1 -1
  414. metadata/generated/schema/events/api/__init__.py +1 -1
  415. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  416. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  417. metadata/generated/schema/events/eventFilterRule.py +1 -1
  418. metadata/generated/schema/events/eventSubscription.py +1 -1
  419. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  420. metadata/generated/schema/events/failedEvent.py +1 -1
  421. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  422. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  423. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  424. metadata/generated/schema/metadataIngestion/application.py +1 -1
  425. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  426. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  427. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  428. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  429. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  430. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  431. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  432. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  433. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  434. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  435. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  436. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  437. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  438. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  439. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  440. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  441. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  442. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  443. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  444. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  445. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  446. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  447. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  448. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  449. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  450. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  451. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  452. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  453. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  454. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  455. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  456. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  457. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  458. metadata/generated/schema/monitoring/__init__.py +1 -1
  459. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  460. metadata/generated/schema/security/__init__.py +1 -1
  461. metadata/generated/schema/security/client/__init__.py +1 -1
  462. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  463. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  464. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  465. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  466. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  467. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  468. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  469. metadata/generated/schema/security/client/samlSSOClientConfig.py +4 -4
  470. metadata/generated/schema/security/credentials/__init__.py +1 -1
  471. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  472. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  473. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  474. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  475. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  476. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  477. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  478. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  479. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  480. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  481. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  482. metadata/generated/schema/security/secrets/__init__.py +1 -1
  483. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  484. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  485. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  486. metadata/generated/schema/security/securityConfiguration.py +1 -1
  487. metadata/generated/schema/security/ssl/__init__.py +1 -1
  488. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  489. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  490. metadata/generated/schema/settings/__init__.py +1 -1
  491. metadata/generated/schema/settings/settings.py +1 -1
  492. metadata/generated/schema/system/__init__.py +1 -1
  493. metadata/generated/schema/system/entityError.py +1 -1
  494. metadata/generated/schema/system/eventPublisherJob.py +1 -1
  495. metadata/generated/schema/system/indexingError.py +1 -1
  496. metadata/generated/schema/system/ui/__init__.py +1 -1
  497. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  498. metadata/generated/schema/system/ui/page.py +1 -1
  499. metadata/generated/schema/system/validationResponse.py +1 -1
  500. metadata/generated/schema/tests/__init__.py +1 -1
  501. metadata/generated/schema/tests/assigned.py +1 -1
  502. metadata/generated/schema/tests/basic.py +1 -1
  503. metadata/generated/schema/tests/customMetric.py +1 -1
  504. metadata/generated/schema/tests/resolved.py +1 -1
  505. metadata/generated/schema/tests/testCase.py +1 -1
  506. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  507. metadata/generated/schema/tests/testDefinition.py +1 -1
  508. metadata/generated/schema/tests/testSuite.py +1 -1
  509. metadata/generated/schema/type/__init__.py +1 -1
  510. metadata/generated/schema/type/auditLog.py +1 -1
  511. metadata/generated/schema/type/basic.py +1 -1
  512. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  513. metadata/generated/schema/type/changeEvent.py +1 -1
  514. metadata/generated/schema/type/changeEventType.py +1 -1
  515. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  516. metadata/generated/schema/type/csvDocumentation.py +1 -1
  517. metadata/generated/schema/type/csvErrorType.py +1 -1
  518. metadata/generated/schema/type/csvFile.py +1 -1
  519. metadata/generated/schema/type/csvImportResult.py +1 -1
  520. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  521. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  522. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  523. metadata/generated/schema/type/customProperty.py +1 -1
  524. metadata/generated/schema/type/dailyCount.py +1 -1
  525. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  526. metadata/generated/schema/type/entityHierarchy.py +1 -1
  527. metadata/generated/schema/type/entityHistory.py +1 -1
  528. metadata/generated/schema/type/entityLineage.py +1 -1
  529. metadata/generated/schema/type/entityReference.py +1 -1
  530. metadata/generated/schema/type/entityReferenceList.py +1 -1
  531. metadata/generated/schema/type/entityRelationship.py +1 -1
  532. metadata/generated/schema/type/entityUsage.py +1 -1
  533. metadata/generated/schema/type/filterPattern.py +1 -1
  534. metadata/generated/schema/type/function.py +1 -1
  535. metadata/generated/schema/type/include.py +1 -1
  536. metadata/generated/schema/type/jdbcConnection.py +1 -1
  537. metadata/generated/schema/type/lifeCycle.py +1 -1
  538. metadata/generated/schema/type/paging.py +1 -1
  539. metadata/generated/schema/type/profile.py +1 -1
  540. metadata/generated/schema/type/queryParserData.py +1 -1
  541. metadata/generated/schema/type/reaction.py +1 -1
  542. metadata/generated/schema/type/schedule.py +1 -1
  543. metadata/generated/schema/type/schema.py +1 -1
  544. metadata/generated/schema/type/tableQuery.py +1 -1
  545. metadata/generated/schema/type/tableUsageCount.py +1 -1
  546. metadata/generated/schema/type/tagLabel.py +1 -1
  547. metadata/generated/schema/type/usageDetails.py +1 -1
  548. metadata/generated/schema/type/usageRequest.py +1 -1
  549. metadata/generated/schema/type/votes.py +1 -1
  550. metadata/ingestion/connections/test_connections.py +5 -0
  551. metadata/ingestion/lineage/models.py +4 -0
  552. metadata/ingestion/source/connections.py +19 -0
  553. metadata/ingestion/source/database/common_db_source.py +6 -1
  554. metadata/ingestion/source/database/databricks/metadata.py +32 -1
  555. metadata/ingestion/source/database/dbt/constants.py +1 -7
  556. metadata/ingestion/source/database/dbt/dbt_config.py +18 -19
  557. metadata/ingestion/source/database/dbt/dbt_service.py +4 -3
  558. metadata/ingestion/source/database/dbt/metadata.py +7 -3
  559. metadata/ingestion/source/database/dbt/models.py +2 -2
  560. metadata/ingestion/source/database/oracle/metadata.py +7 -0
  561. metadata/ingestion/source/database/oracle/queries.py +45 -11
  562. metadata/ingestion/source/database/oracle/utils.py +33 -0
  563. metadata/profiler/interface/sqlalchemy/profiler_interface.py +23 -1
  564. metadata/profiler/metrics/composed/null_ratio.py +3 -7
  565. metadata/profiler/metrics/hybrid/histogram.py +9 -3
  566. metadata/profiler/metrics/static/null_count.py +4 -2
  567. metadata/profiler/orm/functions/table_metric_computer.py +2 -2
  568. metadata/profiler/orm/registry.py +11 -0
  569. metadata/profiler/processor/default.py +4 -1
  570. metadata/profiler/source/base/profiler_source.py +1 -0
  571. {openmetadata_ingestion-1.4.7.2.dist-info → openmetadata_ingestion-1.4.8.1.dist-info}/METADATA +280 -280
  572. {openmetadata_ingestion-1.4.7.2.dist-info → openmetadata_ingestion-1.4.8.1.dist-info}/RECORD +576 -576
  573. {openmetadata_ingestion-1.4.7.2.dist-info → openmetadata_ingestion-1.4.8.1.dist-info}/LICENSE +0 -0
  574. {openmetadata_ingestion-1.4.7.2.dist-info → openmetadata_ingestion-1.4.8.1.dist-info}/WHEEL +0 -0
  575. {openmetadata_ingestion-1.4.7.2.dist-info → openmetadata_ingestion-1.4.8.1.dist-info}/entry_points.txt +0 -0
  576. {openmetadata_ingestion-1.4.7.2.dist-info → openmetadata_ingestion-1.4.8.1.dist-info}/top_level.txt +0 -0
@@ -266,13 +266,44 @@ def get_table_names(
266
266
  if len(row) > 1:
267
267
  tables.append(row[1])
268
268
  else:
269
- tables.append(row[0])
269
+ table_name = row[0]
270
+ if schema:
271
+ database = kw.get("db_name")
272
+ table_type = get_table_type(connection, database, schema, table_name)
273
+ if not table_type or table_type == "FOREIGN":
274
+ # skip the table if it's foreign table / error in fetching table_type
275
+ logger.debug(
276
+ f"Skipping metadata ingestion for unsupported foreign table {table_name}"
277
+ )
278
+ continue
279
+ tables.append(table_name)
280
+
270
281
  # "SHOW TABLES" command in hive also fetches view names
271
282
  # Below code filters out view names from table names
272
283
  views = self.get_view_names(connection, schema)
273
284
  return [table for table in tables if table not in views]
274
285
 
275
286
 
287
+ def get_table_type(connection, database, schema, table):
288
+ """get table type (regular/foreign)"""
289
+ try:
290
+ if database:
291
+ query = DATABRICKS_GET_TABLE_COMMENTS.format(
292
+ database_name=database, schema_name=schema, table_name=table
293
+ )
294
+ else:
295
+ query = f"DESCRIBE TABLE EXTENDED {schema}.{table}"
296
+ rows = connection.execute(query)
297
+ for row in rows:
298
+ row_dict = dict(row)
299
+ if row_dict.get("col_name") == "Type":
300
+ # get type of table
301
+ return row_dict.get("data_type")
302
+ except DatabaseError as err:
303
+ logger.error(f"Failed to fetch table type for table {table} due to: {err}")
304
+ return
305
+
306
+
276
307
  DatabricksDialect.get_table_comment = get_table_comment
277
308
  DatabricksDialect.get_view_names = get_view_names
278
309
  DatabricksDialect.get_columns = get_columns
@@ -26,13 +26,7 @@ NONE_KEYWORDS_LIST = ["none", "null"]
26
26
 
27
27
  DBT_CATALOG_FILE_NAME = "catalog.json"
28
28
  DBT_MANIFEST_FILE_NAME = "manifest.json"
29
- DBT_RUN_RESULTS_FILE_NAME = "run_results.json"
30
-
31
- DBT_FILE_NAMES_LIST = [
32
- DBT_CATALOG_FILE_NAME,
33
- DBT_MANIFEST_FILE_NAME,
34
- DBT_RUN_RESULTS_FILE_NAME,
35
- ]
29
+ DBT_RUN_RESULTS_FILE_NAME = "run_results"
36
30
 
37
31
 
38
32
  class SkipResourceTypeEnum(Enum):
@@ -41,7 +41,6 @@ from metadata.generated.schema.metadataIngestion.dbtconfig.dbtS3Config import (
41
41
  )
42
42
  from metadata.ingestion.source.database.dbt.constants import (
43
43
  DBT_CATALOG_FILE_NAME,
44
- DBT_FILE_NAMES_LIST,
45
44
  DBT_MANIFEST_FILE_NAME,
46
45
  DBT_RUN_RESULTS_FILE_NAME,
47
46
  )
@@ -129,7 +128,7 @@ def _(config: DbtHttpConfig):
129
128
  yield DbtFiles(
130
129
  dbt_catalog=dbt_catalog.json() if dbt_catalog else None,
131
130
  dbt_manifest=dbt_manifest.json(),
132
- dbt_run_results=dbt_run_results.json() if dbt_run_results else None,
131
+ dbt_run_results=[dbt_run_results.json()] if dbt_run_results else None,
133
132
  )
134
133
  except DBTConfigException as exc:
135
134
  raise exc
@@ -215,7 +214,7 @@ def _(config: DbtCloudConfig): # pylint: disable=too-many-locals
215
214
  yield DbtFiles(
216
215
  dbt_catalog=dbt_catalog,
217
216
  dbt_manifest=dbt_manifest,
218
- dbt_run_results=dbt_run_results,
217
+ dbt_run_results=[dbt_run_results] if dbt_run_results else None,
219
218
  )
220
219
  except DBTConfigException as exc:
221
220
  raise exc
@@ -232,13 +231,12 @@ def get_blobs_grouped_by_dir(blobs: List[str]) -> Dict[str, List[str]]:
232
231
  for blob in blobs:
233
232
  subdirectory = blob.rsplit("/", 1)[0] if "/" in blob else ""
234
233
  blob_file_name = blob.rsplit("/", 1)[1] if "/" in blob else blob
235
- if next(
236
- (
237
- file_name
238
- for file_name in DBT_FILE_NAMES_LIST
239
- if file_name.lower() == blob_file_name.lower()
240
- ),
241
- None,
234
+ # We'll be processing multiple run_result files from a single dir
235
+ # Grouping them together to process them in a single go
236
+ if (
237
+ DBT_MANIFEST_FILE_NAME == blob_file_name.lower()
238
+ or DBT_CATALOG_FILE_NAME == blob_file_name.lower()
239
+ or DBT_RUN_RESULTS_FILE_NAME in blob_file_name.lower()
242
240
  ):
243
241
  blob_grouped_by_directory[subdirectory].append(blob)
244
242
  return blob_grouped_by_directory
@@ -256,7 +254,7 @@ def download_dbt_files(
256
254
  ) in blob_grouped_by_directory.items():
257
255
  dbt_catalog = None
258
256
  dbt_manifest = None
259
- dbt_run_results = None
257
+ dbt_run_results = []
260
258
  kwargs = {}
261
259
  if bucket_name:
262
260
  kwargs = {"bucket_name": bucket_name}
@@ -264,10 +262,11 @@ def download_dbt_files(
264
262
  for blob in blobs:
265
263
  if blob:
266
264
  reader = get_reader(config_source=config, client=client)
267
- if DBT_MANIFEST_FILE_NAME in blob:
265
+ blob_file_name = blob.rsplit("/", 1)[1] if "/" in blob else blob
266
+ if DBT_MANIFEST_FILE_NAME == blob_file_name.lower():
268
267
  logger.debug(f"{DBT_MANIFEST_FILE_NAME} found in {key}")
269
268
  dbt_manifest = reader.read(path=blob, **kwargs)
270
- if DBT_CATALOG_FILE_NAME in blob:
269
+ if DBT_CATALOG_FILE_NAME == blob_file_name.lower():
271
270
  try:
272
271
  logger.debug(f"{DBT_CATALOG_FILE_NAME} found in {key}")
273
272
  dbt_catalog = reader.read(path=blob, **kwargs)
@@ -275,10 +274,12 @@ def download_dbt_files(
275
274
  logger.warning(
276
275
  f"{DBT_CATALOG_FILE_NAME} not found in {key}: {exc}"
277
276
  )
278
- if DBT_RUN_RESULTS_FILE_NAME in blob:
277
+ if DBT_RUN_RESULTS_FILE_NAME in blob_file_name.lower():
279
278
  try:
280
- logger.debug(f"{DBT_RUN_RESULTS_FILE_NAME} found in {key}")
281
- dbt_run_results = reader.read(path=blob, **kwargs)
279
+ logger.debug(f"{blob_file_name} found in {key}")
280
+ dbt_run_result = reader.read(path=blob, **kwargs)
281
+ if dbt_run_result:
282
+ dbt_run_results.append(json.loads(dbt_run_result))
282
283
  except Exception as exc:
283
284
  logger.warning(
284
285
  f"{DBT_RUN_RESULTS_FILE_NAME} not found in {key}: {exc}"
@@ -288,9 +289,7 @@ def download_dbt_files(
288
289
  yield DbtFiles(
289
290
  dbt_catalog=json.loads(dbt_catalog) if dbt_catalog else None,
290
291
  dbt_manifest=json.loads(dbt_manifest),
291
- dbt_run_results=json.loads(dbt_run_results)
292
- if dbt_run_results
293
- else None,
292
+ dbt_run_results=dbt_run_results if dbt_run_results else None,
294
293
  )
295
294
  except DBTConfigException as exc:
296
295
  logger.warning(exc)
@@ -174,9 +174,10 @@ class DbtServiceSource(TopologyRunnerMixin, Source, ABC):
174
174
  if self.context.get().dbt_file.dbt_catalog
175
175
  else None,
176
176
  dbt_manifest=parse_manifest(self.context.get().dbt_file.dbt_manifest),
177
- dbt_run_results=parse_run_results(
178
- self.context.get().dbt_file.dbt_run_results
179
- )
177
+ dbt_run_results=[
178
+ parse_run_results(run_result_file)
179
+ for run_result_file in self.context.get().dbt_file.dbt_run_results
180
+ ]
180
181
  if self.context.get().dbt_file.dbt_run_results
181
182
  else None,
182
183
  )
@@ -1,3 +1,4 @@
1
+ # pylint: disable=too-many-lines
1
2
  # Copyright 2021 Collate
2
3
  # Licensed under the Apache License, Version 2.0 (the "License");
3
4
  # you may not use this file except in compliance with the License.
@@ -303,7 +304,8 @@ class DbtSource(DbtServiceSource):
303
304
  self.context.get().dbt_tests[key][DbtCommonEnum.RESULTS.value] = next(
304
305
  (
305
306
  item
306
- for item in dbt_objects.dbt_run_results.results
307
+ for run_result in dbt_objects.dbt_run_results
308
+ for item in run_result.results
307
309
  if item.unique_id == key
308
310
  ),
309
311
  None,
@@ -330,12 +332,14 @@ class DbtSource(DbtServiceSource):
330
332
  self.context.get().data_model_links = []
331
333
  self.context.get().dbt_tests = {}
332
334
  self.context.get().run_results_generate_time = None
335
+ # Since we'll be processing multiple run_results for a single project
336
+ # we'll only consider the first run_results generated_at time
333
337
  if (
334
338
  dbt_objects.dbt_run_results
335
- and dbt_objects.dbt_run_results.metadata.generated_at
339
+ and dbt_objects.dbt_run_results[0].metadata.generated_at
336
340
  ):
337
341
  self.context.get().run_results_generate_time = (
338
- dbt_objects.dbt_run_results.metadata.generated_at
342
+ dbt_objects.dbt_run_results[0].metadata.generated_at
339
343
  )
340
344
  for key, manifest_node in manifest_entities.items():
341
345
  try:
@@ -20,13 +20,13 @@ from pydantic import BaseModel
20
20
  class DbtFiles(BaseModel):
21
21
  dbt_catalog: Optional[dict]
22
22
  dbt_manifest: dict
23
- dbt_run_results: Optional[dict]
23
+ dbt_run_results: Optional[List[dict]]
24
24
 
25
25
 
26
26
  class DbtObjects(BaseModel):
27
27
  dbt_catalog: Optional[Any]
28
28
  dbt_manifest: Any
29
- dbt_run_results: Optional[Any]
29
+ dbt_run_results: Optional[List[Any]]
30
30
 
31
31
 
32
32
  class DbtFilteredModel(BaseModel):
@@ -54,6 +54,7 @@ from metadata.ingestion.source.database.oracle.queries import (
54
54
  )
55
55
  from metadata.ingestion.source.database.oracle.utils import (
56
56
  _get_col_type,
57
+ _get_constraint_data,
57
58
  get_columns,
58
59
  get_mview_definition,
59
60
  get_mview_names,
@@ -61,6 +62,8 @@ from metadata.ingestion.source.database.oracle.utils import (
61
62
  get_table_comment,
62
63
  get_table_names,
63
64
  get_view_definition,
65
+ get_view_names,
66
+ get_view_names_dialect,
64
67
  )
65
68
  from metadata.ingestion.source.database.stored_procedures_mixin import (
66
69
  QueryByProcedure,
@@ -97,10 +100,14 @@ OracleDialect.get_table_names = get_table_names
97
100
  Inspector.get_mview_names = get_mview_names
98
101
  Inspector.get_mview_definition = get_mview_definition
99
102
  OracleDialect.get_mview_names = get_mview_names_dialect
103
+ Inspector.get_view_names = get_view_names
104
+ OracleDialect.get_view_names = get_view_names_dialect
100
105
 
101
106
  Inspector.get_all_table_ddls = get_all_table_ddls
102
107
  Inspector.get_table_ddl = get_table_ddl
103
108
 
109
+ OracleDialect._get_constraint_data = _get_constraint_data
110
+
104
111
 
105
112
  class OracleSource(StoredProcedureMixin, CommonDbSourceService):
106
113
  """
@@ -20,7 +20,7 @@ SELECT
20
20
  comments table_comment,
21
21
  LOWER(table_name) "table_name",
22
22
  LOWER(owner) "schema"
23
- FROM ALL_TAB_COMMENTS
23
+ FROM DBA_TAB_COMMENTS
24
24
  where comments is not null and owner not in ('SYSTEM', 'SYS')
25
25
  """
26
26
  )
@@ -32,33 +32,39 @@ SELECT
32
32
  LOWER(view_name) AS "view_name",
33
33
  LOWER(owner) AS "schema",
34
34
  DBMS_METADATA.GET_DDL('VIEW', view_name, owner) AS view_def
35
- FROM ALL_VIEWS
35
+ FROM DBA_VIEWS
36
36
  WHERE owner NOT IN ('SYSTEM', 'SYS')
37
37
  UNION ALL
38
38
  SELECT
39
39
  LOWER(mview_name) AS "view_name",
40
40
  LOWER(owner) AS "schema",
41
41
  DBMS_METADATA.GET_DDL('MATERIALIZED_VIEW', mview_name, owner) AS view_def
42
- FROM ALL_MVIEWS
42
+ FROM DBA_MVIEWS
43
43
  WHERE owner NOT IN ('SYSTEM', 'SYS')
44
44
  """
45
45
  )
46
46
 
47
+ GET_VIEW_NAMES = textwrap.dedent(
48
+ """
49
+ SELECT view_name FROM DBA_VIEWS WHERE owner = :owner
50
+ """
51
+ )
52
+
47
53
  GET_MATERIALIZED_VIEW_NAMES = textwrap.dedent(
48
54
  """
49
- SELECT mview_name FROM ALL_MVIEWS WHERE owner = :owner
55
+ SELECT mview_name FROM DBA_MVIEWS WHERE owner = :owner
50
56
  """
51
57
  )
52
58
 
53
59
  ORACLE_GET_TABLE_NAMES = textwrap.dedent(
54
60
  """
55
- SELECT table_name FROM ALL_TABLES WHERE
61
+ SELECT table_name FROM DBA_TABLES WHERE
56
62
  {tablespace}
57
63
  OWNER = :owner
58
64
  AND IOT_NAME IS NULL
59
65
  AND DURATION IS NULL
60
66
  AND TABLE_NAME NOT IN
61
- (SELECT mview_name FROM ALL_MVIEWS WHERE owner = :owner)
67
+ (SELECT mview_name FROM DBA_MVIEWS WHERE owner = :owner)
62
68
  """
63
69
  )
64
70
 
@@ -67,7 +73,7 @@ ORACLE_IDENTITY_TYPE = textwrap.dedent(
67
73
  col.default_on_null,
68
74
  (
69
75
  SELECT id.generation_type || ',' || id.IDENTITY_OPTIONS
70
- FROM ALL_TAB_IDENTITY_COLS{dblink} id
76
+ FROM DBA_TAB_IDENTITY_COLS{dblink} id
71
77
  WHERE col.table_name = id.table_name
72
78
  AND col.column_name = id.column_name
73
79
  AND col.owner = id.owner
@@ -83,12 +89,12 @@ SELECT
83
89
  LINE,
84
90
  TEXT
85
91
  FROM
86
- ALL_SOURCE
92
+ DBA_SOURCE
87
93
  WHERE
88
94
  type = 'PROCEDURE' and owner = '{schema}'
89
95
  """
90
96
  )
91
- CHECK_ACCESS_TO_ALL = "SELECT table_name FROM ALL_TABLES where ROWNUM < 2"
97
+ CHECK_ACCESS_TO_ALL = "SELECT table_name FROM DBA_TABLES where ROWNUM < 2"
92
98
  ORACLE_GET_STORED_PROCEDURE_QUERIES = textwrap.dedent(
93
99
  """
94
100
  WITH SP_HISTORY AS (SELECT
@@ -153,8 +159,8 @@ ORACLE_GET_COLUMNS = textwrap.dedent(
153
159
  com.comments,
154
160
  col.virtual_column,
155
161
  {identity_cols}
156
- FROM ALL_TAB_COLS{dblink} col
157
- LEFT JOIN ALL_COL_COMMENTS{dblink} com
162
+ FROM DBA_TAB_COLS{dblink} col
163
+ LEFT JOIN DBA_COL_COMMENTS{dblink} com
158
164
  ON col.table_name = com.table_name
159
165
  AND col.column_name = com.column_name
160
166
  AND col.owner = com.owner
@@ -163,6 +169,34 @@ ORACLE_GET_COLUMNS = textwrap.dedent(
163
169
  """
164
170
  )
165
171
 
172
+ ORACLE_ALL_CONSTRAINTS = textwrap.dedent(
173
+ """
174
+ SELECT
175
+ ac.constraint_name,
176
+ ac.constraint_type,
177
+ loc.column_name AS local_column,
178
+ rem.table_name AS remote_table,
179
+ rem.column_name AS remote_column,
180
+ rem.owner AS remote_owner,
181
+ loc.position as loc_pos,
182
+ rem.position as rem_pos,
183
+ ac.search_condition,
184
+ ac.delete_rule
185
+ FROM DBA_CONSTRAINTS{dblink} ac,
186
+ DBA_CONS_COLUMNS{dblink} loc,
187
+ DBA_CONS_COLUMNS{dblink} rem
188
+ WHERE ac.table_name = CAST(:table_name AS VARCHAR2(128))
189
+ AND ac.constraint_type IN ('R','P', 'U', 'C')
190
+ AND ac.owner = CAST(:owner AS VARCHAR2(128))
191
+ AND ac.owner = loc.owner
192
+ AND ac.constraint_name = loc.constraint_name
193
+ AND ac.r_owner = rem.owner(+)
194
+ AND ac.r_constraint_name = rem.constraint_name(+)
195
+ AND (rem.position IS NULL or loc.position=rem.position)
196
+ ORDER BY ac.constraint_name, loc.position
197
+ """
198
+ )
199
+
166
200
  ORACLE_QUERY_HISTORY_STATEMENT = textwrap.dedent(
167
201
  """
168
202
  SELECT
@@ -21,6 +21,8 @@ from sqlalchemy.sql import sqltypes
21
21
 
22
22
  from metadata.ingestion.source.database.oracle.queries import (
23
23
  GET_MATERIALIZED_VIEW_NAMES,
24
+ GET_VIEW_NAMES,
25
+ ORACLE_ALL_CONSTRAINTS,
24
26
  ORACLE_ALL_TABLE_COMMENTS,
25
27
  ORACLE_ALL_VIEW_DEFINITIONS,
26
28
  ORACLE_GET_COLUMNS,
@@ -222,6 +224,26 @@ def get_table_names(self, connection, schema=None, **kw):
222
224
  return [row[0] for row in cursor]
223
225
 
224
226
 
227
+ def get_view_names(self, schema=None):
228
+ """Return all materialized view names in `schema`.
229
+
230
+ :param schema: Optional, retrieve names from a non-default schema.
231
+ For special quoting, use :class:`.quoted_name`.
232
+
233
+ """
234
+
235
+ with self._operation_context() as conn:
236
+ return self.dialect.get_view_names(conn, schema, info_cache=self.info_cache)
237
+
238
+
239
+ @reflection.cache
240
+ def get_view_names_dialect(self, connection, schema=None, **kw):
241
+ schema = self.denormalize_name(schema or self.default_schema_name)
242
+ sql_query = sql.text(GET_VIEW_NAMES)
243
+ cursor = connection.execute(sql_query, {"owner": self.denormalize_name(schema)})
244
+ return [self.normalize_name(row[0]) for row in cursor]
245
+
246
+
225
247
  def get_mview_names(self, schema=None):
226
248
  """Return all materialized view names in `schema`.
227
249
 
@@ -254,3 +276,14 @@ def get_mview_definition(self, mview_name, schema=None):
254
276
  return self.dialect.get_view_definition(
255
277
  conn, mview_name, schema, info_cache=self.info_cache
256
278
  )
279
+
280
+
281
+ @reflection.cache
282
+ def _get_constraint_data(self, connection, table_name, schema=None, dblink="", **kw):
283
+
284
+ params = {"table_name": table_name, "owner": schema}
285
+ text = ORACLE_ALL_CONSTRAINTS.format(dblink=dblink)
286
+
287
+ rp = connection.execute(sql.text(text), params)
288
+ constraint_data = rp.fetchall()
289
+ return constraint_data
@@ -16,11 +16,12 @@ supporting sqlalchemy abstraction layer
16
16
  """
17
17
 
18
18
  import concurrent.futures
19
+ import math
19
20
  import threading
20
21
  import traceback
21
22
  from collections import defaultdict
22
23
  from datetime import datetime, timezone
23
- from typing import Dict, List, Optional
24
+ from typing import Any, Dict, List, Optional
24
25
 
25
26
  from sqlalchemy import Column, inspect, text
26
27
  from sqlalchemy.exc import DBAPIError, ProgrammingError, ResourceClosedError
@@ -450,6 +451,16 @@ class SQAProfilerInterface(ProfilerInterface, SQAInterfaceMixin):
450
451
  column=metric_func.column,
451
452
  sample=sample,
452
453
  )
454
+ if row and isinstance(row, dict):
455
+ row = self._validate_nulls(row)
456
+
457
+ # System metrics return a list of dictionaries, with UPDATE, INSERT or DELETE ops results
458
+ if row and metric_func.metric_type == MetricTypes.System:
459
+ row = [
460
+ self._validate_nulls(r) if isinstance(r, dict) else r
461
+ for r in row
462
+ ]
463
+
453
464
  except Exception as exc:
454
465
  error = (
455
466
  f"{metric_func.column if metric_func.column is not None else metric_func.table.__tablename__} "
@@ -467,6 +478,17 @@ class SQAProfilerInterface(ProfilerInterface, SQAInterfaceMixin):
467
478
 
468
479
  return row, column, metric_func.metric_type.value
469
480
 
481
+ @staticmethod
482
+ def _validate_nulls(row: Dict[str, Any]) -> Dict[str, Any]:
483
+ """Detect if we are computing NaNs and replace them with None"""
484
+ for k, v in row.items():
485
+ if isinstance(v, float) and math.isnan(v):
486
+ logger.warning(
487
+ "NaN data detected and will be cast to null in OpenMetadata to maintain database parity"
488
+ )
489
+ row[k] = None
490
+ return row
491
+
470
492
  # pylint: disable=use-dict-literal
471
493
  def get_all_metrics(
472
494
  self,
@@ -49,12 +49,8 @@ class NullRatio(ComposedMetric):
49
49
  Safely compute null ratio based on the profiler
50
50
  results of other Metrics
51
51
  """
52
- import pandas as pd
53
-
54
52
  res_count = res.get(Count.name())
55
53
  res_null = res.get(NullCount.name())
56
-
57
- if not pd.isnull(res_count) and not pd.isnull(res_null):
58
- result = res_null / (res_null + res_count)
59
- return None if pd.isnull(result) else result
60
- return None
54
+ if res_count + res_null == 0:
55
+ return None
56
+ return res_null / (res_null + res_count)
@@ -25,7 +25,11 @@ from metadata.profiler.metrics.static.count import Count
25
25
  from metadata.profiler.metrics.static.max import Max
26
26
  from metadata.profiler.metrics.static.min import Min
27
27
  from metadata.profiler.orm.functions.length import LenFn
28
- from metadata.profiler.orm.registry import is_concatenable, is_quantifiable
28
+ from metadata.profiler.orm.registry import (
29
+ is_concatenable,
30
+ is_quantifiable,
31
+ is_value_non_numeric,
32
+ )
29
33
  from metadata.utils.helpers import format_large_string_numbers
30
34
  from metadata.utils.logger import profiler_logger
31
35
 
@@ -120,7 +124,6 @@ class Histogram(HybridMetric):
120
124
  # freedman-diaconis rule
121
125
  bin_width = self._get_bin_width(float(res_iqr), res_row_count) # type: ignore
122
126
  num_bins = math.ceil((res_max - res_min) / bin_width) # type: ignore
123
-
124
127
  # sturge's rule
125
128
  if res_iqr is None or num_bins > max_bin_count:
126
129
  num_bins = int(math.ceil(math.log2(res_row_count) + 1))
@@ -148,7 +151,10 @@ class Histogram(HybridMetric):
148
151
  "We are missing the session attribute to compute the Histogram."
149
152
  )
150
153
 
151
- if not (is_quantifiable(self.col.type) or is_concatenable(self.col.type)):
154
+ if not (is_quantifiable(self.col.type) or is_concatenable(self.col.type)) or (
155
+ is_value_non_numeric(res.get(Min.name()))
156
+ or is_value_non_numeric(res.get(Max.name()))
157
+ ):
152
158
  return None
153
159
 
154
160
  # get the metric need for the freedman-diaconis rule
@@ -16,6 +16,7 @@ Null Count Metric definition
16
16
 
17
17
 
18
18
  from sqlalchemy import case, column
19
+ from sqlalchemy.sql.functions import coalesce
19
20
 
20
21
  from metadata.generated.schema.configuration.profilerConfiguration import MetricType
21
22
  from metadata.profiler.metrics.core import StaticMetric, _label
@@ -48,8 +49,9 @@ class NullCount(StaticMetric):
48
49
  @_label
49
50
  def fn(self):
50
51
  """sqlalchemy function"""
51
- return SumFn(
52
- case([(column(self.col.name, self.col.type).is_(None), 1)], else_=0)
52
+ return coalesce(
53
+ SumFn(case([(column(self.col.name, self.col.type).is_(None), 1)], else_=0)),
54
+ 0,
53
55
  )
54
56
 
55
57
  def df_fn(self, dfs=None):
@@ -194,7 +194,7 @@ class OracleTableMetricComputer(BaseTableMetricComputer):
194
194
  Column("object_name").label("table_name"),
195
195
  Column("created"),
196
196
  ],
197
- self._build_table("all_objects", None),
197
+ self._build_table("DBA_OBJECTS", None),
198
198
  [
199
199
  func.lower(Column("owner")) == self.schema_name.lower(),
200
200
  func.lower(Column("object_name")) == self.table_name.lower(),
@@ -209,7 +209,7 @@ class OracleTableMetricComputer(BaseTableMetricComputer):
209
209
  Column("table_name"),
210
210
  Column("NUM_ROWS"),
211
211
  ],
212
- self._build_table("all_tables", None),
212
+ self._build_table("DBA_TABLES", None),
213
213
  [
214
214
  func.lower(Column("owner")) == self.schema_name.lower(),
215
215
  func.lower(Column("table_name")) == self.table_name.lower(),
@@ -13,6 +13,8 @@
13
13
  Custom types' registry for easy access
14
14
  without having an import mess
15
15
  """
16
+ import math
17
+
16
18
  import sqlalchemy
17
19
  from sqlalchemy import Date, DateTime, Integer, Numeric, Time
18
20
  from sqlalchemy.sql.sqltypes import Concatenable, Enum
@@ -166,3 +168,12 @@ def is_concatenable(_type) -> bool:
166
168
  if isinstance(_type, DataType):
167
169
  return _type.value in CONCATENABLE_SET
168
170
  return issubclass(_type.__class__, Concatenable)
171
+
172
+
173
+ def is_value_non_numeric(value) -> bool:
174
+ try:
175
+ if isinstance(value, float) and (math.isnan(value) or math.isinf(value)):
176
+ return True
177
+ return False
178
+ except Exception:
179
+ return False
@@ -77,9 +77,12 @@ class DefaultProfiler(Profiler):
77
77
  include_columns: Optional[List[ColumnProfilerConfig]] = None,
78
78
  exclude_columns: Optional[List[str]] = None,
79
79
  global_profiler_configuration: Optional[ProfilerConfiguration] = None,
80
+ db_service=None,
80
81
  ):
81
82
  _metrics = get_default_metrics(
82
- table=profiler_interface.table, ometa_client=profiler_interface.ometa_client
83
+ table=profiler_interface.table,
84
+ ometa_client=profiler_interface.ometa_client,
85
+ db_service=db_service,
83
86
  )
84
87
 
85
88
  super().__init__(
@@ -280,6 +280,7 @@ class ProfilerSource(ProfilerSourceInterface):
280
280
  include_columns=self._get_include_columns(entity, table_config),
281
281
  exclude_columns=self._get_exclude_columns(entity, table_config),
282
282
  global_profiler_configuration=self.global_profiler_configuration,
283
+ db_service=db_service,
283
284
  )
284
285
 
285
286
  metrics = (