openmetadata-ingestion 1.1.4.0__py3-none-any.whl → 1.1.6.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 (445) hide show
  1. metadata/data_insight/api/workflow.py +57 -1
  2. metadata/data_quality/interface/pandas/pandas_test_suite_interface.py +1 -1
  3. metadata/data_quality/interface/sqlalchemy/sqa_test_suite_interface.py +1 -1
  4. metadata/generated/schema/analytics/__init__.py +1 -1
  5. metadata/generated/schema/analytics/basic.py +1 -1
  6. metadata/generated/schema/analytics/reportData.py +1 -1
  7. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  8. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  9. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  10. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  11. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  12. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  13. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  14. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  15. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  16. metadata/generated/schema/api/__init__.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/classification/__init__.py +1 -1
  22. metadata/generated/schema/api/classification/createClassification.py +1 -1
  23. metadata/generated/schema/api/classification/createTag.py +1 -1
  24. metadata/generated/schema/api/classification/loadTags.py +1 -1
  25. metadata/generated/schema/api/createBot.py +1 -1
  26. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  27. metadata/generated/schema/api/createType.py +1 -1
  28. metadata/generated/schema/api/data/__init__.py +1 -1
  29. metadata/generated/schema/api/data/createChart.py +1 -1
  30. metadata/generated/schema/api/data/createContainer.py +1 -1
  31. metadata/generated/schema/api/data/createDashboard.py +1 -1
  32. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  33. metadata/generated/schema/api/data/createDatabase.py +1 -1
  34. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  35. metadata/generated/schema/api/data/createGlossary.py +1 -1
  36. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  37. metadata/generated/schema/api/data/createMlModel.py +1 -1
  38. metadata/generated/schema/api/data/createPipeline.py +1 -1
  39. metadata/generated/schema/api/data/createQuery.py +6 -1
  40. metadata/generated/schema/api/data/createTable.py +1 -1
  41. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  42. metadata/generated/schema/api/data/createTopic.py +1 -1
  43. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  44. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  45. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  46. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  47. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  48. metadata/generated/schema/api/feed/__init__.py +1 -1
  49. metadata/generated/schema/api/feed/closeTask.py +1 -1
  50. metadata/generated/schema/api/feed/createPost.py +1 -1
  51. metadata/generated/schema/api/feed/createThread.py +1 -1
  52. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  53. metadata/generated/schema/api/feed/threadCount.py +1 -1
  54. metadata/generated/schema/api/lineage/__init__.py +1 -1
  55. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  56. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  57. metadata/generated/schema/api/policies/__init__.py +1 -1
  58. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  59. metadata/generated/schema/api/services/__init__.py +1 -1
  60. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  61. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  62. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  63. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  64. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  65. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  66. metadata/generated/schema/api/services/createStorageService.py +1 -1
  67. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  68. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  69. metadata/generated/schema/api/setOwner.py +1 -1
  70. metadata/generated/schema/api/teams/__init__.py +1 -1
  71. metadata/generated/schema/api/teams/createRole.py +1 -1
  72. metadata/generated/schema/api/teams/createTeam.py +1 -1
  73. metadata/generated/schema/api/teams/createUser.py +1 -1
  74. metadata/generated/schema/api/tests/__init__.py +1 -1
  75. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  76. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  77. metadata/generated/schema/api/tests/createTestCase.py +1 -1
  78. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  79. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  80. metadata/generated/schema/api/voteRequest.py +1 -1
  81. metadata/generated/schema/auth/__init__.py +1 -1
  82. metadata/generated/schema/auth/basicAuth.py +1 -1
  83. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  84. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  85. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  86. metadata/generated/schema/auth/emailRequest.py +1 -1
  87. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  88. metadata/generated/schema/auth/generateToken.py +1 -1
  89. metadata/generated/schema/auth/jwtAuth.py +1 -1
  90. metadata/generated/schema/auth/loginRequest.py +1 -1
  91. metadata/generated/schema/auth/logoutRequest.py +1 -1
  92. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  93. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  94. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  95. metadata/generated/schema/auth/refreshToken.py +1 -1
  96. metadata/generated/schema/auth/registrationRequest.py +1 -1
  97. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  98. metadata/generated/schema/auth/revokeToken.py +1 -1
  99. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  100. metadata/generated/schema/auth/ssoAuth.py +1 -1
  101. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  102. metadata/generated/schema/configuration/__init__.py +1 -1
  103. metadata/generated/schema/configuration/applicationConfiguration.py +1 -1
  104. metadata/generated/schema/configuration/authConfig.py +1 -1
  105. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  106. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  107. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  108. metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
  109. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  110. metadata/generated/schema/configuration/extensionConfiguration.py +1 -1
  111. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  112. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  113. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  114. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  115. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  116. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  117. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  118. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  119. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  120. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  121. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  122. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  123. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  124. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  125. metadata/generated/schema/dataInsight/__init__.py +1 -1
  126. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  127. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  128. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  129. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  130. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  131. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  132. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  133. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  134. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  135. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  136. metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithDescriptionByType.py +1 -1
  137. metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithOwnerByType.py +1 -1
  138. metadata/generated/schema/dataInsight/type/percentageOfServicesWithDescription.py +1 -1
  139. metadata/generated/schema/dataInsight/type/percentageOfServicesWithOwner.py +1 -1
  140. metadata/generated/schema/dataInsight/type/totalEntitiesByTier.py +1 -1
  141. metadata/generated/schema/dataInsight/type/totalEntitiesByType.py +1 -1
  142. metadata/generated/schema/email/__init__.py +1 -1
  143. metadata/generated/schema/email/emailRequest.py +1 -1
  144. metadata/generated/schema/email/smtpSettings.py +1 -1
  145. metadata/generated/schema/entity/__init__.py +1 -1
  146. metadata/generated/schema/entity/automations/__init__.py +1 -1
  147. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  148. metadata/generated/schema/entity/automations/workflow.py +1 -1
  149. metadata/generated/schema/entity/bot.py +1 -1
  150. metadata/generated/schema/entity/classification/__init__.py +1 -1
  151. metadata/generated/schema/entity/classification/classification.py +1 -1
  152. metadata/generated/schema/entity/classification/tag.py +1 -1
  153. metadata/generated/schema/entity/data/__init__.py +1 -1
  154. metadata/generated/schema/entity/data/chart.py +1 -1
  155. metadata/generated/schema/entity/data/container.py +1 -1
  156. metadata/generated/schema/entity/data/dashboard.py +1 -1
  157. metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
  158. metadata/generated/schema/entity/data/database.py +1 -1
  159. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  160. metadata/generated/schema/entity/data/glossary.py +1 -1
  161. metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
  162. metadata/generated/schema/entity/data/metrics.py +1 -1
  163. metadata/generated/schema/entity/data/mlmodel.py +1 -1
  164. metadata/generated/schema/entity/data/pipeline.py +1 -1
  165. metadata/generated/schema/entity/data/query.py +6 -1
  166. metadata/generated/schema/entity/data/report.py +1 -1
  167. metadata/generated/schema/entity/data/table.py +1 -1
  168. metadata/generated/schema/entity/data/topic.py +1 -1
  169. metadata/generated/schema/entity/events/__init__.py +1 -1
  170. metadata/generated/schema/entity/events/webhook.py +1 -1
  171. metadata/generated/schema/entity/feed/__init__.py +1 -1
  172. metadata/generated/schema/entity/feed/thread.py +1 -1
  173. metadata/generated/schema/entity/policies/__init__.py +1 -1
  174. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  175. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
  176. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  177. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  178. metadata/generated/schema/entity/policies/filters.py +1 -1
  179. metadata/generated/schema/entity/policies/policy.py +1 -1
  180. metadata/generated/schema/entity/services/__init__.py +1 -1
  181. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  182. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  183. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  184. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  185. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  186. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  187. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  188. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  189. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  190. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  191. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  192. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  193. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  194. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  195. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  196. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  197. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  198. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
  199. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  200. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  201. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  202. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  203. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  204. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  205. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  206. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  207. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  208. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  209. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  210. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  211. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  212. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  213. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  214. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  215. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  216. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  217. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +2 -2
  218. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  219. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  220. metadata/generated/schema/entity/services/connections/database/mongoDB/__init__.py +1 -1
  221. metadata/generated/schema/entity/services/connections/database/mongoDB/mongoDBValues.py +1 -1
  222. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  223. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  224. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
  225. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  226. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  227. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  228. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  229. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  230. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  231. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  232. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  233. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  234. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  235. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  236. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  237. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  238. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  239. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  240. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  241. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  242. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  243. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  244. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  245. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  246. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  247. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  248. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  249. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  250. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  251. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  252. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  253. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  254. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  255. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  256. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  257. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  258. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  259. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  260. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  261. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  262. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  263. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  264. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  265. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  266. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  267. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  268. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  269. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  270. metadata/generated/schema/entity/services/connections/storage/adlsConection.py +1 -1
  271. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  272. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  273. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  274. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  275. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  276. metadata/generated/schema/entity/services/dashboardService.py +1 -1
  277. metadata/generated/schema/entity/services/databaseService.py +1 -1
  278. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  279. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
  280. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  281. metadata/generated/schema/entity/services/messagingService.py +1 -1
  282. metadata/generated/schema/entity/services/metadataService.py +1 -1
  283. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  284. metadata/generated/schema/entity/services/pipelineService.py +1 -1
  285. metadata/generated/schema/entity/services/serviceType.py +1 -1
  286. metadata/generated/schema/entity/services/storageService.py +1 -1
  287. metadata/generated/schema/entity/teams/__init__.py +1 -1
  288. metadata/generated/schema/entity/teams/role.py +1 -1
  289. metadata/generated/schema/entity/teams/team.py +1 -1
  290. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  291. metadata/generated/schema/entity/teams/user.py +1 -1
  292. metadata/generated/schema/entity/type.py +1 -1
  293. metadata/generated/schema/entity/utils/__init__.py +1 -1
  294. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  295. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  296. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  297. metadata/generated/schema/events/__init__.py +1 -1
  298. metadata/generated/schema/events/api/__init__.py +1 -1
  299. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  300. metadata/generated/schema/events/dataInsightAlertConfig.py +1 -1
  301. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  302. metadata/generated/schema/events/entitySpelFilters.py +1 -1
  303. metadata/generated/schema/events/eventFilterRule.py +1 -1
  304. metadata/generated/schema/events/eventSubscription.py +29 -29
  305. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  306. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  307. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  308. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  309. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  310. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  311. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  312. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  313. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  314. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  315. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  316. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  317. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  318. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  319. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  320. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  321. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  322. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  323. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  324. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  325. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  326. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  327. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  328. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  329. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  330. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  331. metadata/generated/schema/monitoring/__init__.py +1 -1
  332. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  333. metadata/generated/schema/security/__init__.py +1 -1
  334. metadata/generated/schema/security/client/__init__.py +1 -1
  335. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  336. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  337. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  338. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  339. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  340. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  341. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  342. metadata/generated/schema/security/credentials/__init__.py +1 -1
  343. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  344. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  345. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  346. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  347. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  348. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  349. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  350. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  351. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  352. metadata/generated/schema/security/secrets/__init__.py +1 -1
  353. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  354. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  355. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  356. metadata/generated/schema/security/securityConfiguration.py +1 -1
  357. metadata/generated/schema/security/ssl/__init__.py +1 -1
  358. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  359. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  360. metadata/generated/schema/settings/__init__.py +1 -1
  361. metadata/generated/schema/settings/settings.py +1 -1
  362. metadata/generated/schema/system/__init__.py +1 -1
  363. metadata/generated/schema/system/eventPublisherJob.py +1 -1
  364. metadata/generated/schema/system/sqlMigrationScript.py +1 -1
  365. metadata/generated/schema/tests/__init__.py +1 -1
  366. metadata/generated/schema/tests/basic.py +7 -7
  367. metadata/generated/schema/tests/customMetric.py +1 -1
  368. metadata/generated/schema/tests/testCase.py +1 -1
  369. metadata/generated/schema/tests/testDefinition.py +1 -1
  370. metadata/generated/schema/tests/testSuite.py +1 -1
  371. metadata/generated/schema/type/__init__.py +1 -1
  372. metadata/generated/schema/type/auditLog.py +1 -1
  373. metadata/generated/schema/type/basic.py +1 -1
  374. metadata/generated/schema/type/changeEvent.py +1 -1
  375. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  376. metadata/generated/schema/type/csvDocumentation.py +1 -1
  377. metadata/generated/schema/type/csvErrorType.py +1 -1
  378. metadata/generated/schema/type/csvFile.py +1 -1
  379. metadata/generated/schema/type/csvImportResult.py +1 -1
  380. metadata/generated/schema/type/dailyCount.py +1 -1
  381. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  382. metadata/generated/schema/type/entityHistory.py +1 -1
  383. metadata/generated/schema/type/entityLineage.py +1 -1
  384. metadata/generated/schema/type/entityReference.py +1 -1
  385. metadata/generated/schema/type/entityReferenceList.py +1 -1
  386. metadata/generated/schema/type/entityRelationship.py +1 -1
  387. metadata/generated/schema/type/entityUsage.py +1 -1
  388. metadata/generated/schema/type/filterPattern.py +1 -1
  389. metadata/generated/schema/type/function.py +1 -1
  390. metadata/generated/schema/type/include.py +1 -1
  391. metadata/generated/schema/type/jdbcConnection.py +1 -1
  392. metadata/generated/schema/type/paging.py +1 -1
  393. metadata/generated/schema/type/profile.py +1 -1
  394. metadata/generated/schema/type/queryParserData.py +1 -1
  395. metadata/generated/schema/type/reaction.py +1 -1
  396. metadata/generated/schema/type/schedule.py +1 -1
  397. metadata/generated/schema/type/schema.py +1 -1
  398. metadata/generated/schema/type/tableQuery.py +1 -1
  399. metadata/generated/schema/type/tableUsageCount.py +1 -1
  400. metadata/generated/schema/type/tagLabel.py +1 -1
  401. metadata/generated/schema/type/usageDetails.py +1 -1
  402. metadata/generated/schema/type/usageRequest.py +1 -1
  403. metadata/generated/schema/type/votes.py +1 -1
  404. metadata/ingestion/lineage/sql_lineage.py +30 -7
  405. metadata/ingestion/ometa/mixins/data_insight_mixin.py +12 -1
  406. metadata/ingestion/ometa/mixins/query_mixin.py +40 -4
  407. metadata/ingestion/ometa/mixins/table_mixin.py +0 -5
  408. metadata/ingestion/processor/query_parser.py +6 -6
  409. metadata/ingestion/source/dashboard/tableau/models.py +0 -1
  410. metadata/ingestion/source/dashboard/tableau/queries.py +0 -1
  411. metadata/ingestion/source/database/bigquery/connection.py +27 -38
  412. metadata/ingestion/source/database/bigquery/helper.py +66 -0
  413. metadata/ingestion/source/database/bigquery/metadata.py +69 -64
  414. metadata/ingestion/source/database/bigquery/queries.py +2 -2
  415. metadata/ingestion/source/database/bigquery/query_parser.py +19 -1
  416. metadata/ingestion/source/database/common_db_source.py +0 -3
  417. metadata/ingestion/source/database/database_service.py +27 -3
  418. metadata/ingestion/source/database/lineage_source.py +21 -18
  419. metadata/ingestion/source/database/query_parser_source.py +3 -0
  420. metadata/ingestion/source/database/sample_data.py +17 -9
  421. metadata/ingestion/source/database/usage_source.py +30 -29
  422. metadata/ingestion/stage/table_usage.py +42 -34
  423. metadata/profiler/interface/pandas/profiler_interface.py +24 -41
  424. metadata/profiler/interface/profiler_interface.py +62 -2
  425. metadata/profiler/interface/profiler_interface_factory.py +9 -0
  426. metadata/profiler/interface/sqlalchemy/profiler_interface.py +19 -36
  427. metadata/profiler/interface/sqlalchemy/single_store/__init__.py +0 -0
  428. metadata/profiler/interface/sqlalchemy/single_store/profiler_interface.py +86 -0
  429. metadata/profiler/metrics/system/queries/redshift.py +3 -5
  430. metadata/profiler/metrics/system/system.py +0 -4
  431. metadata/profiler/metrics/window/first_quartile.py +4 -4
  432. metadata/profiler/metrics/window/median.py +4 -4
  433. metadata/profiler/metrics/window/percentille_mixin.py +9 -0
  434. metadata/profiler/metrics/window/third_quartile.py +4 -4
  435. metadata/profiler/processor/core.py +1 -1
  436. metadata/profiler/source/single_store/functions/median.py +17 -0
  437. metadata/profiler/source/single_store/metrics/window/first_quartile.py +10 -0
  438. metadata/profiler/source/single_store/metrics/window/median.py +10 -0
  439. metadata/profiler/source/single_store/metrics/window/third_quartile.py +10 -0
  440. {openmetadata_ingestion-1.1.4.0.dist-info → openmetadata_ingestion-1.1.6.0.dist-info}/METADATA +176 -176
  441. {openmetadata_ingestion-1.1.4.0.dist-info → openmetadata_ingestion-1.1.6.0.dist-info}/RECORD +445 -437
  442. {openmetadata_ingestion-1.1.4.0.dist-info → openmetadata_ingestion-1.1.6.0.dist-info}/LICENSE +0 -0
  443. {openmetadata_ingestion-1.1.4.0.dist-info → openmetadata_ingestion-1.1.6.0.dist-info}/WHEEL +0 -0
  444. {openmetadata_ingestion-1.1.4.0.dist-info → openmetadata_ingestion-1.1.6.0.dist-info}/entry_points.txt +0 -0
  445. {openmetadata_ingestion-1.1.4.0.dist-info → openmetadata_ingestion-1.1.6.0.dist-info}/top_level.txt +0 -0
