openmetadata-ingestion 1.3.4.0__py3-none-any.whl → 1.4.0.0rc2__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/__version__.py +13 -0
- metadata/automations/runner.py +9 -0
- metadata/cli/app.py +0 -1
- metadata/cli/lineage.py +5 -1
- metadata/cli/restore.py +7 -0
- metadata/cmd.py +2 -345
- metadata/data_insight/processor/reports/cost_analysis_report_data_processor.py +0 -1
- metadata/data_quality/api/models.py +1 -0
- metadata/data_quality/processor/test_case_runner.py +9 -2
- metadata/data_quality/source/test_suite.py +14 -3
- metadata/data_quality/validations/base_test_handler.py +1 -1
- metadata/data_quality/validations/column/base/columnValuesMissingCount.py +4 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeUnique.py +28 -17
- metadata/data_quality/validations/mixins/sqa_validator_mixin.py +4 -1
- metadata/data_quality/validations/table/base/tableCustomSQLQuery.py +1 -1
- metadata/examples/workflows/airbyte.yaml +1 -0
- metadata/examples/workflows/airflow.yaml +1 -1
- metadata/examples/workflows/airflow_backend.yaml +1 -1
- metadata/examples/workflows/airflow_postgres.yaml +1 -1
- metadata/examples/workflows/amundsen.yaml +1 -0
- metadata/examples/workflows/athena.yaml +1 -0
- metadata/examples/workflows/athena_lineage.yaml +1 -1
- metadata/examples/workflows/athena_usage.yaml +1 -0
- metadata/examples/workflows/atlas.yaml +1 -0
- metadata/examples/workflows/azuresql.yaml +1 -0
- metadata/examples/workflows/azuresql_lineage.yaml +1 -0
- metadata/examples/workflows/azuresql_usage.yaml +1 -0
- metadata/examples/workflows/bigquery.yaml +1 -0
- metadata/examples/workflows/bigquery_lineage.yaml +1 -0
- metadata/examples/workflows/bigquery_profiler.yaml +1 -0
- metadata/examples/workflows/bigquery_usage.yaml +1 -0
- metadata/examples/workflows/bigtable.yaml +1 -1
- metadata/examples/workflows/clickhouse.yaml +1 -0
- metadata/examples/workflows/clickhouse_lineage.yaml +1 -0
- metadata/examples/workflows/clickhouse_usage.yaml +1 -0
- metadata/examples/workflows/couchbase.yaml +1 -1
- metadata/examples/workflows/dagster.yaml +1 -0
- metadata/examples/workflows/data_insight.yaml +1 -1
- metadata/examples/workflows/databricks.yaml +1 -0
- metadata/examples/workflows/databricks_lineage.yaml +1 -0
- metadata/examples/workflows/databricks_pipeline.yaml +1 -0
- metadata/examples/workflows/databricks_usage.yaml +1 -0
- metadata/examples/workflows/datalake_azure_client_secret.yaml +1 -0
- metadata/examples/workflows/datalake_gcs.yaml +1 -0
- metadata/examples/workflows/datalake_profiler.yaml +1 -0
- metadata/examples/workflows/datalake_s3.yaml +1 -0
- metadata/examples/workflows/db2.yaml +1 -0
- metadata/examples/workflows/db2_profiler.yaml +1 -0
- metadata/examples/workflows/dbt.yaml +2 -0
- metadata/examples/workflows/deltalake.yaml +1 -0
- metadata/examples/workflows/domodashboard.yaml +1 -0
- metadata/examples/workflows/dynamodb.yaml +1 -0
- metadata/examples/workflows/elasticsearch.yaml +1 -1
- metadata/examples/workflows/fivetran.yaml +1 -0
- metadata/examples/workflows/glue.yaml +1 -0
- metadata/examples/workflows/gluepipeline.yaml +1 -0
- metadata/examples/workflows/hive.yaml +1 -0
- metadata/examples/workflows/impala.yaml +1 -0
- metadata/examples/workflows/kafka.yaml +1 -1
- metadata/examples/workflows/kafka_connect.yaml +30 -0
- metadata/examples/workflows/kinesis.yaml +1 -1
- metadata/examples/workflows/lightdash.yaml +1 -0
- metadata/examples/workflows/looker.yaml +1 -0
- metadata/examples/workflows/mariadb.yaml +1 -0
- metadata/examples/workflows/metabase.yaml +1 -0
- metadata/examples/workflows/mlflow.yaml +1 -0
- metadata/examples/workflows/mode.yaml +3 -1
- metadata/examples/workflows/mongodb.yaml +1 -0
- metadata/examples/workflows/mssql.yaml +1 -0
- metadata/examples/workflows/mssql_lineage.yaml +1 -0
- metadata/examples/workflows/mssql_usage.yaml +1 -0
- metadata/examples/workflows/mstr.yaml +1 -0
- metadata/examples/workflows/mysql.yaml +1 -0
- metadata/examples/workflows/mysql_profiler.yaml +1 -0
- metadata/examples/workflows/openmetadata.yaml +1 -0
- metadata/examples/workflows/oracle.yaml +1 -0
- metadata/examples/workflows/oracle_lineage.yaml +1 -1
- metadata/examples/workflows/oracle_usage.yaml +1 -0
- metadata/examples/workflows/pinotdb.yaml +1 -0
- metadata/examples/workflows/postgres.yaml +1 -0
- metadata/examples/workflows/postgres_lineage.yaml +1 -1
- metadata/examples/workflows/postgres_usage.yaml +1 -1
- metadata/examples/workflows/powerbi.yaml +52 -0
- metadata/examples/workflows/presto.yaml +1 -0
- metadata/examples/workflows/qlik_sense.yaml +6 -4
- metadata/examples/workflows/qlikcloud.yaml +31 -0
- metadata/examples/workflows/query_log_usage.yaml +1 -0
- metadata/examples/workflows/quicksight.yaml +1 -0
- metadata/examples/workflows/redash.yaml +1 -0
- metadata/examples/workflows/redpanda.yaml +1 -0
- metadata/examples/workflows/redshift.yaml +1 -0
- metadata/examples/workflows/redshift_lineage.yaml +1 -0
- metadata/examples/workflows/redshift_profiler.yaml +1 -0
- metadata/examples/workflows/redshift_usage.yaml +1 -0
- metadata/examples/workflows/sagemaker.yaml +1 -1
- metadata/examples/workflows/salesforce.yaml +1 -0
- metadata/examples/workflows/sas.yaml +1 -1
- metadata/examples/workflows/singlestore.yaml +1 -0
- metadata/examples/workflows/snowflake.yaml +1 -0
- metadata/examples/workflows/snowflake_lineage.yaml +1 -0
- metadata/examples/workflows/snowflake_usage.yaml +1 -0
- metadata/examples/workflows/spline.yaml +5 -4
- metadata/examples/workflows/sqlite.yaml +1 -0
- metadata/examples/workflows/superset.yaml +1 -0
- metadata/examples/workflows/tableau.yaml +1 -0
- metadata/examples/workflows/test_suite.yaml +13 -16
- metadata/examples/workflows/trino.yaml +1 -0
- metadata/examples/workflows/trino_lineage.yaml +1 -0
- metadata/examples/workflows/trino_usage.yaml +1 -0
- metadata/examples/workflows/unity_catalog.yaml +1 -1
- metadata/examples/workflows/unity_catalog_lineage.yaml +1 -1
- metadata/examples/workflows/unity_catalog_usage.yaml +1 -1
- metadata/examples/workflows/vertica.yaml +1 -0
- metadata/generated/antlr/EntityLinkLexer.py +354 -349
- 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/aggregatedCostAnalysisReportData.py +1 -1
- metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
- metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.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/addGlossaryToAssetsRequest.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/bulkAssets.py +1 -1
- metadata/generated/schema/api/classification/__init__.py +1 -1
- metadata/generated/schema/api/classification/createClassification.py +2 -3
- metadata/generated/schema/api/classification/createTag.py +2 -3
- 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 +4 -1
- metadata/generated/schema/api/data/createCustomProperty.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 +1 -1
- metadata/generated/schema/api/data/createSearchIndex.py +1 -1
- metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
- metadata/generated/schema/api/data/createTable.py +4 -3
- metadata/generated/schema/api/data/createTableProfile.py +1 -1
- metadata/generated/schema/api/data/createTopic.py +1 -1
- metadata/generated/schema/api/data/loadGlossary.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/docStore/__init__.py +1 -1
- metadata/generated/schema/api/docStore/createDocument.py +1 -1
- metadata/generated/schema/api/domains/__init__.py +1 -1
- metadata/generated/schema/api/domains/createDataProduct.py +1 -1
- metadata/generated/schema/api/domains/createDomain.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/createSuggestion.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/createSearchService.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/createPersona.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 +2 -2
- 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 +2 -2
- metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
- metadata/generated/schema/api/tests/createTestDefinition.py +2 -2
- 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/appsPrivateConfiguration.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 +4 -1
- metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
- metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
- metadata/generated/schema/configuration/elasticSearchConfiguration.py +4 -1
- metadata/generated/schema/configuration/eventHandlerConfiguration.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/loginConfiguration.py +1 -1
- metadata/generated/schema/configuration/logoConfiguration.py +1 -1
- metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
- metadata/generated/schema/configuration/profilerConfiguration.py +66 -0
- 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/configuration/themeConfiguration.py +32 -0
- metadata/generated/schema/configuration/uiThemePreference.py +23 -0
- 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/aggregatedUnusedAssetsCount.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.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/dataInsight/type/unusedAssets.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 +3 -3
- metadata/generated/schema/entity/__init__.py +1 -1
- metadata/generated/schema/entity/applications/__init__.py +1 -1
- metadata/generated/schema/entity/applications/app.py +1 -1
- metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
- metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/applicationConfig.py +3 -3
- metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +5 -0
- metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +36 -0
- metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +31 -0
- metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +31 -0
- metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +36 -0
- metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +31 -0
- metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +28 -0
- metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +22 -0
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +30 -0
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +22 -0
- metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +22 -0
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +31 -0
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +22 -0
- metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +75 -0
- metadata/generated/schema/entity/applications/configuration/external/metaPilotAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/external/metaPilotAppPrivateConfig.py +1 -1
- metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
- metadata/generated/schema/entity/applications/jobStatus.py +1 -1
- metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
- metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
- metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
- metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
- metadata/generated/schema/entity/applications/scheduledExecutionContext.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 +2 -3
- metadata/generated/schema/entity/classification/tag.py +3 -9
- 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 +4 -1
- metadata/generated/schema/entity/data/dashboard.py +1 -1
- metadata/generated/schema/entity/data/dashboardDataModel.py +2 -2
- 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 +4 -1
- metadata/generated/schema/entity/data/metrics.py +1 -1
- metadata/generated/schema/entity/data/mlmodel.py +2 -2
- metadata/generated/schema/entity/data/pipeline.py +1 -1
- metadata/generated/schema/entity/data/query.py +1 -1
- metadata/generated/schema/entity/data/report.py +1 -1
- metadata/generated/schema/entity/data/searchIndex.py +1 -1
- metadata/generated/schema/entity/data/storedProcedure.py +1 -1
- metadata/generated/schema/entity/data/table.py +26 -24
- metadata/generated/schema/entity/data/topic.py +1 -1
- metadata/generated/schema/entity/docStore/__init__.py +1 -1
- metadata/generated/schema/entity/docStore/document.py +1 -1
- metadata/generated/schema/entity/domains/__init__.py +1 -1
- metadata/generated/schema/entity/domains/dataProduct.py +1 -1
- metadata/generated/schema/entity/domains/domain.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/assets.py +18 -0
- metadata/generated/schema/entity/feed/customProperty.py +17 -0
- metadata/generated/schema/entity/feed/description.py +24 -0
- metadata/generated/schema/entity/feed/domain.py +23 -0
- metadata/generated/schema/entity/feed/entityInfo.py +19 -0
- metadata/generated/schema/entity/feed/owner.py +23 -0
- metadata/generated/schema/entity/feed/suggestion.py +1 -1
- metadata/generated/schema/entity/feed/tag.py +23 -0
- metadata/generated/schema/entity/feed/testCaseResult.py +23 -0
- metadata/generated/schema/entity/feed/thread.py +81 -2
- 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 +3 -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 +3 -3
- 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/common/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
- metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
- metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/connectionBasicType.py +5 -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/lightdashConnection.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/mstrConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +33 -2
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +3 -0
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +37 -0
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +25 -0
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +37 -0
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +37 -0
- metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +38 -0
- metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +6 -15
- 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 +4 -1
- metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +4 -1
- metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/azureConfig.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/couchbaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/databricksConnection.py +4 -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 +2 -2
- metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/dorisConnection.py +4 -13
- metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +4 -1
- metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +2 -15
- metadata/generated/schema/entity/services/connections/database/hiveConnection.py +4 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
- 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/mongoDBConnection.py +4 -1
- metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +4 -1
- metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +7 -13
- metadata/generated/schema/entity/services/connections/database/oracleConnection.py +4 -1
- metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/postgresConnection.py +5 -15
- metadata/generated/schema/entity/services/connections/database/prestoConnection.py +11 -1
- metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +5 -15
- metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +4 -1
- metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/trinoConnection.py +12 -3
- metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.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 +7 -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/alationConnection.py +7 -3
- 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/kafkaConnectConnection.py +61 -0
- metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +73 -0
- metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.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/customSearchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/search/openSearchConnection.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/adlsConnection.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 +5 -2
- 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 +4 -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/ingestionPipelines/status.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 +7 -1
- metadata/generated/schema/entity/services/searchService.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/persona.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 +2 -2
- 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/alertMetrics.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/emailAlertConfig.py +1 -1
- metadata/generated/schema/events/eventFilterRule.py +10 -1
- metadata/generated/schema/events/eventSubscription.py +6 -2
- metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
- metadata/generated/schema/events/failedEvent.py +1 -1
- metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
- metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
- metadata/generated/schema/metadataIngestion/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/application.py +1 -1
- metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +19 -6
- metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +37 -1
- metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +23 -23
- 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 +22 -4
- metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.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/storage/manifestMetadataConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.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/oidcClientConfig.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/apiAccessTokenAuth.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/gcpExternalAccount.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 +16 -4
- metadata/generated/schema/security/ssl/verifySSLConfig.py +10 -1
- metadata/generated/schema/settings/__init__.py +1 -1
- metadata/generated/schema/settings/settings.py +5 -2
- metadata/generated/schema/system/__init__.py +1 -1
- metadata/generated/schema/system/entityError.py +1 -1
- metadata/generated/schema/system/eventPublisherJob.py +1 -1
- metadata/generated/schema/system/indexingError.py +1 -1
- metadata/generated/schema/system/ui/__init__.py +1 -1
- metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
- metadata/generated/schema/system/ui/page.py +1 -1
- metadata/generated/schema/system/validationResponse.py +1 -1
- metadata/generated/schema/tests/__init__.py +1 -1
- metadata/generated/schema/tests/assigned.py +1 -1
- metadata/generated/schema/tests/basic.py +31 -15
- metadata/generated/schema/tests/customMetric.py +1 -1
- metadata/generated/schema/tests/resolved.py +1 -1
- metadata/generated/schema/tests/testCase.py +13 -2
- metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
- metadata/generated/schema/tests/testDefinition.py +22 -2
- 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 +7 -1
- metadata/generated/schema/type/bulkOperationResult.py +1 -1
- metadata/generated/schema/type/changeEvent.py +1 -1
- metadata/generated/schema/type/changeEventType.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/customProperties/__init__.py +1 -1
- metadata/generated/schema/type/customProperties/complexTypes.py +86 -0
- metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
- metadata/generated/schema/type/customProperty.py +3 -3
- metadata/generated/schema/type/dailyCount.py +1 -1
- metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
- metadata/generated/schema/type/entityHierarchy.py +39 -0
- metadata/generated/schema/type/entityHistory.py +1 -1
- metadata/generated/schema/type/entityLineage.py +3 -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/lifeCycle.py +1 -1
- metadata/generated/schema/type/paging.py +4 -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/great_expectations/action.py +0 -1
- metadata/ingestion/api/delete.py +33 -1
- metadata/ingestion/api/step.py +6 -1
- metadata/ingestion/api/topology_runner.py +122 -25
- metadata/ingestion/bulksink/metadata_usage.py +6 -1
- metadata/ingestion/lineage/models.py +34 -1
- metadata/ingestion/lineage/parser.py +15 -8
- metadata/ingestion/lineage/sql_lineage.py +21 -3
- metadata/ingestion/models/custom_properties.py +3 -0
- metadata/ingestion/models/life_cycle.py +4 -1
- metadata/ingestion/models/patch_request.py +177 -35
- metadata/ingestion/models/topology.py +81 -1
- metadata/ingestion/ometa/client.py +3 -0
- metadata/ingestion/ometa/mixins/es_mixin.py +95 -42
- metadata/ingestion/ometa/mixins/lineage_mixin.py +169 -4
- metadata/ingestion/ometa/mixins/patch_mixin.py +9 -4
- metadata/ingestion/ometa/mixins/server_mixin.py +50 -5
- metadata/ingestion/ometa/mixins/tests_mixin.py +55 -1
- metadata/ingestion/ometa/mixins/user_mixin.py +18 -6
- metadata/ingestion/ometa/ometa_api.py +6 -1
- metadata/ingestion/ometa/routes.py +3 -0
- metadata/ingestion/ometa/utils.py +2 -0
- metadata/ingestion/processor/query_parser.py +36 -26
- metadata/ingestion/sink/file.py +4 -1
- metadata/ingestion/sink/metadata_rest.py +19 -5
- metadata/ingestion/source/dashboard/dashboard_service.py +75 -16
- metadata/ingestion/source/dashboard/domodashboard/metadata.py +7 -5
- metadata/ingestion/source/dashboard/lightdash/metadata.py +7 -5
- metadata/ingestion/source/dashboard/looker/metadata.py +25 -18
- metadata/ingestion/source/dashboard/metabase/client.py +39 -8
- metadata/ingestion/source/dashboard/metabase/connection.py +2 -1
- metadata/ingestion/source/dashboard/metabase/metadata.py +9 -7
- metadata/ingestion/source/dashboard/metabase/models.py +1 -1
- metadata/ingestion/source/dashboard/mode/metadata.py +7 -5
- metadata/ingestion/source/dashboard/mstr/metadata.py +10 -5
- metadata/ingestion/source/dashboard/powerbi/client.py +13 -3
- metadata/ingestion/source/dashboard/powerbi/connection.py +13 -5
- metadata/ingestion/source/dashboard/powerbi/file_client.py +327 -0
- metadata/ingestion/source/dashboard/powerbi/metadata.py +156 -53
- metadata/ingestion/source/dashboard/powerbi/models.py +26 -0
- metadata/ingestion/source/dashboard/qlikcloud/__init__.py +0 -0
- metadata/ingestion/source/dashboard/qlikcloud/client.py +167 -0
- metadata/ingestion/source/dashboard/qlikcloud/connection.py +56 -0
- metadata/ingestion/source/dashboard/qlikcloud/constants.py +66 -0
- metadata/ingestion/source/dashboard/qlikcloud/metadata.py +249 -0
- metadata/ingestion/source/dashboard/qlikcloud/models.py +33 -0
- metadata/ingestion/source/dashboard/qliksense/client.py +9 -26
- metadata/ingestion/source/dashboard/qliksense/metadata.py +30 -17
- metadata/ingestion/source/dashboard/qliksense/models.py +1 -0
- metadata/ingestion/source/dashboard/quicksight/metadata.py +7 -5
- metadata/ingestion/source/dashboard/redash/metadata.py +10 -5
- metadata/ingestion/source/dashboard/superset/api_source.py +10 -5
- metadata/ingestion/source/dashboard/superset/db_source.py +12 -6
- metadata/ingestion/source/dashboard/superset/metadata.py +8 -1
- metadata/ingestion/source/dashboard/superset/mixin.py +20 -3
- metadata/ingestion/source/dashboard/superset/models.py +2 -0
- metadata/ingestion/source/dashboard/superset/queries.py +23 -6
- metadata/ingestion/source/dashboard/tableau/metadata.py +71 -10
- metadata/ingestion/source/database/athena/client.py +1 -1
- metadata/ingestion/source/database/athena/lineage.py +2 -0
- metadata/ingestion/source/database/athena/metadata.py +83 -15
- metadata/ingestion/source/database/athena/models.py +1 -1
- metadata/ingestion/source/database/athena/query_parser.py +6 -1
- metadata/ingestion/source/database/athena/usage.py +2 -0
- metadata/ingestion/source/database/azuresql/metadata.py +4 -2
- metadata/ingestion/source/database/azuresql/query_parser.py +4 -1
- metadata/ingestion/source/database/bigquery/helper.py +23 -12
- metadata/ingestion/source/database/bigquery/incremental_table_processor.py +86 -0
- metadata/ingestion/source/database/bigquery/metadata.py +224 -52
- metadata/ingestion/source/database/bigquery/models.py +35 -1
- metadata/ingestion/source/database/bigquery/queries.py +25 -12
- metadata/ingestion/source/database/bigquery/query_parser.py +3 -1
- metadata/ingestion/source/database/bigtable/metadata.py +6 -4
- metadata/ingestion/source/database/clickhouse/metadata.py +27 -17
- metadata/ingestion/source/database/clickhouse/query_parser.py +4 -2
- metadata/ingestion/source/database/common_db_source.py +117 -65
- metadata/ingestion/source/database/common_nosql_source.py +15 -15
- metadata/ingestion/source/database/couchbase/metadata.py +8 -6
- metadata/ingestion/source/database/database_service.py +43 -27
- metadata/ingestion/source/database/databricks/metadata.py +80 -34
- metadata/ingestion/source/database/databricks/queries.py +0 -1
- metadata/ingestion/source/database/databricks/query_parser.py +9 -2
- metadata/ingestion/source/database/datalake/connection.py +1 -2
- metadata/ingestion/source/database/datalake/metadata.py +21 -19
- metadata/ingestion/source/database/db2/metadata.py +4 -1
- metadata/ingestion/source/database/dbt/dbt_service.py +13 -11
- metadata/ingestion/source/database/dbt/metadata.py +97 -33
- metadata/ingestion/source/database/dbt/models.py +10 -1
- metadata/ingestion/source/database/deltalake/connection.py +2 -2
- metadata/ingestion/source/database/deltalake/metadata.py +19 -17
- metadata/ingestion/source/database/domodatabase/metadata.py +16 -11
- metadata/ingestion/source/database/doris/connection.py +0 -10
- metadata/ingestion/source/database/doris/metadata.py +23 -4
- metadata/ingestion/source/database/druid/metadata.py +5 -1
- metadata/ingestion/source/database/dynamodb/metadata.py +3 -1
- metadata/ingestion/source/database/extended_sample_data.py +4 -2
- metadata/ingestion/source/database/external_table_lineage_mixin.py +82 -0
- metadata/ingestion/source/database/glue/metadata.py +23 -21
- metadata/ingestion/source/database/greenplum/connection.py +0 -10
- metadata/ingestion/source/database/greenplum/metadata.py +26 -11
- metadata/ingestion/source/database/hive/metadata.py +29 -4
- metadata/ingestion/source/database/iceberg/helper.py +42 -5
- metadata/ingestion/source/database/iceberg/metadata.py +18 -16
- metadata/ingestion/source/database/iceberg/models.py +12 -4
- metadata/ingestion/source/database/impala/metadata.py +4 -1
- metadata/ingestion/source/database/incremental_metadata_extraction.py +144 -0
- metadata/ingestion/source/database/life_cycle_query_mixin.py +39 -36
- metadata/ingestion/source/database/mariadb/metadata.py +5 -1
- metadata/ingestion/source/database/mongodb/metadata.py +4 -2
- metadata/ingestion/source/database/mssql/metadata.py +15 -7
- metadata/ingestion/source/database/mssql/queries.py +18 -16
- metadata/ingestion/source/database/mssql/query_parser.py +4 -1
- metadata/ingestion/source/database/mssql/utils.py +3 -0
- metadata/ingestion/source/database/mysql/connection.py +0 -11
- metadata/ingestion/source/database/mysql/metadata.py +9 -2
- metadata/ingestion/source/database/oracle/connection.py +2 -2
- metadata/ingestion/source/database/oracle/metadata.py +33 -17
- metadata/ingestion/source/database/oracle/queries.py +13 -13
- metadata/ingestion/source/database/oracle/query_parser.py +4 -1
- metadata/ingestion/source/database/pinotdb/metadata.py +4 -1
- metadata/ingestion/source/database/postgres/connection.py +0 -10
- metadata/ingestion/source/database/postgres/metadata.py +38 -15
- metadata/ingestion/source/database/postgres/queries.py +17 -1
- metadata/ingestion/source/database/postgres/query_parser.py +4 -2
- metadata/ingestion/source/database/postgres/utils.py +98 -0
- metadata/ingestion/source/database/presto/connection.py +14 -0
- metadata/ingestion/source/database/presto/metadata.py +8 -5
- metadata/ingestion/source/database/query/lineage.py +5 -1
- metadata/ingestion/source/database/query/usage.py +4 -1
- metadata/ingestion/source/database/redshift/connection.py +0 -10
- metadata/ingestion/source/database/redshift/incremental_table_processor.py +192 -0
- metadata/ingestion/source/database/redshift/metadata.py +175 -26
- metadata/ingestion/source/database/redshift/models.py +74 -1
- metadata/ingestion/source/database/redshift/queries.py +17 -2
- metadata/ingestion/source/database/redshift/query_parser.py +3 -1
- metadata/ingestion/source/database/redshift/utils.py +13 -7
- metadata/ingestion/source/database/salesforce/metadata.py +13 -11
- metadata/ingestion/source/database/sample_data.py +56 -13
- metadata/ingestion/source/database/sample_usage.py +3 -1
- metadata/ingestion/source/database/saphana/metadata.py +6 -5
- metadata/ingestion/source/database/sas/metadata.py +8 -3
- metadata/ingestion/source/database/singlestore/metadata.py +5 -1
- metadata/ingestion/source/database/snowflake/metadata.py +193 -59
- metadata/ingestion/source/database/snowflake/models.py +24 -1
- metadata/ingestion/source/database/snowflake/queries.py +147 -25
- metadata/ingestion/source/database/snowflake/query_parser.py +3 -1
- metadata/ingestion/source/database/snowflake/utils.py +187 -11
- metadata/ingestion/source/database/sql_column_handler.py +2 -0
- metadata/ingestion/source/database/sqlalchemy_source.py +4 -4
- metadata/ingestion/source/database/sqlite/metadata.py +5 -1
- metadata/ingestion/source/database/stored_procedures_mixin.py +11 -9
- metadata/ingestion/source/database/trino/connection.py +20 -0
- metadata/ingestion/source/database/trino/metadata.py +7 -4
- metadata/ingestion/source/database/trino/query_parser.py +4 -1
- metadata/ingestion/source/database/unitycatalog/lineage.py +3 -1
- metadata/ingestion/source/database/unitycatalog/metadata.py +43 -32
- metadata/ingestion/source/database/unitycatalog/query_parser.py +4 -1
- metadata/ingestion/source/database/vertica/metadata.py +4 -2
- metadata/ingestion/source/database/vertica/query_parser.py +4 -2
- metadata/ingestion/source/messaging/common_broker_source.py +45 -6
- metadata/ingestion/source/messaging/kafka/metadata.py +21 -1
- metadata/ingestion/source/messaging/kinesis/metadata.py +11 -5
- metadata/ingestion/source/messaging/messaging_service.py +3 -3
- metadata/ingestion/source/messaging/redpanda/metadata.py +5 -1
- metadata/ingestion/source/metadata/amundsen/metadata.py +3 -1
- metadata/ingestion/source/metadata/atlas/metadata.py +3 -1
- metadata/ingestion/source/mlmodel/mlflow/metadata.py +4 -2
- metadata/ingestion/source/mlmodel/mlmodel_service.py +3 -3
- metadata/ingestion/source/mlmodel/sagemaker/metadata.py +8 -3
- metadata/ingestion/source/pipeline/airbyte/metadata.py +9 -7
- metadata/ingestion/source/pipeline/airflow/metadata.py +30 -14
- metadata/ingestion/source/pipeline/dagster/metadata.py +17 -15
- metadata/ingestion/source/pipeline/dagster/queries.py +53 -82
- metadata/ingestion/source/pipeline/databrickspipeline/metadata.py +10 -8
- metadata/ingestion/source/pipeline/domopipeline/metadata.py +6 -4
- metadata/ingestion/source/pipeline/fivetran/metadata.py +6 -4
- metadata/ingestion/source/pipeline/gluepipeline/metadata.py +7 -5
- metadata/ingestion/source/pipeline/kafkaconnect/__init__.py +0 -0
- metadata/ingestion/source/pipeline/kafkaconnect/client.py +278 -0
- metadata/ingestion/source/pipeline/kafkaconnect/connection.py +58 -0
- metadata/ingestion/source/pipeline/kafkaconnect/metadata.py +319 -0
- metadata/ingestion/source/pipeline/kafkaconnect/models.py +62 -0
- metadata/ingestion/source/pipeline/nifi/metadata.py +4 -2
- metadata/ingestion/source/pipeline/openlineage/__init__.py +0 -0
- metadata/ingestion/source/pipeline/openlineage/connection.py +88 -0
- metadata/ingestion/source/pipeline/openlineage/metadata.py +520 -0
- metadata/ingestion/source/pipeline/openlineage/models.py +88 -0
- metadata/ingestion/source/pipeline/openlineage/utils.py +59 -0
- metadata/ingestion/source/pipeline/pipeline_service.py +13 -3
- metadata/ingestion/source/pipeline/spline/metadata.py +8 -6
- metadata/ingestion/source/search/elasticsearch/metadata.py +8 -6
- metadata/ingestion/source/search/search_service.py +3 -3
- metadata/ingestion/source/sqa_types.py +20 -1
- metadata/ingestion/source/storage/s3/connection.py +10 -1
- metadata/ingestion/source/storage/s3/metadata.py +45 -30
- metadata/ingestion/source/storage/s3/models.py +8 -4
- metadata/ingestion/source/storage/storage_service.py +4 -4
- metadata/ingestion/stage/table_usage.py +6 -1
- metadata/mixins/pandas/pandas_mixin.py +3 -3
- metadata/pii/processor.py +6 -1
- metadata/profiler/__init__.py +0 -0
- metadata/profiler/adaptors/__init__.py +0 -0
- metadata/profiler/adaptors/adaptor_factory.py +43 -0
- metadata/profiler/adaptors/dynamodb.py +40 -0
- metadata/profiler/adaptors/factory.py +76 -0
- metadata/profiler/adaptors/mongodb.py +178 -0
- metadata/profiler/adaptors/nosql_adaptor.py +65 -0
- metadata/profiler/api/models.py +1 -1
- metadata/profiler/factory.py +41 -0
- metadata/profiler/interface/nosql/profiler_interface.py +236 -0
- metadata/profiler/interface/pandas/profiler_interface.py +51 -30
- metadata/profiler/interface/profiler_interface.py +6 -2
- metadata/profiler/interface/profiler_interface_factory.py +11 -22
- metadata/profiler/interface/sqlalchemy/databricks/profiler_interface.py +77 -0
- metadata/profiler/interface/sqlalchemy/profiler_interface.py +2 -1
- metadata/profiler/interface/sqlalchemy/unity_catalog/profiler_interface.py +3 -6
- metadata/profiler/metrics/composed/distinct_ratio.py +2 -1
- metadata/profiler/metrics/composed/duplicate_count.py +2 -1
- metadata/profiler/metrics/composed/ilike_ratio.py +2 -1
- metadata/profiler/metrics/composed/iqr.py +2 -1
- metadata/profiler/metrics/composed/like_ratio.py +2 -1
- metadata/profiler/metrics/composed/non_parametric_skew.py +2 -1
- metadata/profiler/metrics/composed/null_ratio.py +7 -4
- metadata/profiler/metrics/composed/unique_ratio.py +2 -1
- metadata/profiler/metrics/core.py +14 -1
- metadata/profiler/metrics/hybrid/histogram.py +2 -1
- metadata/profiler/metrics/registry.py +4 -0
- metadata/profiler/metrics/static/column_count.py +2 -1
- metadata/profiler/metrics/static/column_names.py +2 -1
- metadata/profiler/metrics/static/count.py +2 -1
- metadata/profiler/metrics/static/count_in_set.py +2 -1
- metadata/profiler/metrics/static/distinct_count.py +11 -2
- metadata/profiler/metrics/static/ilike_count.py +2 -1
- metadata/profiler/metrics/static/like_count.py +2 -1
- metadata/profiler/metrics/static/max.py +26 -7
- metadata/profiler/metrics/static/max_length.py +3 -2
- metadata/profiler/metrics/static/mean.py +30 -22
- metadata/profiler/metrics/static/min.py +25 -6
- metadata/profiler/metrics/static/min_length.py +3 -2
- metadata/profiler/metrics/static/not_like_count.py +2 -1
- metadata/profiler/metrics/static/not_regexp_match_count.py +2 -1
- metadata/profiler/metrics/static/null_count.py +2 -1
- metadata/profiler/metrics/static/null_missing_count.py +73 -0
- metadata/profiler/metrics/static/regexp_match_count.py +2 -1
- metadata/profiler/metrics/static/row_count.py +9 -3
- metadata/profiler/metrics/static/stddev.py +2 -1
- metadata/profiler/metrics/static/sum.py +22 -4
- metadata/profiler/metrics/static/unique_count.py +13 -4
- metadata/profiler/metrics/system/system.py +2 -1
- metadata/profiler/metrics/window/first_quartile.py +2 -1
- metadata/profiler/metrics/window/median.py +8 -2
- metadata/profiler/metrics/window/third_quartile.py +2 -1
- metadata/profiler/orm/converter/base.py +4 -1
- metadata/profiler/orm/converter/bigquery/converter.py +11 -0
- metadata/profiler/orm/converter/common.py +47 -0
- metadata/profiler/orm/converter/converter_registry.py +2 -0
- metadata/profiler/orm/converter/redshift/converter.py +48 -0
- metadata/profiler/orm/converter/snowflake/converter.py +13 -0
- metadata/profiler/orm/functions/conn_test.py +1 -1
- metadata/profiler/orm/functions/sum.py +4 -2
- metadata/profiler/orm/functions/table_metric_computer.py +1 -1
- metadata/profiler/orm/registry.py +6 -3
- metadata/profiler/processor/core.py +58 -97
- metadata/profiler/processor/default.py +5 -0
- metadata/profiler/processor/handle_partition.py +3 -3
- metadata/profiler/processor/metric_filter.py +267 -0
- metadata/profiler/processor/processor.py +4 -2
- metadata/profiler/processor/sampler/nosql/sampler.py +72 -0
- metadata/profiler/processor/sampler/pandas/sampler.py +5 -6
- metadata/profiler/processor/sampler/sampler_factory.py +9 -0
- metadata/profiler/processor/sampler/sampler_interface.py +2 -2
- metadata/profiler/processor/sampler/sqlalchemy/sampler.py +3 -3
- metadata/profiler/source/base/profiler_source.py +11 -3
- metadata/profiler/source/databricks/profiler_source.py +5 -1
- metadata/profiler/source/metadata.py +8 -1
- metadata/profiler/source/metadata_ext.py +2 -0
- metadata/readers/dataframe/avro.py +5 -5
- metadata/readers/dataframe/json.py +1 -1
- metadata/readers/file/adls.py +20 -0
- metadata/readers/file/base.py +6 -0
- metadata/readers/file/config_source_factory.py +12 -0
- metadata/readers/file/gcs.py +18 -0
- metadata/readers/file/local.py +12 -0
- metadata/readers/file/s3.py +16 -0
- metadata/utils/constants.py +32 -24
- metadata/utils/datalake/datalake_utils.py +40 -4
- metadata/utils/elasticsearch.py +8 -0
- metadata/utils/execution_time_tracker.py +69 -28
- metadata/utils/fqn.py +61 -7
- metadata/utils/helpers.py +2 -0
- metadata/utils/importer.py +15 -6
- metadata/utils/logger.py +1 -1
- metadata/utils/lru_cache.py +2 -0
- metadata/utils/messaging_utils.py +43 -0
- metadata/utils/partition.py +93 -28
- metadata/utils/sqlalchemy_utils.py +60 -1
- metadata/utils/ssl_manager.py +181 -0
- metadata/utils/tag_utils.py +30 -13
- metadata/utils/test_utils.py +65 -0
- metadata/workflow/application.py +6 -1
- metadata/workflow/base.py +1 -1
- metadata/workflow/ingestion.py +19 -0
- metadata/workflow/metadata.py +9 -1
- metadata/workflow/output_handler.py +24 -2
- metadata/workflow/workflow_output_handler.py +2 -0
- {openmetadata_ingestion-1.3.4.0.dist-info → openmetadata_ingestion-1.4.0.0rc2.dist-info}/METADATA +325 -326
- openmetadata_ingestion-1.4.0.0rc2.dist-info/RECORD +1501 -0
- metadata/applications/auto_tagger.py +0 -212
- metadata/cli/backup.py +0 -202
- metadata/cli/db_dump.py +0 -239
- metadata/cli/docker.py +0 -382
- metadata/cli/openmetadata_dag_config_migration.py +0 -109
- metadata/cli/openmetadata_imports_migration.py +0 -71
- metadata/cli/utils.py +0 -56
- metadata/generated/schema/entity/applications/configuration/external/autoTaggerAppConfig.py +0 -28
- openmetadata_ingestion-1.3.4.0.dist-info/RECORD +0 -1435
- {openmetadata_ingestion-1.3.4.0.dist-info → openmetadata_ingestion-1.4.0.0rc2.dist-info}/LICENSE +0 -0
- {openmetadata_ingestion-1.3.4.0.dist-info → openmetadata_ingestion-1.4.0.0rc2.dist-info}/WHEEL +0 -0
- {openmetadata_ingestion-1.3.4.0.dist-info → openmetadata_ingestion-1.4.0.0rc2.dist-info}/entry_points.txt +0 -0
- {openmetadata_ingestion-1.3.4.0.dist-info → openmetadata_ingestion-1.4.0.0rc2.dist-info}/top_level.txt +0 -0
|
@@ -22,7 +22,11 @@ from typing import Dict, List, Optional
|
|
|
22
22
|
|
|
23
23
|
from sqlalchemy import Column
|
|
24
24
|
|
|
25
|
-
from metadata.generated.schema.entity.data.table import
|
|
25
|
+
from metadata.generated.schema.entity.data.table import (
|
|
26
|
+
CustomMetricProfile,
|
|
27
|
+
DataType,
|
|
28
|
+
TableData,
|
|
29
|
+
)
|
|
26
30
|
from metadata.generated.schema.entity.services.connections.database.datalakeConnection import (
|
|
27
31
|
DatalakeConnection,
|
|
28
32
|
)
|
|
@@ -32,12 +36,9 @@ from metadata.profiler.api.models import ThreadPoolMetrics
|
|
|
32
36
|
from metadata.profiler.interface.profiler_interface import ProfilerInterface
|
|
33
37
|
from metadata.profiler.metrics.core import MetricTypes
|
|
34
38
|
from metadata.profiler.metrics.registry import Metrics
|
|
35
|
-
from metadata.
|
|
39
|
+
from metadata.profiler.processor.metric_filter import MetricFilter
|
|
36
40
|
from metadata.utils.constants import COMPLEX_COLUMN_SEPARATOR, SAMPLE_DATA_DEFAULT_COUNT
|
|
37
|
-
from metadata.utils.datalake.datalake_utils import
|
|
38
|
-
GenericDataFrameColumnParser,
|
|
39
|
-
fetch_dataframe,
|
|
40
|
-
)
|
|
41
|
+
from metadata.utils.datalake.datalake_utils import GenericDataFrameColumnParser
|
|
41
42
|
from metadata.utils.logger import profiler_interface_registry_logger
|
|
42
43
|
from metadata.utils.sqa_like_column import SQALikeColumn
|
|
43
44
|
|
|
@@ -85,29 +86,48 @@ class PandasProfilerInterface(ProfilerInterface, PandasInterfaceMixin):
|
|
|
85
86
|
)
|
|
86
87
|
|
|
87
88
|
self.client = self.connection.client
|
|
88
|
-
self.dfs = self.
|
|
89
|
+
self.dfs = self.return_ometa_dataframes_sampled(
|
|
90
|
+
service_connection_config=self.service_connection_config,
|
|
91
|
+
client=self.client,
|
|
92
|
+
table=self.table_entity,
|
|
93
|
+
profile_sample_config=profile_sample_config,
|
|
94
|
+
)
|
|
89
95
|
self.sampler = self._get_sampler()
|
|
90
|
-
self.complex_dataframe_sample = deepcopy(
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
96
|
+
self.complex_dataframe_sample = deepcopy(
|
|
97
|
+
self.sampler.random_sample(is_sampled=True)
|
|
98
|
+
)
|
|
99
|
+
self.complex_df()
|
|
94
100
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
client=self.client,
|
|
101
|
-
file_fqn=DatalakeTableSchemaWrapper(
|
|
102
|
-
key=self.table_entity.name.__root__,
|
|
103
|
-
bucket_name=self.table_entity.databaseSchema.name,
|
|
104
|
-
file_extension=self.table_entity.fileFormat,
|
|
105
|
-
),
|
|
101
|
+
def complex_df(self):
|
|
102
|
+
"""Assign DataTypes to dataframe columns as per the parsed column type"""
|
|
103
|
+
coltype_mapping_df = []
|
|
104
|
+
data_formats = (
|
|
105
|
+
GenericDataFrameColumnParser._data_formats # pylint: disable=protected-access
|
|
106
106
|
)
|
|
107
|
+
for index, df in enumerate(self.complex_dataframe_sample):
|
|
108
|
+
if index == 0:
|
|
109
|
+
for col in self.table.columns:
|
|
110
|
+
coltype = next(
|
|
111
|
+
(
|
|
112
|
+
key
|
|
113
|
+
for key, value in data_formats.items()
|
|
114
|
+
if col.dataType == value
|
|
115
|
+
),
|
|
116
|
+
None,
|
|
117
|
+
)
|
|
118
|
+
if coltype and col.dataType not in {DataType.JSON, DataType.ARRAY}:
|
|
119
|
+
coltype_mapping_df.append(coltype)
|
|
120
|
+
else:
|
|
121
|
+
coltype_mapping_df.append("object")
|
|
107
122
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
123
|
+
try:
|
|
124
|
+
self.complex_dataframe_sample[index] = df.astype(
|
|
125
|
+
dict(zip(df.keys(), coltype_mapping_df))
|
|
126
|
+
)
|
|
127
|
+
except (TypeError, ValueError) as err:
|
|
128
|
+
self.complex_dataframe_sample[index] = df
|
|
129
|
+
logger.warning(f"NaN/NoneType found in the Dataframe: {err}")
|
|
130
|
+
break
|
|
111
131
|
|
|
112
132
|
def _get_sampler(self):
|
|
113
133
|
"""Get dataframe sampler from config"""
|
|
@@ -171,19 +191,19 @@ class PandasProfilerInterface(ProfilerInterface, PandasInterfaceMixin):
|
|
|
171
191
|
"""
|
|
172
192
|
import pandas as pd # pylint: disable=import-outside-toplevel
|
|
173
193
|
|
|
194
|
+
row_dict = {}
|
|
174
195
|
try:
|
|
175
|
-
row_dict = {}
|
|
176
196
|
for metric in metrics:
|
|
177
197
|
metric_resp = metric(column).df_fn(runner)
|
|
178
198
|
row_dict[metric.name()] = (
|
|
179
199
|
None if pd.isnull(metric_resp) else metric_resp
|
|
180
200
|
)
|
|
181
|
-
return row_dict
|
|
182
201
|
except Exception as exc:
|
|
183
202
|
logger.debug(
|
|
184
203
|
f"{traceback.format_exc()}\nError trying to compute profile for {exc}"
|
|
185
204
|
)
|
|
186
205
|
raise RuntimeError(exc)
|
|
206
|
+
return row_dict
|
|
187
207
|
|
|
188
208
|
def _compute_query_metrics(
|
|
189
209
|
self,
|
|
@@ -283,7 +303,7 @@ class PandasProfilerInterface(ProfilerInterface, PandasInterfaceMixin):
|
|
|
283
303
|
metric_func: ThreadPoolMetrics,
|
|
284
304
|
):
|
|
285
305
|
"""Run metrics in processor worker"""
|
|
286
|
-
logger.debug(f"Running profiler for {metric_func.table}")
|
|
306
|
+
logger.debug(f"Running profiler for {metric_func.table.name.__root__}")
|
|
287
307
|
try:
|
|
288
308
|
row = None
|
|
289
309
|
if self.complex_dataframe_sample:
|
|
@@ -360,13 +380,14 @@ class PandasProfilerInterface(ProfilerInterface, PandasInterfaceMixin):
|
|
|
360
380
|
|
|
361
381
|
def get_all_metrics(
|
|
362
382
|
self,
|
|
363
|
-
metric_funcs:
|
|
383
|
+
metric_funcs: List[ThreadPoolMetrics],
|
|
364
384
|
):
|
|
365
385
|
"""get all profiler metrics"""
|
|
366
386
|
|
|
367
387
|
profile_results = {"table": {}, "columns": defaultdict(dict)}
|
|
368
388
|
metric_list = [
|
|
369
|
-
self.compute_metrics(metric_func)
|
|
389
|
+
self.compute_metrics(metric_func)
|
|
390
|
+
for metric_func in MetricFilter.filter_empty_metrics(metric_funcs)
|
|
370
391
|
]
|
|
371
392
|
for metric_result in metric_list:
|
|
372
393
|
profile, column, metric_type = metric_result
|
|
@@ -425,8 +425,12 @@ class ProfilerInterface(ABC):
|
|
|
425
425
|
runner,
|
|
426
426
|
*args,
|
|
427
427
|
**kwargs,
|
|
428
|
-
):
|
|
429
|
-
"""Get metrics
|
|
428
|
+
) -> Dict[str, Any]:
|
|
429
|
+
"""Get metrics
|
|
430
|
+
Return:
|
|
431
|
+
Dict[str, Any]: dict of metrics tio be merged into the final column profile. Keys need to be compatible with
|
|
432
|
+
the `metadata.generated.schema.entity.data.table.ColumnProfile` schema.
|
|
433
|
+
"""
|
|
430
434
|
raise NotImplementedError
|
|
431
435
|
|
|
432
436
|
@abstractmethod
|
|
@@ -27,9 +27,15 @@ from metadata.generated.schema.entity.services.connections.database.datalakeConn
|
|
|
27
27
|
from metadata.generated.schema.entity.services.connections.database.db2Connection import (
|
|
28
28
|
Db2Connection,
|
|
29
29
|
)
|
|
30
|
+
from metadata.generated.schema.entity.services.connections.database.dynamoDBConnection import (
|
|
31
|
+
DynamoDBConnection,
|
|
32
|
+
)
|
|
30
33
|
from metadata.generated.schema.entity.services.connections.database.mariaDBConnection import (
|
|
31
34
|
MariaDBConnection,
|
|
32
35
|
)
|
|
36
|
+
from metadata.generated.schema.entity.services.connections.database.mongoDBConnection import (
|
|
37
|
+
MongoDBConnection,
|
|
38
|
+
)
|
|
33
39
|
from metadata.generated.schema.entity.services.connections.database.singleStoreConnection import (
|
|
34
40
|
SingleStoreConnection,
|
|
35
41
|
)
|
|
@@ -43,6 +49,8 @@ from metadata.generated.schema.entity.services.connections.database.unityCatalog
|
|
|
43
49
|
UnityCatalogConnection,
|
|
44
50
|
)
|
|
45
51
|
from metadata.generated.schema.entity.services.databaseService import DatabaseConnection
|
|
52
|
+
from metadata.profiler.factory import Factory
|
|
53
|
+
from metadata.profiler.interface.nosql.profiler_interface import NoSQLProfilerInterface
|
|
46
54
|
from metadata.profiler.interface.pandas.profiler_interface import (
|
|
47
55
|
PandasProfilerInterface,
|
|
48
56
|
)
|
|
@@ -76,27 +84,7 @@ from metadata.profiler.interface.sqlalchemy.unity_catalog.profiler_interface imp
|
|
|
76
84
|
)
|
|
77
85
|
|
|
78
86
|
|
|
79
|
-
class ProfilerInterfaceFactory:
|
|
80
|
-
"""Creational factory for profiler interface objects"""
|
|
81
|
-
|
|
82
|
-
def __init__(self):
|
|
83
|
-
self._interface_type = {}
|
|
84
|
-
|
|
85
|
-
def register(self, interface_type: str, interface_class):
|
|
86
|
-
"""Register a new interface"""
|
|
87
|
-
self._interface_type[interface_type] = interface_class
|
|
88
|
-
|
|
89
|
-
def register_many(self, interface_dict):
|
|
90
|
-
"""
|
|
91
|
-
Registers multiple profiler interfaces at once.
|
|
92
|
-
|
|
93
|
-
Args:
|
|
94
|
-
interface_dict: A dictionary mapping connection class names (strings) to their
|
|
95
|
-
corresponding profiler interface classes.
|
|
96
|
-
"""
|
|
97
|
-
for interface_type, interface_class in interface_dict.items():
|
|
98
|
-
self.register(interface_type, interface_class)
|
|
99
|
-
|
|
87
|
+
class ProfilerInterfaceFactory(Factory):
|
|
100
88
|
def create(self, interface_type: str, *args, **kwargs):
|
|
101
89
|
"""Create interface object based on interface type"""
|
|
102
90
|
interface_class = self._interface_type.get(interface_type)
|
|
@@ -118,6 +106,7 @@ profilers = {
|
|
|
118
106
|
UnityCatalogConnection.__name__: UnityCatalogProfilerInterface,
|
|
119
107
|
DatabricksConnection.__name__: DatabricksProfilerInterface,
|
|
120
108
|
Db2Connection.__name__: DB2ProfilerInterface,
|
|
109
|
+
MongoDBConnection.__name__: NoSQLProfilerInterface,
|
|
110
|
+
DynamoDBConnection.__name__: NoSQLProfilerInterface,
|
|
121
111
|
}
|
|
122
|
-
|
|
123
112
|
profiler_interface_factory.register_many(profilers)
|
|
@@ -13,14 +13,91 @@
|
|
|
13
13
|
Interfaces with database for all database engine
|
|
14
14
|
supporting sqlalchemy abstraction layer
|
|
15
15
|
"""
|
|
16
|
+
from typing import List
|
|
16
17
|
|
|
18
|
+
from pyhive.sqlalchemy_hive import HiveCompiler
|
|
19
|
+
from sqlalchemy import Column, inspect
|
|
17
20
|
|
|
21
|
+
from metadata.generated.schema.entity.data.table import Column as OMColumn
|
|
22
|
+
from metadata.generated.schema.entity.data.table import ColumnName, DataType, TableData
|
|
23
|
+
from metadata.generated.schema.entity.services.databaseService import (
|
|
24
|
+
DatabaseServiceType,
|
|
25
|
+
)
|
|
18
26
|
from metadata.profiler.interface.sqlalchemy.profiler_interface import (
|
|
19
27
|
SQAProfilerInterface,
|
|
20
28
|
)
|
|
29
|
+
from metadata.profiler.orm.converter.base import build_orm_col
|
|
21
30
|
|
|
22
31
|
|
|
23
32
|
class DatabricksProfilerInterface(SQAProfilerInterface):
|
|
33
|
+
"""Databricks profiler interface"""
|
|
34
|
+
|
|
35
|
+
def visit_column(self, *args, **kwargs):
|
|
36
|
+
result = super( # pylint: disable=bad-super-call
|
|
37
|
+
HiveCompiler, self
|
|
38
|
+
).visit_column(*args, **kwargs)
|
|
39
|
+
dot_count = result.count(".")
|
|
40
|
+
# Here the databricks uses HiveCompiler.
|
|
41
|
+
# the `result` here would be `db.schema.table` or `db.schema.table.column`
|
|
42
|
+
# for struct it will be `db.schema.table.column.nestedchild.nestedchild` etc
|
|
43
|
+
# the logic is to add the backticks to nested children.
|
|
44
|
+
if dot_count > 2:
|
|
45
|
+
splitted_result = result.split(".", 2)[-1].split(".")
|
|
46
|
+
result = ".".join(result.split(".", 2)[:-1])
|
|
47
|
+
result += "." + "`.`".join(splitted_result)
|
|
48
|
+
return result
|
|
49
|
+
|
|
24
50
|
def __init__(self, service_connection_config, **kwargs):
|
|
25
51
|
super().__init__(service_connection_config=service_connection_config, **kwargs)
|
|
26
52
|
self.set_catalog(self.session)
|
|
53
|
+
HiveCompiler.visit_column = DatabricksProfilerInterface.visit_column
|
|
54
|
+
|
|
55
|
+
def _get_struct_columns(self, columns: List[OMColumn], parent: str):
|
|
56
|
+
"""Get struct columns"""
|
|
57
|
+
|
|
58
|
+
columns_list = []
|
|
59
|
+
for idx, col in enumerate(columns):
|
|
60
|
+
if col.dataType != DataType.STRUCT:
|
|
61
|
+
col.name = ColumnName(__root__=f"{parent}.{col.name.__root__}")
|
|
62
|
+
col = build_orm_col(idx, col, DatabaseServiceType.Databricks)
|
|
63
|
+
col._set_parent( # pylint: disable=protected-access
|
|
64
|
+
self.table.__table__
|
|
65
|
+
)
|
|
66
|
+
columns_list.append(col)
|
|
67
|
+
else:
|
|
68
|
+
col = self._get_struct_columns(
|
|
69
|
+
col.children, f"{parent}.{col.name.__root__}"
|
|
70
|
+
)
|
|
71
|
+
columns_list.extend(col)
|
|
72
|
+
return columns_list
|
|
73
|
+
|
|
74
|
+
def get_columns(self) -> Column:
|
|
75
|
+
"""Get columns from table"""
|
|
76
|
+
columns = []
|
|
77
|
+
for idx, column in enumerate(self.table_entity.columns):
|
|
78
|
+
if column.dataType == DataType.STRUCT:
|
|
79
|
+
columns.extend(
|
|
80
|
+
self._get_struct_columns(column.children, column.name.__root__)
|
|
81
|
+
)
|
|
82
|
+
else:
|
|
83
|
+
col = build_orm_col(idx, column, DatabaseServiceType.Databricks)
|
|
84
|
+
col._set_parent( # pylint: disable=protected-access
|
|
85
|
+
self.table.__table__
|
|
86
|
+
)
|
|
87
|
+
columns.append(col)
|
|
88
|
+
return columns
|
|
89
|
+
|
|
90
|
+
def fetch_sample_data(self, table, columns) -> TableData:
|
|
91
|
+
"""Fetch sample data from database
|
|
92
|
+
|
|
93
|
+
Args:
|
|
94
|
+
table: ORM declarative table
|
|
95
|
+
|
|
96
|
+
Returns:
|
|
97
|
+
TableData: sample table data
|
|
98
|
+
"""
|
|
99
|
+
sampler = self._get_sampler(
|
|
100
|
+
table=table,
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
return sampler.fetch_sample_data(list(inspect(self.table).c))
|
|
@@ -39,6 +39,7 @@ from metadata.profiler.metrics.static.stddev import StdDev
|
|
|
39
39
|
from metadata.profiler.metrics.static.sum import Sum
|
|
40
40
|
from metadata.profiler.orm.functions.table_metric_computer import TableMetricComputer
|
|
41
41
|
from metadata.profiler.orm.registry import Dialects
|
|
42
|
+
from metadata.profiler.processor.metric_filter import MetricFilter
|
|
42
43
|
from metadata.profiler.processor.runner import QueryRunner
|
|
43
44
|
from metadata.utils.constants import SAMPLE_DATA_DEFAULT_COUNT
|
|
44
45
|
from metadata.utils.custom_thread_pool import CustomThreadPoolExecutor
|
|
@@ -480,7 +481,7 @@ class SQAProfilerInterface(ProfilerInterface, SQAInterfaceMixin):
|
|
|
480
481
|
self.compute_metrics_in_thread,
|
|
481
482
|
metric_func,
|
|
482
483
|
)
|
|
483
|
-
for metric_func in metric_funcs
|
|
484
|
+
for metric_func in MetricFilter.filter_empty_metrics(metric_funcs)
|
|
484
485
|
]
|
|
485
486
|
|
|
486
487
|
for future in futures:
|
|
@@ -18,15 +18,12 @@ supporting sqlalchemy abstraction layer
|
|
|
18
18
|
from metadata.ingestion.source.database.databricks.connection import (
|
|
19
19
|
get_connection as databricks_get_connection,
|
|
20
20
|
)
|
|
21
|
-
from metadata.profiler.interface.sqlalchemy.profiler_interface import (
|
|
22
|
-
|
|
21
|
+
from metadata.profiler.interface.sqlalchemy.databricks.profiler_interface import (
|
|
22
|
+
DatabricksProfilerInterface,
|
|
23
23
|
)
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
class UnityCatalogProfilerInterface(
|
|
27
|
-
def __init__(self, service_connection_config, **kwargs):
|
|
28
|
-
super().__init__(service_connection_config=service_connection_config, **kwargs)
|
|
29
|
-
|
|
26
|
+
class UnityCatalogProfilerInterface(DatabricksProfilerInterface):
|
|
30
27
|
def create_session(self):
|
|
31
28
|
self.connection = databricks_get_connection(self.service_connection_config)
|
|
32
29
|
super().create_session()
|
|
@@ -16,6 +16,7 @@ Distinct Ratio Composed Metric definition
|
|
|
16
16
|
|
|
17
17
|
from typing import Any, Dict, Optional, Tuple
|
|
18
18
|
|
|
19
|
+
from metadata.generated.schema.configuration.profilerConfiguration import MetricType
|
|
19
20
|
from metadata.profiler.metrics.core import ComposedMetric
|
|
20
21
|
from metadata.profiler.metrics.static.count import Count
|
|
21
22
|
from metadata.profiler.metrics.static.distinct_count import DistinctCount
|
|
@@ -29,7 +30,7 @@ class DistinctRatio(ComposedMetric):
|
|
|
29
30
|
|
|
30
31
|
@classmethod
|
|
31
32
|
def name(cls):
|
|
32
|
-
return
|
|
33
|
+
return MetricType.distinctProportion.value
|
|
33
34
|
|
|
34
35
|
@classmethod
|
|
35
36
|
def required_metrics(cls) -> Tuple[str, ...]:
|
|
@@ -16,6 +16,7 @@ Count Duplicates Composed Metric definition
|
|
|
16
16
|
|
|
17
17
|
from typing import Any, Dict, Optional, Tuple
|
|
18
18
|
|
|
19
|
+
from metadata.generated.schema.configuration.profilerConfiguration import MetricType
|
|
19
20
|
from metadata.profiler.metrics.core import ComposedMetric
|
|
20
21
|
from metadata.profiler.metrics.static.count import Count
|
|
21
22
|
from metadata.profiler.metrics.static.distinct_count import DistinctCount
|
|
@@ -29,7 +30,7 @@ class DuplicateCount(ComposedMetric):
|
|
|
29
30
|
|
|
30
31
|
@classmethod
|
|
31
32
|
def name(cls):
|
|
32
|
-
return
|
|
33
|
+
return MetricType.duplicateCount.value
|
|
33
34
|
|
|
34
35
|
@classmethod
|
|
35
36
|
def required_metrics(cls) -> Tuple[str, ...]:
|
|
@@ -16,6 +16,7 @@ ILIKE Ratio Composed Metric definition
|
|
|
16
16
|
|
|
17
17
|
from typing import Any, Dict, Optional, Tuple
|
|
18
18
|
|
|
19
|
+
from metadata.generated.schema.configuration.profilerConfiguration import MetricType
|
|
19
20
|
from metadata.profiler.metrics.core import ComposedMetric
|
|
20
21
|
from metadata.profiler.metrics.static.count import Count
|
|
21
22
|
from metadata.profiler.metrics.static.ilike_count import ILikeCount
|
|
@@ -29,7 +30,7 @@ class ILikeRatio(ComposedMetric):
|
|
|
29
30
|
|
|
30
31
|
@classmethod
|
|
31
32
|
def name(cls):
|
|
32
|
-
return
|
|
33
|
+
return MetricType.iLikeRatio.value
|
|
33
34
|
|
|
34
35
|
@classmethod
|
|
35
36
|
def required_metrics(cls) -> Tuple[str, ...]:
|
|
@@ -16,6 +16,7 @@ Inter Quartile Range Composed Metric definition
|
|
|
16
16
|
|
|
17
17
|
from typing import Any, Dict, Optional, Tuple
|
|
18
18
|
|
|
19
|
+
from metadata.generated.schema.configuration.profilerConfiguration import MetricType
|
|
19
20
|
from metadata.profiler.metrics.core import ComposedMetric
|
|
20
21
|
from metadata.profiler.metrics.window.first_quartile import FirstQuartile
|
|
21
22
|
from metadata.profiler.metrics.window.third_quartile import ThirdQuartile
|
|
@@ -28,7 +29,7 @@ class InterQuartileRange(ComposedMetric):
|
|
|
28
29
|
|
|
29
30
|
@classmethod
|
|
30
31
|
def name(cls):
|
|
31
|
-
return
|
|
32
|
+
return MetricType.interQuartileRange.value
|
|
32
33
|
|
|
33
34
|
@classmethod
|
|
34
35
|
def required_metrics(cls) -> Tuple[str, ...]:
|
|
@@ -16,6 +16,7 @@ LIKE Ratio Composed Metric definition
|
|
|
16
16
|
|
|
17
17
|
from typing import Any, Dict, Optional, Tuple
|
|
18
18
|
|
|
19
|
+
from metadata.generated.schema.configuration.profilerConfiguration import MetricType
|
|
19
20
|
from metadata.profiler.metrics.core import ComposedMetric
|
|
20
21
|
from metadata.profiler.metrics.static.count import Count
|
|
21
22
|
from metadata.profiler.metrics.static.like_count import LikeCount
|
|
@@ -29,7 +30,7 @@ class LikeRatio(ComposedMetric):
|
|
|
29
30
|
|
|
30
31
|
@classmethod
|
|
31
32
|
def name(cls):
|
|
32
|
-
return
|
|
33
|
+
return MetricType.likeRatio.value
|
|
33
34
|
|
|
34
35
|
@classmethod
|
|
35
36
|
def required_metrics(cls) -> Tuple[str, ...]:
|
|
@@ -16,6 +16,7 @@ Non Parametric Skew definition
|
|
|
16
16
|
|
|
17
17
|
from typing import Any, Dict, Optional, Tuple
|
|
18
18
|
|
|
19
|
+
from metadata.generated.schema.configuration.profilerConfiguration import MetricType
|
|
19
20
|
from metadata.profiler.metrics.core import ComposedMetric
|
|
20
21
|
from metadata.profiler.metrics.static.mean import Mean
|
|
21
22
|
from metadata.profiler.metrics.static.stddev import StdDev
|
|
@@ -29,7 +30,7 @@ class NonParametricSkew(ComposedMetric):
|
|
|
29
30
|
|
|
30
31
|
@classmethod
|
|
31
32
|
def name(cls):
|
|
32
|
-
return
|
|
33
|
+
return MetricType.nonParametricSkew.value
|
|
33
34
|
|
|
34
35
|
@classmethod
|
|
35
36
|
def required_metrics(cls) -> Tuple[str, ...]:
|
|
@@ -16,6 +16,7 @@ Null Ratio Composed Metric definition
|
|
|
16
16
|
|
|
17
17
|
from typing import Any, Dict, Optional, Tuple
|
|
18
18
|
|
|
19
|
+
from metadata.generated.schema.configuration.profilerConfiguration import MetricType
|
|
19
20
|
from metadata.profiler.metrics.core import ComposedMetric
|
|
20
21
|
from metadata.profiler.metrics.static.count import Count
|
|
21
22
|
from metadata.profiler.metrics.static.null_count import NullCount
|
|
@@ -29,7 +30,7 @@ class NullRatio(ComposedMetric):
|
|
|
29
30
|
|
|
30
31
|
@classmethod
|
|
31
32
|
def name(cls):
|
|
32
|
-
return
|
|
33
|
+
return MetricType.nullProportion.value
|
|
33
34
|
|
|
34
35
|
@classmethod
|
|
35
36
|
def required_metrics(cls) -> Tuple[str, ...]:
|
|
@@ -48,10 +49,12 @@ class NullRatio(ComposedMetric):
|
|
|
48
49
|
Safely compute null ratio based on the profiler
|
|
49
50
|
results of other Metrics
|
|
50
51
|
"""
|
|
52
|
+
import pandas as pd
|
|
53
|
+
|
|
51
54
|
res_count = res.get(Count.name())
|
|
52
55
|
res_null = res.get(NullCount.name())
|
|
53
56
|
|
|
54
|
-
if
|
|
55
|
-
|
|
56
|
-
|
|
57
|
+
if not pd.isnull(res_count) and not pd.isnull(res_null):
|
|
58
|
+
result = res_null / (res_null + res_count)
|
|
59
|
+
return None if pd.isnull(result) else result
|
|
57
60
|
return None
|
|
@@ -16,6 +16,7 @@ Unique Ratio Composed Metric definition
|
|
|
16
16
|
|
|
17
17
|
from typing import Any, Dict, Optional, Tuple
|
|
18
18
|
|
|
19
|
+
from metadata.generated.schema.configuration.profilerConfiguration import MetricType
|
|
19
20
|
from metadata.profiler.metrics.core import ComposedMetric
|
|
20
21
|
from metadata.profiler.metrics.static.count import Count
|
|
21
22
|
from metadata.profiler.metrics.static.unique_count import UniqueCount
|
|
@@ -29,7 +30,7 @@ class UniqueRatio(ComposedMetric):
|
|
|
29
30
|
|
|
30
31
|
@classmethod
|
|
31
32
|
def name(cls):
|
|
32
|
-
return
|
|
33
|
+
return MetricType.uniqueProportion.value
|
|
33
34
|
|
|
34
35
|
@classmethod
|
|
35
36
|
def required_metrics(cls) -> Tuple[str, ...]:
|
|
@@ -18,11 +18,14 @@ Metric Core definitions
|
|
|
18
18
|
from abc import ABC, abstractmethod
|
|
19
19
|
from enum import Enum
|
|
20
20
|
from functools import wraps
|
|
21
|
-
from typing import Any, Dict, Optional, Tuple, TypeVar
|
|
21
|
+
from typing import Any, Callable, Dict, Optional, Tuple, TypeVar
|
|
22
22
|
|
|
23
23
|
from sqlalchemy import Column
|
|
24
24
|
from sqlalchemy.orm import DeclarativeMeta, Session
|
|
25
25
|
|
|
26
|
+
from metadata.generated.schema.entity.data.table import Table
|
|
27
|
+
from metadata.profiler.adaptors.nosql_adaptor import NoSQLAdaptor
|
|
28
|
+
|
|
26
29
|
# When creating complex metrics, use inherit_cache = CACHE
|
|
27
30
|
CACHE = True
|
|
28
31
|
|
|
@@ -87,6 +90,9 @@ def add_props(**kwargs):
|
|
|
87
90
|
return inner
|
|
88
91
|
|
|
89
92
|
|
|
93
|
+
T = TypeVar("T")
|
|
94
|
+
|
|
95
|
+
|
|
90
96
|
class Metric(ABC):
|
|
91
97
|
"""
|
|
92
98
|
Parent class metric
|
|
@@ -153,6 +159,13 @@ class Metric(ABC):
|
|
|
153
159
|
"""
|
|
154
160
|
return self.col.type.python_type if self.col else None
|
|
155
161
|
|
|
162
|
+
def nosql_fn(self, client: NoSQLAdaptor) -> Callable[[Table], Optional[T]]:
|
|
163
|
+
"""
|
|
164
|
+
Return the function to be used for NoSQL clients to calculate the metric.
|
|
165
|
+
By default, returns a "do nothing" function that returns None.
|
|
166
|
+
"""
|
|
167
|
+
return lambda table: None
|
|
168
|
+
|
|
156
169
|
|
|
157
170
|
TMetric = TypeVar("TMetric", bound=Metric)
|
|
158
171
|
|
|
@@ -18,6 +18,7 @@ from typing import Any, Dict, List, Optional, Union, cast
|
|
|
18
18
|
from sqlalchemy import and_, case, column, func
|
|
19
19
|
from sqlalchemy.orm import DeclarativeMeta, Session
|
|
20
20
|
|
|
21
|
+
from metadata.generated.schema.configuration.profilerConfiguration import MetricType
|
|
21
22
|
from metadata.profiler.metrics.composed.iqr import InterQuartileRange
|
|
22
23
|
from metadata.profiler.metrics.core import HybridMetric
|
|
23
24
|
from metadata.profiler.metrics.static.count import Count
|
|
@@ -44,7 +45,7 @@ class Histogram(HybridMetric):
|
|
|
44
45
|
|
|
45
46
|
@classmethod
|
|
46
47
|
def name(cls):
|
|
47
|
-
return
|
|
48
|
+
return MetricType.histogram.value
|
|
48
49
|
|
|
49
50
|
@property
|
|
50
51
|
def metric_type(self):
|
|
@@ -42,6 +42,7 @@ from metadata.profiler.metrics.static.min_length import MinLength
|
|
|
42
42
|
from metadata.profiler.metrics.static.not_like_count import NotLikeCount
|
|
43
43
|
from metadata.profiler.metrics.static.not_regexp_match_count import NotRegexCount
|
|
44
44
|
from metadata.profiler.metrics.static.null_count import NullCount
|
|
45
|
+
from metadata.profiler.metrics.static.null_missing_count import NullMissingCount
|
|
45
46
|
from metadata.profiler.metrics.static.regexp_match_count import RegexCount
|
|
46
47
|
from metadata.profiler.metrics.static.row_count import RowCount
|
|
47
48
|
from metadata.profiler.metrics.static.stddev import StdDev
|
|
@@ -103,3 +104,6 @@ class Metrics(MetricRegistry):
|
|
|
103
104
|
|
|
104
105
|
# Hybrid Metrics
|
|
105
106
|
HISTOGRAM = Histogram
|
|
107
|
+
|
|
108
|
+
# Missing Count
|
|
109
|
+
NULL_MISSING_COUNT = NullMissingCount
|
|
@@ -21,6 +21,7 @@ from sqlalchemy.ext.compiler import compiles
|
|
|
21
21
|
from sqlalchemy.orm import DeclarativeMeta
|
|
22
22
|
from sqlalchemy.sql.functions import FunctionElement
|
|
23
23
|
|
|
24
|
+
from metadata.generated.schema.configuration.profilerConfiguration import MetricType
|
|
24
25
|
from metadata.profiler.metrics.core import CACHE, StaticMetric, _label
|
|
25
26
|
from metadata.profiler.orm.registry import Dialects
|
|
26
27
|
|
|
@@ -60,7 +61,7 @@ class ColumnCount(StaticMetric):
|
|
|
60
61
|
|
|
61
62
|
@classmethod
|
|
62
63
|
def name(cls):
|
|
63
|
-
return
|
|
64
|
+
return MetricType.columnCount.value
|
|
64
65
|
|
|
65
66
|
@classmethod
|
|
66
67
|
def is_col_metric(cls) -> bool:
|
|
@@ -21,6 +21,7 @@ from sqlalchemy.ext.compiler import compiles
|
|
|
21
21
|
from sqlalchemy.orm import DeclarativeMeta
|
|
22
22
|
from sqlalchemy.sql.functions import FunctionElement
|
|
23
23
|
|
|
24
|
+
from metadata.generated.schema.configuration.profilerConfiguration import MetricType
|
|
24
25
|
from metadata.profiler.metrics.core import CACHE, StaticMetric, _label
|
|
25
26
|
from metadata.profiler.orm.registry import Dialects
|
|
26
27
|
|
|
@@ -60,7 +61,7 @@ class ColumnNames(StaticMetric):
|
|
|
60
61
|
|
|
61
62
|
@classmethod
|
|
62
63
|
def name(cls):
|
|
63
|
-
return
|
|
64
|
+
return MetricType.columnNames.value
|
|
64
65
|
|
|
65
66
|
@classmethod
|
|
66
67
|
def is_col_metric(cls) -> bool:
|
|
@@ -17,6 +17,7 @@ Count Metric definition
|
|
|
17
17
|
|
|
18
18
|
from sqlalchemy import column, func
|
|
19
19
|
|
|
20
|
+
from metadata.generated.schema.configuration.profilerConfiguration import MetricType
|
|
20
21
|
from metadata.profiler.metrics.core import StaticMetric, _label
|
|
21
22
|
from metadata.profiler.orm.functions.count import CountFn
|
|
22
23
|
from metadata.utils.logger import profiler_logger
|
|
@@ -33,7 +34,7 @@ class Count(StaticMetric):
|
|
|
33
34
|
|
|
34
35
|
@classmethod
|
|
35
36
|
def name(cls):
|
|
36
|
-
return
|
|
37
|
+
return MetricType.valuesCount.value
|
|
37
38
|
|
|
38
39
|
@property
|
|
39
40
|
def metric_type(self):
|
|
@@ -18,6 +18,7 @@ from typing import List
|
|
|
18
18
|
|
|
19
19
|
from sqlalchemy import case, column
|
|
20
20
|
|
|
21
|
+
from metadata.generated.schema.configuration.profilerConfiguration import MetricType
|
|
21
22
|
from metadata.profiler.metrics.core import StaticMetric, _label
|
|
22
23
|
from metadata.profiler.orm.functions.sum import SumFn
|
|
23
24
|
from metadata.utils.logger import profiler_logger
|
|
@@ -40,7 +41,7 @@ class CountInSet(StaticMetric):
|
|
|
40
41
|
|
|
41
42
|
@classmethod
|
|
42
43
|
def name(cls):
|
|
43
|
-
return
|
|
44
|
+
return MetricType.countInSet.value
|
|
44
45
|
|
|
45
46
|
@property
|
|
46
47
|
def metric_type(self):
|