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.
- metadata/data_insight/api/workflow.py +57 -1
- metadata/data_quality/interface/pandas/pandas_test_suite_interface.py +1 -1
- metadata/data_quality/interface/sqlalchemy/sqa_test_suite_interface.py +1 -1
- metadata/generated/schema/analytics/__init__.py +1 -1
- metadata/generated/schema/analytics/basic.py +1 -1
- metadata/generated/schema/analytics/reportData.py +1 -1
- metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
- metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
- metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
- metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
- metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
- metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
- metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
- metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
- metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
- metadata/generated/schema/api/__init__.py +1 -1
- metadata/generated/schema/api/analytics/__init__.py +1 -1
- metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
- metadata/generated/schema/api/automations/__init__.py +1 -1
- metadata/generated/schema/api/automations/createWorkflow.py +1 -1
- metadata/generated/schema/api/classification/__init__.py +1 -1
- metadata/generated/schema/api/classification/createClassification.py +1 -1
- metadata/generated/schema/api/classification/createTag.py +1 -1
- metadata/generated/schema/api/classification/loadTags.py +1 -1
- metadata/generated/schema/api/createBot.py +1 -1
- metadata/generated/schema/api/createEventPublisherJob.py +1 -1
- metadata/generated/schema/api/createType.py +1 -1
- metadata/generated/schema/api/data/__init__.py +1 -1
- metadata/generated/schema/api/data/createChart.py +1 -1
- metadata/generated/schema/api/data/createContainer.py +1 -1
- metadata/generated/schema/api/data/createDashboard.py +1 -1
- metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
- metadata/generated/schema/api/data/createDatabase.py +1 -1
- metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
- metadata/generated/schema/api/data/createGlossary.py +1 -1
- metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
- metadata/generated/schema/api/data/createMlModel.py +1 -1
- metadata/generated/schema/api/data/createPipeline.py +1 -1
- metadata/generated/schema/api/data/createQuery.py +6 -1
- metadata/generated/schema/api/data/createTable.py +1 -1
- metadata/generated/schema/api/data/createTableProfile.py +1 -1
- metadata/generated/schema/api/data/createTopic.py +1 -1
- metadata/generated/schema/api/data/restoreEntity.py +1 -1
- metadata/generated/schema/api/dataInsight/__init__.py +1 -1
- metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
- metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
- metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
- metadata/generated/schema/api/feed/__init__.py +1 -1
- metadata/generated/schema/api/feed/closeTask.py +1 -1
- metadata/generated/schema/api/feed/createPost.py +1 -1
- metadata/generated/schema/api/feed/createThread.py +1 -1
- metadata/generated/schema/api/feed/resolveTask.py +1 -1
- metadata/generated/schema/api/feed/threadCount.py +1 -1
- metadata/generated/schema/api/lineage/__init__.py +1 -1
- metadata/generated/schema/api/lineage/addLineage.py +1 -1
- metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
- metadata/generated/schema/api/policies/__init__.py +1 -1
- metadata/generated/schema/api/policies/createPolicy.py +1 -1
- metadata/generated/schema/api/services/__init__.py +1 -1
- metadata/generated/schema/api/services/createDashboardService.py +1 -1
- metadata/generated/schema/api/services/createDatabaseService.py +1 -1
- metadata/generated/schema/api/services/createMessagingService.py +1 -1
- metadata/generated/schema/api/services/createMetadataService.py +1 -1
- metadata/generated/schema/api/services/createMlModelService.py +1 -1
- metadata/generated/schema/api/services/createPipelineService.py +1 -1
- metadata/generated/schema/api/services/createStorageService.py +1 -1
- metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
- metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
- metadata/generated/schema/api/setOwner.py +1 -1
- metadata/generated/schema/api/teams/__init__.py +1 -1
- metadata/generated/schema/api/teams/createRole.py +1 -1
- metadata/generated/schema/api/teams/createTeam.py +1 -1
- metadata/generated/schema/api/teams/createUser.py +1 -1
- metadata/generated/schema/api/tests/__init__.py +1 -1
- metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
- metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
- metadata/generated/schema/api/tests/createTestCase.py +1 -1
- metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
- metadata/generated/schema/api/tests/createTestSuite.py +1 -1
- metadata/generated/schema/api/voteRequest.py +1 -1
- metadata/generated/schema/auth/__init__.py +1 -1
- metadata/generated/schema/auth/basicAuth.py +1 -1
- metadata/generated/schema/auth/basicLoginRequest.py +1 -1
- metadata/generated/schema/auth/changePasswordRequest.py +1 -1
- metadata/generated/schema/auth/createPersonalToken.py +1 -1
- metadata/generated/schema/auth/emailRequest.py +1 -1
- metadata/generated/schema/auth/emailVerificationToken.py +1 -1
- metadata/generated/schema/auth/generateToken.py +1 -1
- metadata/generated/schema/auth/jwtAuth.py +1 -1
- metadata/generated/schema/auth/loginRequest.py +1 -1
- metadata/generated/schema/auth/logoutRequest.py +1 -1
- metadata/generated/schema/auth/passwordResetRequest.py +1 -1
- metadata/generated/schema/auth/passwordResetToken.py +1 -1
- metadata/generated/schema/auth/personalAccessToken.py +1 -1
- metadata/generated/schema/auth/refreshToken.py +1 -1
- metadata/generated/schema/auth/registrationRequest.py +1 -1
- metadata/generated/schema/auth/revokePersonalToken.py +1 -1
- metadata/generated/schema/auth/revokeToken.py +1 -1
- metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
- metadata/generated/schema/auth/ssoAuth.py +1 -1
- metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
- metadata/generated/schema/configuration/__init__.py +1 -1
- metadata/generated/schema/configuration/applicationConfiguration.py +1 -1
- metadata/generated/schema/configuration/authConfig.py +1 -1
- metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
- metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
- metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
- metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
- metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
- metadata/generated/schema/configuration/extensionConfiguration.py +1 -1
- metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
- metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
- metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
- metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
- metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
- metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
- metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
- metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
- metadata/generated/schema/dataInsight/__init__.py +1 -1
- metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
- metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
- metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
- metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
- metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
- metadata/generated/schema/dataInsight/type/__init__.py +1 -1
- metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
- metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
- metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
- metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
- metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithDescriptionByType.py +1 -1
- metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithOwnerByType.py +1 -1
- metadata/generated/schema/dataInsight/type/percentageOfServicesWithDescription.py +1 -1
- metadata/generated/schema/dataInsight/type/percentageOfServicesWithOwner.py +1 -1
- metadata/generated/schema/dataInsight/type/totalEntitiesByTier.py +1 -1
- metadata/generated/schema/dataInsight/type/totalEntitiesByType.py +1 -1
- metadata/generated/schema/email/__init__.py +1 -1
- metadata/generated/schema/email/emailRequest.py +1 -1
- metadata/generated/schema/email/smtpSettings.py +1 -1
- metadata/generated/schema/entity/__init__.py +1 -1
- metadata/generated/schema/entity/automations/__init__.py +1 -1
- metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
- metadata/generated/schema/entity/automations/workflow.py +1 -1
- metadata/generated/schema/entity/bot.py +1 -1
- metadata/generated/schema/entity/classification/__init__.py +1 -1
- metadata/generated/schema/entity/classification/classification.py +1 -1
- metadata/generated/schema/entity/classification/tag.py +1 -1
- metadata/generated/schema/entity/data/__init__.py +1 -1
- metadata/generated/schema/entity/data/chart.py +1 -1
- metadata/generated/schema/entity/data/container.py +1 -1
- metadata/generated/schema/entity/data/dashboard.py +1 -1
- metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
- metadata/generated/schema/entity/data/database.py +1 -1
- metadata/generated/schema/entity/data/databaseSchema.py +1 -1
- metadata/generated/schema/entity/data/glossary.py +1 -1
- metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
- metadata/generated/schema/entity/data/metrics.py +1 -1
- metadata/generated/schema/entity/data/mlmodel.py +1 -1
- metadata/generated/schema/entity/data/pipeline.py +1 -1
- metadata/generated/schema/entity/data/query.py +6 -1
- metadata/generated/schema/entity/data/report.py +1 -1
- metadata/generated/schema/entity/data/table.py +1 -1
- metadata/generated/schema/entity/data/topic.py +1 -1
- metadata/generated/schema/entity/events/__init__.py +1 -1
- metadata/generated/schema/entity/events/webhook.py +1 -1
- metadata/generated/schema/entity/feed/__init__.py +1 -1
- metadata/generated/schema/entity/feed/thread.py +1 -1
- metadata/generated/schema/entity/policies/__init__.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
- metadata/generated/schema/entity/policies/filters.py +1 -1
- metadata/generated/schema/entity/policies/policy.py +1 -1
- metadata/generated/schema/entity/services/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/hiveConnection.py +2 -2
- metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mongoDB/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mongoDB/mongoDBValues.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/adlsConection.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
- metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
- metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
- metadata/generated/schema/entity/services/dashboardService.py +1 -1
- metadata/generated/schema/entity/services/databaseService.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
- metadata/generated/schema/entity/services/messagingService.py +1 -1
- metadata/generated/schema/entity/services/metadataService.py +1 -1
- metadata/generated/schema/entity/services/mlmodelService.py +1 -1
- metadata/generated/schema/entity/services/pipelineService.py +1 -1
- metadata/generated/schema/entity/services/serviceType.py +1 -1
- metadata/generated/schema/entity/services/storageService.py +1 -1
- metadata/generated/schema/entity/teams/__init__.py +1 -1
- metadata/generated/schema/entity/teams/role.py +1 -1
- metadata/generated/schema/entity/teams/team.py +1 -1
- metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
- metadata/generated/schema/entity/teams/user.py +1 -1
- metadata/generated/schema/entity/type.py +1 -1
- metadata/generated/schema/entity/utils/__init__.py +1 -1
- metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
- metadata/generated/schema/entity/utils/servicesCount.py +1 -1
- metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
- metadata/generated/schema/events/__init__.py +1 -1
- metadata/generated/schema/events/api/__init__.py +1 -1
- metadata/generated/schema/events/api/createEventSubscription.py +1 -1
- metadata/generated/schema/events/dataInsightAlertConfig.py +1 -1
- metadata/generated/schema/events/emailAlertConfig.py +1 -1
- metadata/generated/schema/events/entitySpelFilters.py +1 -1
- metadata/generated/schema/events/eventFilterRule.py +1 -1
- metadata/generated/schema/events/eventSubscription.py +29 -29
- metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
- metadata/generated/schema/metadataIngestion/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
- metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/workflow.py +1 -1
- metadata/generated/schema/monitoring/__init__.py +1 -1
- metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
- metadata/generated/schema/security/__init__.py +1 -1
- metadata/generated/schema/security/client/__init__.py +1 -1
- metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
- metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
- metadata/generated/schema/security/credentials/__init__.py +1 -1
- metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
- metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
- metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
- metadata/generated/schema/security/credentials/basicAuth.py +1 -1
- metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
- metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
- metadata/generated/schema/security/credentials/gcpValues.py +1 -1
- metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
- metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
- metadata/generated/schema/security/secrets/__init__.py +1 -1
- metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
- metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
- metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
- metadata/generated/schema/security/securityConfiguration.py +1 -1
- metadata/generated/schema/security/ssl/__init__.py +1 -1
- metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
- metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
- metadata/generated/schema/settings/__init__.py +1 -1
- metadata/generated/schema/settings/settings.py +1 -1
- metadata/generated/schema/system/__init__.py +1 -1
- metadata/generated/schema/system/eventPublisherJob.py +1 -1
- metadata/generated/schema/system/sqlMigrationScript.py +1 -1
- metadata/generated/schema/tests/__init__.py +1 -1
- metadata/generated/schema/tests/basic.py +7 -7
- metadata/generated/schema/tests/customMetric.py +1 -1
- metadata/generated/schema/tests/testCase.py +1 -1
- metadata/generated/schema/tests/testDefinition.py +1 -1
- metadata/generated/schema/tests/testSuite.py +1 -1
- metadata/generated/schema/type/__init__.py +1 -1
- metadata/generated/schema/type/auditLog.py +1 -1
- metadata/generated/schema/type/basic.py +1 -1
- metadata/generated/schema/type/changeEvent.py +1 -1
- metadata/generated/schema/type/collectionDescriptor.py +1 -1
- metadata/generated/schema/type/csvDocumentation.py +1 -1
- metadata/generated/schema/type/csvErrorType.py +1 -1
- metadata/generated/schema/type/csvFile.py +1 -1
- metadata/generated/schema/type/csvImportResult.py +1 -1
- metadata/generated/schema/type/dailyCount.py +1 -1
- metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
- metadata/generated/schema/type/entityHistory.py +1 -1
- metadata/generated/schema/type/entityLineage.py +1 -1
- metadata/generated/schema/type/entityReference.py +1 -1
- metadata/generated/schema/type/entityReferenceList.py +1 -1
- metadata/generated/schema/type/entityRelationship.py +1 -1
- metadata/generated/schema/type/entityUsage.py +1 -1
- metadata/generated/schema/type/filterPattern.py +1 -1
- metadata/generated/schema/type/function.py +1 -1
- metadata/generated/schema/type/include.py +1 -1
- metadata/generated/schema/type/jdbcConnection.py +1 -1
- metadata/generated/schema/type/paging.py +1 -1
- metadata/generated/schema/type/profile.py +1 -1
- metadata/generated/schema/type/queryParserData.py +1 -1
- metadata/generated/schema/type/reaction.py +1 -1
- metadata/generated/schema/type/schedule.py +1 -1
- metadata/generated/schema/type/schema.py +1 -1
- metadata/generated/schema/type/tableQuery.py +1 -1
- metadata/generated/schema/type/tableUsageCount.py +1 -1
- metadata/generated/schema/type/tagLabel.py +1 -1
- metadata/generated/schema/type/usageDetails.py +1 -1
- metadata/generated/schema/type/usageRequest.py +1 -1
- metadata/generated/schema/type/votes.py +1 -1
- metadata/ingestion/lineage/sql_lineage.py +30 -7
- metadata/ingestion/ometa/mixins/data_insight_mixin.py +12 -1
- metadata/ingestion/ometa/mixins/query_mixin.py +40 -4
- metadata/ingestion/ometa/mixins/table_mixin.py +0 -5
- metadata/ingestion/processor/query_parser.py +6 -6
- metadata/ingestion/source/dashboard/tableau/models.py +0 -1
- metadata/ingestion/source/dashboard/tableau/queries.py +0 -1
- metadata/ingestion/source/database/bigquery/connection.py +27 -38
- metadata/ingestion/source/database/bigquery/helper.py +66 -0
- metadata/ingestion/source/database/bigquery/metadata.py +69 -64
- metadata/ingestion/source/database/bigquery/queries.py +2 -2
- metadata/ingestion/source/database/bigquery/query_parser.py +19 -1
- metadata/ingestion/source/database/common_db_source.py +0 -3
- metadata/ingestion/source/database/database_service.py +27 -3
- metadata/ingestion/source/database/lineage_source.py +21 -18
- metadata/ingestion/source/database/query_parser_source.py +3 -0
- metadata/ingestion/source/database/sample_data.py +17 -9
- metadata/ingestion/source/database/usage_source.py +30 -29
- metadata/ingestion/stage/table_usage.py +42 -34
- metadata/profiler/interface/pandas/profiler_interface.py +24 -41
- metadata/profiler/interface/profiler_interface.py +62 -2
- metadata/profiler/interface/profiler_interface_factory.py +9 -0
- metadata/profiler/interface/sqlalchemy/profiler_interface.py +19 -36
- metadata/profiler/interface/sqlalchemy/single_store/__init__.py +0 -0
- metadata/profiler/interface/sqlalchemy/single_store/profiler_interface.py +86 -0
- metadata/profiler/metrics/system/queries/redshift.py +3 -5
- metadata/profiler/metrics/system/system.py +0 -4
- metadata/profiler/metrics/window/first_quartile.py +4 -4
- metadata/profiler/metrics/window/median.py +4 -4
- metadata/profiler/metrics/window/percentille_mixin.py +9 -0
- metadata/profiler/metrics/window/third_quartile.py +4 -4
- metadata/profiler/processor/core.py +1 -1
- metadata/profiler/source/single_store/functions/median.py +17 -0
- metadata/profiler/source/single_store/metrics/window/first_quartile.py +10 -0
- metadata/profiler/source/single_store/metrics/window/median.py +10 -0
- metadata/profiler/source/single_store/metrics/window/third_quartile.py +10 -0
- {openmetadata_ingestion-1.1.4.0.dist-info → openmetadata_ingestion-1.1.6.0.dist-info}/METADATA +176 -176
- {openmetadata_ingestion-1.1.4.0.dist-info → openmetadata_ingestion-1.1.6.0.dist-info}/RECORD +445 -437
- {openmetadata_ingestion-1.1.4.0.dist-info → openmetadata_ingestion-1.1.6.0.dist-info}/LICENSE +0 -0
- {openmetadata_ingestion-1.1.4.0.dist-info → openmetadata_ingestion-1.1.6.0.dist-info}/WHEEL +0 -0
- {openmetadata_ingestion-1.1.4.0.dist-info → openmetadata_ingestion-1.1.6.0.dist-info}/entry_points.txt +0 -0
- {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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
331
|
-
def _(
|
|
314
|
+
def _compute_system_metrics(
|
|
332
315
|
self,
|
|
333
|
-
|
|
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 =
|
|
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.
|
|
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":
|
|
455
|
+
"timestamp": int(
|
|
456
|
+
datetime.now(tz=timezone.utc).timestamp() * 1000
|
|
457
|
+
),
|
|
475
458
|
**profile,
|
|
476
459
|
}
|
|
477
460
|
)
|
|
File without changes
|
|
@@ -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
|
|
50
|
-
ORDER BY
|
|
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=
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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)
|