openmetadata-ingestion 1.3.3.0rc1__py3-none-any.whl → 1.4.0.0rc1__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/automations/runner.py +9 -0
- metadata/cli/backup.py +7 -0
- metadata/cli/lineage.py +5 -1
- metadata/cli/restore.py +7 -0
- metadata/cmd.py +2 -152
- 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 +6 -1
- 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/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 +1 -1
- metadata/generated/schema/api/data/createTableProfile.py +1 -1
- metadata/generated/schema/api/data/createTopic.py +1 -1
- metadata/generated/schema/api/data/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 +1 -1
- metadata/generated/schema/api/tests/__init__.py +1 -1
- metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
- metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
- metadata/generated/schema/api/tests/createTestCase.py +1 -1
- metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
- metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
- metadata/generated/schema/api/tests/createTestSuite.py +1 -1
- metadata/generated/schema/api/voteRequest.py +1 -1
- metadata/generated/schema/auth/__init__.py +1 -1
- metadata/generated/schema/auth/basicAuth.py +1 -1
- metadata/generated/schema/auth/basicLoginRequest.py +1 -1
- metadata/generated/schema/auth/changePasswordRequest.py +1 -1
- metadata/generated/schema/auth/createPersonalToken.py +1 -1
- metadata/generated/schema/auth/emailRequest.py +1 -1
- metadata/generated/schema/auth/emailVerificationToken.py +1 -1
- metadata/generated/schema/auth/generateToken.py +1 -1
- metadata/generated/schema/auth/jwtAuth.py +1 -1
- metadata/generated/schema/auth/loginRequest.py +1 -1
- metadata/generated/schema/auth/logoutRequest.py +1 -1
- metadata/generated/schema/auth/passwordResetRequest.py +1 -1
- metadata/generated/schema/auth/passwordResetToken.py +1 -1
- metadata/generated/schema/auth/personalAccessToken.py +1 -1
- metadata/generated/schema/auth/refreshToken.py +1 -1
- metadata/generated/schema/auth/registrationRequest.py +1 -1
- metadata/generated/schema/auth/revokePersonalToken.py +1 -1
- metadata/generated/schema/auth/revokeToken.py +1 -1
- metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
- metadata/generated/schema/auth/ssoAuth.py +1 -1
- metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
- metadata/generated/schema/configuration/__init__.py +1 -1
- metadata/generated/schema/configuration/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 +1 -1
- 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 +5 -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 +21 -20
- 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 +71 -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 +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/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 +1 -1
- metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/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 +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/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 +1 -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 +1 -1
- metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +4 -13
- metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/postgresConnection.py +2 -15
- metadata/generated/schema/entity/services/connections/database/prestoConnection.py +11 -1
- metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +2 -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 +1 -1
- metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/trinoConnection.py +6 -1
- 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 +1 -1
- metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
- metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
- metadata/generated/schema/entity/services/dashboardService.py +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 +1 -1
- metadata/generated/schema/entity/type.py +1 -1
- metadata/generated/schema/entity/utils/__init__.py +1 -1
- metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
- metadata/generated/schema/entity/utils/servicesCount.py +1 -1
- metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
- metadata/generated/schema/events/__init__.py +1 -1
- metadata/generated/schema/events/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 +32 -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 +12 -1
- metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
- metadata/generated/schema/tests/testDefinition.py +21 -1
- metadata/generated/schema/tests/testSuite.py +1 -1
- metadata/generated/schema/type/__init__.py +1 -1
- metadata/generated/schema/type/auditLog.py +1 -1
- metadata/generated/schema/type/basic.py +1 -1
- metadata/generated/schema/type/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 +87 -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 +1 -0
- metadata/ingestion/models/life_cycle.py +4 -1
- metadata/ingestion/models/patch_request.py +176 -34
- 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 +5 -2
- metadata/ingestion/ometa/mixins/server_mixin.py +48 -0
- metadata/ingestion/ometa/mixins/tests_mixin.py +55 -1
- metadata/ingestion/ometa/mixins/user_mixin.py +2 -2
- 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 +7 -1
- 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 +130 -52
- 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/metadata.py +83 -15
- metadata/ingestion/source/database/athena/query_parser.py +4 -1
- 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 +196 -43
- 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 +3 -1
- metadata/ingestion/source/database/clickhouse/query_parser.py +4 -2
- metadata/ingestion/source/database/common_db_source.py +92 -46
- 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 +40 -26
- metadata/ingestion/source/database/databricks/metadata.py +71 -19
- metadata/ingestion/source/database/databricks/queries.py +3 -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 +89 -19
- metadata/ingestion/source/database/dbt/models.py +10 -1
- metadata/ingestion/source/database/deltalake/metadata.py +18 -16
- 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 +6 -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 +9 -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 +4 -2
- metadata/ingestion/source/database/oracle/connection.py +2 -2
- metadata/ingestion/source/database/oracle/metadata.py +7 -5
- 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 +34 -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 +167 -25
- 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 +55 -10
- 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 +189 -58
- metadata/ingestion/source/database/snowflake/models.py +24 -1
- metadata/ingestion/source/database/snowflake/queries.py +143 -25
- metadata/ingestion/source/database/snowflake/query_parser.py +3 -1
- metadata/ingestion/source/database/snowflake/utils.py +167 -11
- metadata/ingestion/source/database/sql_column_handler.py +2 -0
- metadata/ingestion/source/database/sqlalchemy_source.py +2 -2
- 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 +7 -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 +3 -3
- 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/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/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/metadata.py +33 -7
- metadata/ingestion/source/storage/s3/models.py +4 -0
- 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 +79 -0
- metadata/profiler/interface/sqlalchemy/profiler_interface.py +3 -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 +39 -20
- 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 +265 -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/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/partition.py +93 -28
- metadata/utils/sqlalchemy_utils.py +15 -0
- 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.3.0rc1.dist-info → openmetadata_ingestion-1.4.0.0rc1.dist-info}/METADATA +306 -307
- {openmetadata_ingestion-1.3.3.0rc1.dist-info → openmetadata_ingestion-1.4.0.0rc1.dist-info}/RECORD +957 -894
- metadata/cli/docker.py +0 -382
- metadata/cli/openmetadata_dag_config_migration.py +0 -109
- metadata/cli/openmetadata_imports_migration.py +0 -71
- metadata/generated/schema/entity/applications/configuration/external/autoTaggerAppConfig.py +0 -28
- {openmetadata_ingestion-1.3.3.0rc1.dist-info → openmetadata_ingestion-1.4.0.0rc1.dist-info}/LICENSE +0 -0
- {openmetadata_ingestion-1.3.3.0rc1.dist-info → openmetadata_ingestion-1.4.0.0rc1.dist-info}/WHEEL +0 -0
- {openmetadata_ingestion-1.3.3.0rc1.dist-info → openmetadata_ingestion-1.4.0.0rc1.dist-info}/entry_points.txt +0 -0
- {openmetadata_ingestion-1.3.3.0rc1.dist-info → openmetadata_ingestion-1.4.0.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -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,93 @@
|
|
|
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
|
+
|
|
49
|
+
return result
|
|
50
|
+
|
|
51
|
+
HiveCompiler.visit_column = visit_column
|
|
52
|
+
|
|
24
53
|
def __init__(self, service_connection_config, **kwargs):
|
|
25
54
|
super().__init__(service_connection_config=service_connection_config, **kwargs)
|
|
26
55
|
self.set_catalog(self.session)
|
|
56
|
+
|
|
57
|
+
def _get_struct_columns(self, columns: List[OMColumn], parent: str):
|
|
58
|
+
"""Get struct columns"""
|
|
59
|
+
|
|
60
|
+
columns_list = []
|
|
61
|
+
for idx, col in enumerate(columns):
|
|
62
|
+
if col.dataType != DataType.STRUCT:
|
|
63
|
+
col.name = ColumnName(__root__=f"{parent}.{col.name.__root__}")
|
|
64
|
+
col = build_orm_col(idx, col, DatabaseServiceType.Databricks)
|
|
65
|
+
col._set_parent( # pylint: disable=protected-access
|
|
66
|
+
self.table.__table__
|
|
67
|
+
)
|
|
68
|
+
columns_list.append(col)
|
|
69
|
+
else:
|
|
70
|
+
col = self._get_struct_columns(
|
|
71
|
+
col.children, f"{parent}.{col.name.__root__}"
|
|
72
|
+
)
|
|
73
|
+
columns_list.extend(col)
|
|
74
|
+
return columns_list
|
|
75
|
+
|
|
76
|
+
def get_columns(self) -> Column:
|
|
77
|
+
"""Get columns from table"""
|
|
78
|
+
columns = []
|
|
79
|
+
for idx, column in enumerate(self.table_entity.columns):
|
|
80
|
+
if column.dataType == DataType.STRUCT:
|
|
81
|
+
columns.extend(
|
|
82
|
+
self._get_struct_columns(column.children, column.name.__root__)
|
|
83
|
+
)
|
|
84
|
+
else:
|
|
85
|
+
col = build_orm_col(idx, column, DatabaseServiceType.Databricks)
|
|
86
|
+
col._set_parent( # pylint: disable=protected-access
|
|
87
|
+
self.table.__table__
|
|
88
|
+
)
|
|
89
|
+
columns.append(col)
|
|
90
|
+
return columns
|
|
91
|
+
|
|
92
|
+
def fetch_sample_data(self, table, columns) -> TableData:
|
|
93
|
+
"""Fetch sample data from database
|
|
94
|
+
|
|
95
|
+
Args:
|
|
96
|
+
table: ORM declarative table
|
|
97
|
+
|
|
98
|
+
Returns:
|
|
99
|
+
TableData: sample table data
|
|
100
|
+
"""
|
|
101
|
+
sampler = self._get_sampler(
|
|
102
|
+
table=table,
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
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
|
|
@@ -189,6 +190,7 @@ class SQAProfilerInterface(ProfilerInterface, SQAInterfaceMixin):
|
|
|
189
190
|
runner=runner,
|
|
190
191
|
metrics=metrics,
|
|
191
192
|
conn_config=self.service_connection_config,
|
|
193
|
+
entity=self.table_entity,
|
|
192
194
|
)
|
|
193
195
|
row = table_metric_computer.compute()
|
|
194
196
|
if row:
|
|
@@ -479,7 +481,7 @@ class SQAProfilerInterface(ProfilerInterface, SQAInterfaceMixin):
|
|
|
479
481
|
self.compute_metrics_in_thread,
|
|
480
482
|
metric_func,
|
|
481
483
|
)
|
|
482
|
-
for metric_func in metric_funcs
|
|
484
|
+
for metric_func in MetricFilter.filter_empty_metrics(metric_funcs)
|
|
483
485
|
]
|
|
484
486
|
|
|
485
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):
|
|
@@ -14,9 +14,11 @@ Distinct Count Metric definition
|
|
|
14
14
|
"""
|
|
15
15
|
# pylint: disable=duplicate-code
|
|
16
16
|
|
|
17
|
+
import json
|
|
17
18
|
|
|
18
19
|
from sqlalchemy import column, distinct, func
|
|
19
20
|
|
|
21
|
+
from metadata.generated.schema.configuration.profilerConfiguration import MetricType
|
|
20
22
|
from metadata.profiler.metrics.core import StaticMetric, _label
|
|
21
23
|
from metadata.profiler.orm.functions.count import CountFn
|
|
22
24
|
from metadata.utils.logger import profiler_logger
|
|
@@ -33,7 +35,7 @@ class DistinctCount(StaticMetric):
|
|
|
33
35
|
|
|
34
36
|
@classmethod
|
|
35
37
|
def name(cls):
|
|
36
|
-
return
|
|
38
|
+
return MetricType.distinctCount.value
|
|
37
39
|
|
|
38
40
|
@property
|
|
39
41
|
def metric_type(self):
|
|
@@ -57,7 +59,14 @@ class DistinctCount(StaticMetric):
|
|
|
57
59
|
counter = Counter()
|
|
58
60
|
for df in dfs:
|
|
59
61
|
df_col_value = df[self.col.name].dropna().to_list()
|
|
60
|
-
|
|
62
|
+
try:
|
|
63
|
+
counter.update(df_col_value)
|
|
64
|
+
except TypeError as err:
|
|
65
|
+
if isinstance(df_col_value, list):
|
|
66
|
+
for value in df_col_value:
|
|
67
|
+
counter.update([json.dumps(value)])
|
|
68
|
+
else:
|
|
69
|
+
raise err
|
|
61
70
|
return len(counter.keys())
|
|
62
71
|
except Exception as err:
|
|
63
72
|
logger.debug(
|
|
@@ -16,6 +16,7 @@ ILIKE Count Metric definition
|
|
|
16
16
|
|
|
17
17
|
from sqlalchemy import case, column
|
|
18
18
|
|
|
19
|
+
from metadata.generated.schema.configuration.profilerConfiguration import MetricType
|
|
19
20
|
from metadata.profiler.metrics.core import StaticMetric, _label
|
|
20
21
|
from metadata.profiler.orm.functions.sum import SumFn
|
|
21
22
|
|
|
@@ -35,7 +36,7 @@ class ILikeCount(StaticMetric):
|
|
|
35
36
|
|
|
36
37
|
@classmethod
|
|
37
38
|
def name(cls):
|
|
38
|
-
return
|
|
39
|
+
return MetricType.iLikeCount.value
|
|
39
40
|
|
|
40
41
|
@property
|
|
41
42
|
def metric_type(self):
|
|
@@ -16,6 +16,7 @@ Like Count Metric definition
|
|
|
16
16
|
|
|
17
17
|
from sqlalchemy import case, column
|
|
18
18
|
|
|
19
|
+
from metadata.generated.schema.configuration.profilerConfiguration import MetricType
|
|
19
20
|
from metadata.profiler.metrics.core import StaticMetric, _label
|
|
20
21
|
from metadata.profiler.orm.functions.sum import SumFn
|
|
21
22
|
|
|
@@ -35,7 +36,7 @@ class LikeCount(StaticMetric):
|
|
|
35
36
|
|
|
36
37
|
@classmethod
|
|
37
38
|
def name(cls):
|
|
38
|
-
return
|
|
39
|
+
return MetricType.likeCount.value
|
|
39
40
|
|
|
40
41
|
@property
|
|
41
42
|
def metric_type(self):
|
|
@@ -12,14 +12,17 @@
|
|
|
12
12
|
"""
|
|
13
13
|
Max Metric definition
|
|
14
14
|
"""
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
from functools import partial
|
|
16
|
+
from typing import Callable, Optional
|
|
17
17
|
|
|
18
18
|
from sqlalchemy import TIME, column
|
|
19
19
|
from sqlalchemy.ext.compiler import compiles
|
|
20
20
|
from sqlalchemy.sql.functions import GenericFunction
|
|
21
21
|
|
|
22
|
-
from metadata.
|
|
22
|
+
from metadata.generated.schema.configuration.profilerConfiguration import MetricType
|
|
23
|
+
from metadata.generated.schema.entity.data.table import DataType, Table
|
|
24
|
+
from metadata.profiler.adaptors.nosql_adaptor import NoSQLAdaptor
|
|
25
|
+
from metadata.profiler.metrics.core import CACHE, StaticMetric, T, _label
|
|
23
26
|
from metadata.profiler.orm.functions.length import LenFn
|
|
24
27
|
from metadata.profiler.orm.registry import (
|
|
25
28
|
FLOAT_SET,
|
|
@@ -29,6 +32,8 @@ from metadata.profiler.orm.registry import (
|
|
|
29
32
|
is_quantifiable,
|
|
30
33
|
)
|
|
31
34
|
|
|
35
|
+
# pylint: disable=duplicate-code
|
|
36
|
+
|
|
32
37
|
|
|
33
38
|
class MaxFn(GenericFunction):
|
|
34
39
|
name = __qualname__
|
|
@@ -77,7 +82,7 @@ class Max(StaticMetric):
|
|
|
77
82
|
|
|
78
83
|
@classmethod
|
|
79
84
|
def name(cls):
|
|
80
|
-
return
|
|
85
|
+
return MetricType.max.value
|
|
81
86
|
|
|
82
87
|
@_label
|
|
83
88
|
def fn(self):
|
|
@@ -90,9 +95,23 @@ class Max(StaticMetric):
|
|
|
90
95
|
|
|
91
96
|
def df_fn(self, dfs=None):
|
|
92
97
|
"""pandas function"""
|
|
98
|
+
import pandas as pd
|
|
99
|
+
|
|
93
100
|
if is_quantifiable(self.col.type):
|
|
94
101
|
return max((df[self.col.name].max() for df in dfs))
|
|
102
|
+
|
|
95
103
|
if is_date_time(self.col.type):
|
|
96
|
-
max_ =
|
|
97
|
-
|
|
98
|
-
|
|
104
|
+
max_ = None
|
|
105
|
+
if self.col.type in {DataType.DATETIME, DataType.DATE}:
|
|
106
|
+
max_ = max((pd.to_datetime(df[self.col.name]).max() for df in dfs))
|
|
107
|
+
return None if pd.isnull(max_) else int(max_.timestamp() * 1000)
|
|
108
|
+
elif self.col.type == DataType.TIME:
|
|
109
|
+
max_ = max((pd.to_timedelta(df[self.col.name]).max() for df in dfs))
|
|
110
|
+
return None if pd.isnull(max_) else max_.seconds
|
|
111
|
+
return None
|
|
112
|
+
|
|
113
|
+
def nosql_fn(self, adaptor: NoSQLAdaptor) -> Callable[[Table], Optional[T]]:
|
|
114
|
+
"""nosql function"""
|
|
115
|
+
if is_quantifiable(self.col.type):
|
|
116
|
+
return partial(adaptor.max, column=self.col)
|
|
117
|
+
return lambda table: None
|
|
@@ -17,6 +17,7 @@ MAX_LENGTH 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.length import LenFn
|
|
22
23
|
from metadata.profiler.orm.registry import is_concatenable
|
|
@@ -36,7 +37,7 @@ class MaxLength(StaticMetric):
|
|
|
36
37
|
|
|
37
38
|
@classmethod
|
|
38
39
|
def name(cls):
|
|
39
|
-
return
|
|
40
|
+
return MetricType.maxLength.value
|
|
40
41
|
|
|
41
42
|
@property
|
|
42
43
|
def metric_type(self):
|
|
@@ -66,7 +67,7 @@ class MaxLength(StaticMetric):
|
|
|
66
67
|
max_length_list = []
|
|
67
68
|
|
|
68
69
|
for df in dfs:
|
|
69
|
-
if any(df[self.col.name]):
|
|
70
|
+
if any(df[self.col.name].dropna()):
|
|
70
71
|
max_length_list.append(
|
|
71
72
|
length_vectorize_func(
|
|
72
73
|
df[self.col.name].dropna().astype(str)
|