@@ -8,6 +8,7 @@
8
8
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
9
  # See the License for the specific language governing permissions and
10
10
  # limitations under the License.
11
+ # pylint: disable=arguments-differ
11
12
 
12
13
  """
13
14
  Interfaces with database for all database engine
@@ -40,7 +41,6 @@ from metadata.profiler.orm.functions.table_metric_construct import (
40
41
  from metadata.profiler.processor.runner import QueryRunner
41
42
  from metadata.profiler.processor.sampler.sampler_factory import sampler_factory_
42
43
  from metadata.utils.custom_thread_pool import CustomThreadPoolExecutor
43
- from metadata.utils.dispatch import valuedispatch
44
44
  from metadata.utils.logger import profiler_interface_registry_logger
45
45
 
46
46
  logger = profiler_interface_registry_logger()
@@ -153,18 +153,8 @@ class SQAProfilerInterface(ProfilerInterface, SQAInterfaceMixin):
153
153
  handle_query_exception(msg, exc, session)
154
154
  return None
155
155
 
156
- @valuedispatch
157
- def _get_metrics(self, *args, **kwargs):
158
- """Generic getter method for metrics. To be used with
159
- specific dispatch methods
160
- """
161
- logger.warning("Could not get metric. No function registered.")
162
-
163
- # pylint: disable=unused-argument
164
- @_get_metrics.register(MetricTypes.Table.value)
165
- def _(
156
+ def _compute_table_metrics(
166
157
  self,
167
- metric_type: str,
168
158
  metrics: List[Metrics],
169
159
  runner: QueryRunner,
170
160
  session,
@@ -180,7 +170,6 @@ class SQAProfilerInterface(ProfilerInterface, SQAInterfaceMixin):
180
170
  dictionnary of results
181
171
  """
182
172
  # pylint: disable=protected-access
183
-
184
173
  try:
185
174
  dialect = runner._session.get_bind().dialect.name
186
175
  row = table_metric_construct_factory.construct(
@@ -201,15 +190,12 @@ class SQAProfilerInterface(ProfilerInterface, SQAInterfaceMixin):
201
190
  session.rollback()
202
191
  raise RuntimeError(exc)
203
192
 
204
- # pylint: disable=unused-argument
205
- @_get_metrics.register(MetricTypes.Static.value)
206
- def _(
193
+ def _compute_static_metrics(
207
194
  self,
208
- metric_type: str,
209
195
  metrics: List[Metrics],
210
196
  runner: QueryRunner,
197
+ column,
211
198
  session,
212
- column: Column,
213
199
  *args,
214
200
  **kwargs,
215
201
  ):
@@ -247,16 +233,15 @@ class SQAProfilerInterface(ProfilerInterface, SQAInterfaceMixin):
247
233
  handle_query_exception(msg, exc, session)
248
234
  return None
249
235
 
250
- # pylint: disable=unused-argument
251
- @_get_metrics.register(MetricTypes.Query.value)
252
- def _(
236
+ def _compute_query_metrics(
253
237
  self,
254
- metric_type: str,
255
238
  metric: Metrics,
256
239
  runner: QueryRunner,
240
+ column,
257
241
  session,
258
- column: Column,
259
242
  sample,
243
+ *args,
244
+ **kwargs,
260
245
  ):
261
246
  """Given a list of metrics, compute the given results
262
247
  and returns the values
@@ -267,6 +252,7 @@ class SQAProfilerInterface(ProfilerInterface, SQAInterfaceMixin):
267
252
  Returns:
268
253
  dictionnary of results
269
254
  """
255
+
270
256
  try:
271
257
  col_metric = metric(column)
272
258
  metric_query = col_metric.query(sample=sample, session=session)
@@ -284,15 +270,12 @@ class SQAProfilerInterface(ProfilerInterface, SQAInterfaceMixin):
284
270
  handle_query_exception(msg, exc, session)
285
271
  return None
286
272
 
287
- # pylint: disable=unused-argument
288
- @_get_metrics.register(MetricTypes.Window.value)
289
- def _(
273
+ def _compute_window_metrics(
290
274
  self,
291
- metric_type: str,
292
275
  metrics: List[Metrics],
293
276
  runner: QueryRunner,
277
+ column,
294
278
  session,
295
- column: Column,
296
279
  *args,
297
280
  **kwargs,
298
281
  ):
@@ -305,6 +288,7 @@ class SQAProfilerInterface(ProfilerInterface, SQAInterfaceMixin):
305
288
  Returns:
306
289
  dictionnary of results
307
290
  """
291
+
308
292
  if not metrics:
309
293
  return None
310
294
  try:
@@ -327,11 +311,9 @@ class SQAProfilerInterface(ProfilerInterface, SQAInterfaceMixin):
327
311
  return dict(row)
328
312
  return None
329
313
 
330
- @_get_metrics.register(MetricTypes.System.value)
331
- def _(
314
+ def _compute_system_metrics(
332
315
  self,
333
- metric_type: str,
334
- metric: Metrics,
316
+ metrics: Metrics,
335
317
  runner: QueryRunner,
336
318
  session,
337
319
  *args,
@@ -348,7 +330,7 @@ class SQAProfilerInterface(ProfilerInterface, SQAInterfaceMixin):
348
330
  dictionnary of results
349
331
  """
350
332
  try:
351
- rows = metric().sql(session, conn_config=self.service_connection_config)
333
+ rows = metrics().sql(session, conn_config=self.service_connection_config)
352
334
  return rows
353
335
  except Exception as exc:
354
336
  msg = f"Error trying to compute profile for {runner.table.__tablename__}: {exc}"
@@ -412,8 +394,7 @@ class SQAProfilerInterface(ProfilerInterface, SQAInterfaceMixin):
412
394
  )
413
395
 
414
396
  try:
415
- row = self._get_metrics(
416
- metric_type.value,
397
+ row = self._get_metric_fn[metric_type.value](
417
398
  metrics,
418
399
  runner=runner,
419
400
  session=session,
@@ -471,7 +452,9 @@ class SQAProfilerInterface(ProfilerInterface, SQAInterfaceMixin):
471
452
  profile_results["columns"][column].update(
472
453
  {
473
454
  "name": column,
474
- "timestamp": datetime.now(tz=timezone.utc).timestamp(),
455
+ "timestamp": int(
456
+ datetime.now(tz=timezone.utc).timestamp() * 1000
457
+ ),
475
458
  **profile,
476
459
  }
477
460
  )
@@ -0,0 +1,86 @@
1
+ # Copyright 2021 Collate
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+
12
+ """
13
+ Interfaces with database for all database engine
14
+ supporting sqlalchemy abstraction layer
15
+ """
16
+
17
+ from typing import List
18
+
19
+ from sqlalchemy.exc import ProgrammingError
20
+
21
+ from metadata.profiler.interface.sqlalchemy.profiler_interface import (
22
+ SQAProfilerInterface,
23
+ handle_query_exception,
24
+ )
25
+ from metadata.profiler.metrics.registry import Metrics
26
+ from metadata.profiler.processor.runner import QueryRunner
27
+ from metadata.profiler.source.single_store.metrics.window.first_quartile import (
28
+ SingleStoreFirstQuartile,
29
+ )
30
+ from metadata.profiler.source.single_store.metrics.window.median import (
31
+ SingleStoreMedian,
32
+ )
33
+ from metadata.profiler.source.single_store.metrics.window.third_quartile import (
34
+ SingleStoreThirdQuartile,
35
+ )
36
+ from metadata.utils.logger import profiler_interface_registry_logger
37
+
38
+ logger = profiler_interface_registry_logger()
39
+
40
+
41
+ class SingleStoreProfilerInterface(SQAProfilerInterface):
42
+ """
43
+ Interface to interact with registry supporting
44
+ sqlalchemy.
45
+ """
46
+
47
+ def _compute_window_metrics(
48
+ self,
49
+ metrics: List[Metrics],
50
+ runner: QueryRunner,
51
+ *args,
52
+ **kwargs,
53
+ ):
54
+ """Given a list of metrics, compute the given results
55
+ and returns the values
56
+
57
+ Args:
58
+ column: the column to compute the metrics against
59
+ metrics: list of metrics to compute
60
+ Returns:
61
+ dictionnary of results
62
+ """
63
+ session = kwargs.get("session")
64
+ column = kwargs.get("column")
65
+
66
+ if not metrics:
67
+ return None
68
+ try:
69
+ # we patch the metrics at runtime to use the SingleStore specific functions
70
+ # as we can't compile the query based on the dialect as it return `mysql`
71
+ metrics = [SingleStoreFirstQuartile, SingleStoreMedian, SingleStoreThirdQuartile] # type: ignore
72
+ row = runner.select_first_from_sample(
73
+ *[metric(column).fn() for metric in metrics],
74
+ )
75
+ except ProgrammingError:
76
+ logger.info(
77
+ f"Skipping window metrics for {runner.table.__tablename__}.{column.name} due to overflow"
78
+ )
79
+ return None
80
+
81
+ except Exception as exc:
82
+ msg = f"Error trying to compute profile for {runner.table.__tablename__}.{column.name}: {exc}"
83
+ handle_query_exception(msg, exc, session)
84
+ if row:
85
+ return dict(row)
86
+ return None
@@ -35,19 +35,17 @@ STL_QUERY = """
35
35
  sti."database",
36
36
  sti."schema",
37
37
  sti."table",
38
- sq.text,
39
38
  DATE_TRUNC('second', data.starttime) AS starttime
40
39
  FROM
41
40
  data
42
41
  INNER JOIN pg_catalog.svv_table_info sti ON data.tbl = sti.table_id
43
- INNER JOIN pg_catalog.stl_querytext sq ON data.query = sq.query
44
42
  where
45
43
  sti."database" = '{database}' AND
46
44
  sti."schema" = '{schema}' AND
47
45
  "rows" != 0 AND
48
46
  DATE(data.starttime) >= CURRENT_DATE - 1
49
- GROUP BY 2,3,4,5,6
50
- ORDER BY 6 DESC
47
+ GROUP BY 2,3,4,5
48
+ ORDER BY 5 DESC
51
49
  """
52
50
 
53
51
 
@@ -73,7 +71,7 @@ def get_query_results(
73
71
  database_name=row.database,
74
72
  schema_name=row.schema,
75
73
  table_name=row.table,
76
- query_text=row.text,
74
+ query_text=None,
77
75
  query_type=operation,
78
76
  timestamp=row.starttime,
79
77
  rows=row.rows,
@@ -113,10 +113,6 @@ def _(
113
113
  dataset_id = table.__table_args__["schema"] # type: ignore
114
114
 
115
115
  metric_results: List[Dict] = []
116
- # QueryResult = namedtuple(
117
- # "QueryResult",
118
- # "query_type,timestamp,destination_table,dml_statistics",
119
- # )
120
116
 
121
117
  jobs = get_value_from_cache(
122
118
  SYSTEM_QUERY_RESULT_CACHE, f"{Dialects.BigQuery}.{project_id}.{dataset_id}.jobs"
@@ -19,15 +19,15 @@ from typing import List, cast
19
19
  from sqlalchemy import column
20
20
 
21
21
  from metadata.profiler.metrics.core import StaticMetric, _label
22
+ from metadata.profiler.metrics.window.percentille_mixin import PercentilMixin
22
23
  from metadata.profiler.orm.functions.length import LenFn
23
- from metadata.profiler.orm.functions.median import MedianFn
24
24
  from metadata.profiler.orm.registry import is_concatenable, is_quantifiable
25
25
  from metadata.utils.logger import profiler_logger
26
26
 
27
27
  logger = profiler_logger()
28
28
 
29
29
 
30
- class FirstQuartile(StaticMetric):
30
+ class FirstQuartile(StaticMetric, PercentilMixin):
31
31
  """
32
32
  First Quartile Metric
33
33
 
@@ -53,14 +53,14 @@ class FirstQuartile(StaticMetric):
53
53
  """sqlalchemy function"""
54
54
  if is_quantifiable(self.col.type):
55
55
  # col fullname is only needed for MySQL and SQLite
56
- return MedianFn(
56
+ return self._compute_sqa_fn(
57
57
  column(self.col.name, self.col.type),
58
58
  self.col.table.fullname if self.col.table is not None else None,
59
59
  0.25,
60
60
  )
61
61
 
62
62
  if is_concatenable(self.col.type):
63
- return MedianFn(
63
+ return self._compute_sqa_fn(
64
64
  LenFn(column(self.col.name, self.col.type)),
65
65
  self.col.table.fullname if self.col.table is not None else None,
66
66
  0.25,
@@ -19,15 +19,15 @@ from typing import List, cast
19
19
  from sqlalchemy import column
20
20
 
21
21
  from metadata.profiler.metrics.core import StaticMetric, _label
22
+ from metadata.profiler.metrics.window.percentille_mixin import PercentilMixin
22
23
  from metadata.profiler.orm.functions.length import LenFn
23
- from metadata.profiler.orm.functions.median import MedianFn
24
24
  from metadata.profiler.orm.registry import is_concatenable, is_quantifiable
25
25
  from metadata.utils.logger import profiler_logger
26
26
 
27
27
  logger = profiler_logger()
28
28
 
29
29
 
30
- class Median(StaticMetric):
30
+ class Median(StaticMetric, PercentilMixin):
31
31
  """
32
32
  Median Metric
33
33
 
@@ -53,14 +53,14 @@ class Median(StaticMetric):
53
53
  """sqlalchemy function"""
54
54
  if is_quantifiable(self.col.type):
55
55
  # col fullname is only needed for MySQL and SQLite
56
- return MedianFn(
56
+ return self._compute_sqa_fn(
57
57
  column(self.col.name, self.col.type),
58
58
  self.col.table.fullname if self.col.table is not None else None,
59
59
  0.5,
60
60
  )
61
61
 
62
62
  if is_concatenable(self.col.type):
63
- return MedianFn(
63
+ return self._compute_sqa_fn(
64
64
  LenFn(column(self.col.name, self.col.type)),
65
65
  self.col.table.fullname if self.col.table is not None else None,
66
66
  0.5,
@@ -0,0 +1,9 @@
1
+ """function calls shared accross all percentile metrics"""
2
+
3
+ from metadata.profiler.orm.functions.median import MedianFn
4
+
5
+
6
+ class PercentilMixin:
7
+ def _compute_sqa_fn(self, column, table, percentile):
8
+ """Generic method to compute the quartile using sqlalchemy"""
9
+ return MedianFn(column, table, percentile)
@@ -19,15 +19,15 @@ from typing import List, cast
19
19
  from sqlalchemy import column
20
20
 
21
21
  from metadata.profiler.metrics.core import StaticMetric, _label
22
+ from metadata.profiler.metrics.window.percentille_mixin import PercentilMixin
22
23
  from metadata.profiler.orm.functions.length import LenFn
23
- from metadata.profiler.orm.functions.median import MedianFn
24
24
  from metadata.profiler.orm.registry import is_concatenable, is_quantifiable
25
25
  from metadata.utils.logger import profiler_logger
26
26
 
27
27
  logger = profiler_logger()
28
28
 
29
29
 
30
- class ThirdQuartile(StaticMetric):
30
+ class ThirdQuartile(StaticMetric, PercentilMixin):
31
31
  """
32
32
  Third Quartile Metric
33
33
 
@@ -53,14 +53,14 @@ class ThirdQuartile(StaticMetric):
53
53
  """sqlalchemy function"""
54
54
  if is_quantifiable(self.col.type):
55
55
  # col fullname is only needed for MySQL and SQLite
56
- return MedianFn(
56
+ return self._compute_sqa_fn(
57
57
  column(self.col.name, self.col.type),
58
58
  self.col.table.fullname if self.col.table is not None else None,
59
59
  0.75,
60
60
  )
61
61
 
62
62
  if is_concatenable(self.col.type):
63
- return MedianFn(
63
+ return self._compute_sqa_fn(
64
64
  LenFn(column(self.col.name, self.col.type)),
65
65
  self.col.table.fullname if self.col.table is not None else None,
66
66
  0.75,
@@ -92,7 +92,7 @@ class Profiler(Generic[TMetric]):
92
92
  self.include_columns = include_columns
93
93
  self.exclude_columns = exclude_columns
94
94
  self._metrics = metrics
95
- self._profile_date = datetime.now(tz=timezone.utc).timestamp()
95
+ self._profile_date = int(datetime.now(tz=timezone.utc).timestamp() * 1000)
96
96
  self.profile_sample_config = self.profiler_interface.profile_sample_config
97
97
 
98
98
  self.validate_composed_metric()
@@ -0,0 +1,17 @@
1
+ """Median function for single store"""
2
+
3
+ from sqlalchemy.ext.compiler import compiles
4
+ from sqlalchemy.sql.functions import FunctionElement
5
+
6
+ from metadata.profiler.metrics.core import CACHE
7
+
8
+
9
+ class SingleStoreMedianFn(FunctionElement):
10
+ inherit_cache = CACHE
11
+
12
+
13
+ @compiles(SingleStoreMedianFn)
14
+ def _(elements, compiler, **kwargs): # pylint: disable=unused-argument
15
+ col = compiler.process(elements.clauses.clauses[0])
16
+ percentile = elements.clauses.clauses[2].value
17
+ return f"approx_percentile({col}, {percentile:.2f})"
@@ -0,0 +1,10 @@
1
+ """Override first quartile metric definition for SingleStore"""
2
+
3
+ from metadata.profiler.metrics.window.first_quartile import FirstQuartile
4
+ from metadata.profiler.source.single_store.functions.median import SingleStoreMedianFn
5
+
6
+
7
+ class SingleStoreFirstQuartile(FirstQuartile):
8
+ def _compute_sqa_fn(self, column, table, percentile):
9
+ """Generic method to compute the quartile using sqlalchemy"""
10
+ return SingleStoreMedianFn(column, table, percentile)
@@ -0,0 +1,10 @@
1
+ """Override first quartile metric definition for SingleStore"""
2
+
3
+ from metadata.profiler.metrics.window.median import Median
4
+ from metadata.profiler.source.single_store.functions.median import SingleStoreMedianFn
5
+
6
+
7
+ class SingleStoreMedian(Median):
8
+ def _compute_sqa_fn(self, column, table, percentile):
9
+ """Generic method to compute the quartile using sqlalchemy"""
10
+ return SingleStoreMedianFn(column, table, percentile)
@@ -0,0 +1,10 @@
1
+ """Override first quartile metric definition for SingleStore"""
2
+
3
+ from metadata.profiler.metrics.window.third_quartile import ThirdQuartile
4
+ from metadata.profiler.source.single_store.functions.median import SingleStoreMedianFn
5
+
6
+
7
+ class SingleStoreThirdQuartile(ThirdQuartile):
8
+ def _compute_sqa_fn(self, column, table, percentile):
9
+ """Generic method to compute the quartile using sqlalchemy"""
10
+ return SingleStoreMedianFn(column, table, percentile)