openmetadata-ingestion 1.2.4.0__py3-none-any.whl → 1.3.2.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.
- airflow_provider_openmetadata/lineage/runner.py +44 -5
- airflow_provider_openmetadata/lineage/status.py +1 -1
- metadata/antlr/split_listener.py +1 -4
- metadata/applications/auto_tagger.py +212 -0
- metadata/cli/app.py +47 -0
- metadata/cli/db_dump.py +7 -3
- metadata/clients/aws_client.py +4 -0
- metadata/clients/azure_client.py +85 -0
- metadata/clients/domo_client.py +0 -2
- metadata/cmd.py +24 -13
- metadata/data_insight/processor/reports/cost_analysis_report_data_processor.py +40 -48
- metadata/data_insight/processor/reports/data_processor.py +1 -0
- metadata/data_insight/processor/reports/entity_report_data_processor.py +8 -2
- metadata/data_insight/processor/reports/web_analytic_report_data_processor.py +4 -0
- metadata/data_insight/producer/cost_analysis_producer.py +78 -14
- metadata/data_insight/producer/entity_producer.py +1 -1
- metadata/data_insight/producer/producer_interface.py +1 -1
- metadata/data_insight/producer/web_analytics_producer.py +1 -1
- metadata/data_insight/source/metadata.py +21 -5
- metadata/data_quality/interface/sqlalchemy/databricks/test_suite_interface.py +29 -0
- metadata/data_quality/interface/sqlalchemy/snowflake/test_suite_interface.py +29 -0
- metadata/data_quality/interface/sqlalchemy/sqa_test_suite_interface.py +6 -6
- metadata/data_quality/interface/sqlalchemy/unity_catalog/test_suite_interface.py +35 -0
- metadata/data_quality/interface/test_suite_interface_factory.py +40 -0
- metadata/data_quality/processor/test_case_runner.py +17 -8
- metadata/data_quality/source/test_suite.py +10 -4
- metadata/data_quality/validations/base_test_handler.py +21 -17
- metadata/data_quality/validations/column/base/columnValueLengthsToBeBetween.py +38 -1
- metadata/data_quality/validations/column/base/columnValuesToBeBetween.py +36 -1
- metadata/data_quality/validations/column/base/columnValuesToBeInSet.py +27 -0
- metadata/data_quality/validations/column/base/columnValuesToBeNotInSet.py +27 -0
- metadata/data_quality/validations/column/base/columnValuesToBeNotNull.py +27 -0
- metadata/data_quality/validations/column/base/columnValuesToBeUnique.py +15 -0
- metadata/data_quality/validations/column/base/columnValuesToMatchRegex.py +27 -0
- metadata/data_quality/validations/column/base/columnValuesToNotMatchRegex.py +27 -0
- metadata/data_quality/validations/column/pandas/columnValueLengthsToBeBetween.py +23 -0
- metadata/data_quality/validations/column/pandas/columnValuesToBeBetween.py +23 -0
- metadata/data_quality/validations/column/pandas/columnValuesToBeInSet.py +11 -0
- metadata/data_quality/validations/column/pandas/columnValuesToBeNotInSet.py +11 -0
- metadata/data_quality/validations/column/pandas/columnValuesToBeNotNull.py +11 -0
- metadata/data_quality/validations/column/pandas/columnValuesToMatchRegex.py +11 -0
- metadata/data_quality/validations/column/pandas/columnValuesToNotMatchRegex.py +11 -0
- metadata/data_quality/validations/column/sqlalchemy/columnValueLengthsToBeBetween.py +27 -0
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeBetween.py +23 -0
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeInSet.py +11 -0
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeNotInSet.py +11 -0
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeNotNull.py +11 -0
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToMatchRegex.py +11 -0
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToNotMatchRegex.py +11 -0
- metadata/data_quality/validations/mixins/pandas_validator_mixin.py +13 -2
- metadata/data_quality/validations/mixins/sqa_validator_mixin.py +40 -0
- metadata/data_quality/validations/table/base/tableColumnToMatchSet.py +2 -1
- metadata/data_quality/validations/table/pandas/tableColumnToMatchSet.py +2 -1
- metadata/data_quality/validations/table/sqlalchemy/tableColumnToMatchSet.py +7 -2
- metadata/examples/workflows/bigtable.yaml +32 -0
- metadata/examples/workflows/databricks.yaml +0 -1
- metadata/examples/workflows/datalake_azure_default.yaml +29 -0
- metadata/examples/workflows/mongodb.yaml +4 -2
- metadata/examples/workflows/mstr.yaml +24 -0
- metadata/examples/workflows/sas.yaml +28 -0
- metadata/examples/workflows/unity_catalog.yaml +27 -0
- metadata/examples/workflows/unity_catalog_lineage.yaml +18 -0
- metadata/examples/workflows/unity_catalog_usage.yaml +35 -0
- metadata/generated/antlr/EntityLinkLexer.py +425 -292
- metadata/generated/antlr/EntityLinkListener.py +12 -12
- metadata/generated/antlr/EntityLinkParser.py +228 -103
- 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 +1 -1
- metadata/generated/schema/api/classification/createTag.py +1 -1
- metadata/generated/schema/api/classification/loadTags.py +1 -1
- metadata/generated/schema/api/createBot.py +2 -3
- metadata/generated/schema/api/createEventPublisherJob.py +2 -2
- 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 +2 -2
- metadata/generated/schema/api/data/createCustomProperty.py +7 -12
- 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 +2 -3
- metadata/generated/schema/api/data/createDatabaseSchema.py +2 -3
- metadata/generated/schema/api/data/createGlossary.py +2 -3
- metadata/generated/schema/api/data/createGlossaryTerm.py +2 -3
- metadata/generated/schema/api/data/createMlModel.py +1 -1
- metadata/generated/schema/api/data/createPipeline.py +2 -2
- metadata/generated/schema/api/data/createQuery.py +2 -2
- metadata/generated/schema/api/data/createSearchIndex.py +1 -1
- metadata/generated/schema/api/data/createStoredProcedure.py +2 -4
- metadata/generated/schema/api/data/createTable.py +2 -2
- 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 +8 -1
- metadata/generated/schema/api/feed/createPost.py +1 -1
- metadata/generated/schema/api/feed/createSuggestion.py +30 -0
- metadata/generated/schema/api/feed/createThread.py +5 -1
- metadata/generated/schema/api/feed/resolveTask.py +12 -1
- metadata/generated/schema/api/feed/threadCount.py +18 -14
- 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 +2 -3
- metadata/generated/schema/api/teams/createTeam.py +1 -1
- metadata/generated/schema/api/teams/createUser.py +2 -2
- metadata/generated/schema/api/tests/__init__.py +1 -1
- metadata/generated/schema/api/tests/createCustomMetric.py +4 -2
- metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
- metadata/generated/schema/api/tests/createTestCase.py +4 -1
- metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +31 -0
- metadata/generated/schema/api/tests/createTestDefinition.py +2 -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 +3 -3
- 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 +2 -2
- 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 +32 -0
- metadata/generated/schema/configuration/authConfig.py +1 -1
- metadata/generated/schema/configuration/authenticationConfiguration.py +13 -2
- metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
- metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
- metadata/generated/schema/configuration/dataQualityConfiguration.py +16 -0
- metadata/generated/schema/configuration/elasticSearchConfiguration.py +7 -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 +28 -2
- 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/slackAppConfiguration.py +1 -1
- metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
- metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
- metadata/generated/schema/dataInsight/__init__.py +1 -1
- metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
- metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
- metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
- metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
- metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
- metadata/generated/schema/dataInsight/type/__init__.py +1 -1
- metadata/generated/schema/dataInsight/type/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 +24 -5
- metadata/generated/schema/entity/applications/appRunRecord.py +2 -7
- metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/applicationConfig.py +30 -0
- metadata/generated/schema/entity/{services/connections/database/mongoDB → applications/configuration/external}/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/autoTaggerAppConfig.py +28 -0
- metadata/generated/schema/entity/applications/configuration/external/metaPilotAppConfig.py +46 -0
- metadata/generated/schema/entity/applications/configuration/internal/__init__.py +3 -0
- metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +14 -0
- metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +27 -0
- metadata/generated/schema/entity/applications/configuration/{searchIndexingApp.py → internal/searchIndexingAppConfig.py} +14 -4
- metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +3 -0
- metadata/generated/schema/entity/applications/configuration/private/external/metaPilotAppPrivateConfig.py +26 -0
- metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
- metadata/generated/schema/entity/applications/jobStatus.py +3 -3
- 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 +12 -3
- metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +12 -3
- 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 +2 -2
- metadata/generated/schema/entity/automations/workflow.py +1 -1
- metadata/generated/schema/entity/bot.py +2 -3
- metadata/generated/schema/entity/classification/__init__.py +1 -1
- metadata/generated/schema/entity/classification/classification.py +1 -1
- metadata/generated/schema/entity/classification/tag.py +2 -2
- 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 -9
- metadata/generated/schema/entity/data/dashboard.py +1 -1
- metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
- metadata/generated/schema/entity/data/database.py +4 -8
- metadata/generated/schema/entity/data/databaseSchema.py +2 -8
- metadata/generated/schema/entity/data/glossary.py +1 -1
- metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
- metadata/generated/schema/entity/data/metrics.py +1 -1
- metadata/generated/schema/entity/data/mlmodel.py +2 -2
- metadata/generated/schema/entity/data/pipeline.py +6 -9
- metadata/generated/schema/entity/data/query.py +2 -2
- 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 +3 -9
- metadata/generated/schema/entity/data/table.py +18 -12
- 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 +6 -3
- metadata/generated/schema/entity/feed/__init__.py +1 -1
- metadata/generated/schema/entity/feed/suggestion.py +61 -0
- metadata/generated/schema/entity/feed/thread.py +17 -1
- metadata/generated/schema/entity/policies/__init__.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
- metadata/generated/schema/entity/policies/filters.py +2 -5
- 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 +46 -0
- metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +2 -2
- 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 +2 -2
- metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +35 -2
- metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +2 -2
- metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +41 -0
- metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +2 -2
- metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +20 -0
- 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 +6 -1
- metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/databricksConnection.py +2 -7
- 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 +2 -2
- metadata/generated/schema/entity/services/connections/database/db2Connection.py +3 -2
- 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 +86 -0
- metadata/generated/schema/entity/services/connections/database/druidConnection.py +2 -2
- metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +2 -2
- metadata/generated/schema/entity/services/connections/database/hiveConnection.py +2 -2
- metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +3 -0
- metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +17 -0
- metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +16 -0
- metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +23 -0
- metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +43 -0
- metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +20 -0
- metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +69 -0
- metadata/generated/schema/entity/services/connections/database/icebergConnection.py +35 -0
- metadata/generated/schema/entity/services/connections/database/impalaConnection.py +2 -2
- metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +2 -2
- metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +24 -14
- metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +5 -2
- metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +8 -4
- metadata/generated/schema/entity/services/connections/database/oracleConnection.py +2 -2
- metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +9 -7
- metadata/generated/schema/entity/services/connections/database/postgresConnection.py +8 -4
- metadata/generated/schema/entity/services/connections/database/prestoConnection.py +2 -2
- metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +2 -2
- metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +3 -0
- metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +20 -0
- metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +36 -0
- metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +7 -41
- metadata/generated/schema/entity/services/connections/database/sasConnection.py +48 -0
- metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +2 -2
- metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +2 -2
- metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +2 -2
- metadata/generated/schema/entity/services/connections/database/trinoConnection.py +2 -2
- metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +90 -0
- metadata/generated/schema/entity/services/connections/database/verticaConnection.py +2 -2
- 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 +14 -2
- 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 +14 -2
- 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 +1 -1
- metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +2 -2
- metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +5 -20
- 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 +2 -8
- metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +23 -0
- 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/{adlsConection.py → adlsConnection.py} +2 -2
- 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 +16 -1
- metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +27 -22
- metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/status.py +56 -0
- 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 +4 -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 +10 -3
- 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 +2 -6
- 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 +3 -10
- metadata/generated/schema/entity/type.py +4 -19
- 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 +27 -0
- metadata/generated/schema/events/api/__init__.py +1 -1
- metadata/generated/schema/events/api/createEventSubscription.py +14 -12
- metadata/generated/schema/events/emailAlertConfig.py +1 -1
- metadata/generated/schema/events/eventFilterRule.py +13 -2
- metadata/generated/schema/events/eventSubscription.py +91 -49
- metadata/generated/schema/events/eventSubscriptionOffset.py +21 -0
- metadata/generated/schema/events/failedEvent.py +26 -0
- metadata/generated/schema/events/filterResourceDescriptor.py +27 -0
- metadata/generated/schema/events/subscriptionResourceDescriptor.py +11 -10
- metadata/generated/schema/metadataIngestion/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/application.py +40 -0
- metadata/generated/schema/metadataIngestion/applicationPipeline.py +15 -6
- metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +6 -1
- metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +11 -1
- metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +6 -3
- 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 +6 -3
- 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 +6 -3
- metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/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 +2 -2
- metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +24 -0
- 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 +8 -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 +46 -0
- 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 +21 -9
- 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 +7 -3
- metadata/generated/schema/security/credentials/gcpExternalAccount.py +37 -0
- metadata/generated/schema/security/credentials/gcpValues.py +2 -2
- 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 +14 -4
- metadata/generated/schema/security/secrets/secretsManagerProvider.py +4 -2
- metadata/generated/schema/security/securityConfiguration.py +1 -1
- metadata/generated/schema/security/ssl/__init__.py +1 -1
- metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
- metadata/generated/schema/security/ssl/verifySSLConfig.py +4 -1
- metadata/generated/schema/settings/__init__.py +1 -1
- metadata/generated/schema/settings/settings.py +1 -1
- metadata/generated/schema/system/__init__.py +1 -1
- metadata/generated/schema/system/entityError.py +17 -0
- metadata/generated/schema/system/eventPublisherJob.py +5 -19
- metadata/generated/schema/system/indexingError.py +34 -0
- 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 +43 -0
- metadata/generated/schema/tests/__init__.py +1 -1
- metadata/generated/schema/tests/assigned.py +18 -0
- metadata/generated/schema/tests/basic.py +17 -39
- metadata/generated/schema/tests/customMetric.py +4 -2
- metadata/generated/schema/tests/resolved.py +35 -0
- metadata/generated/schema/tests/testCase.py +11 -2
- metadata/generated/schema/tests/testCaseResolutionStatus.py +63 -0
- metadata/generated/schema/tests/testDefinition.py +6 -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 +10 -6
- metadata/generated/schema/type/bulkOperationResult.py +1 -1
- metadata/generated/schema/type/changeEvent.py +5 -75
- metadata/generated/schema/type/changeEventType.py +29 -0
- 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 +3 -0
- metadata/generated/schema/type/customProperties/enumConfig.py +17 -0
- metadata/generated/schema/type/customProperty.py +52 -0
- metadata/generated/schema/type/dailyCount.py +1 -1
- metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
- metadata/generated/schema/type/entityHistory.py +1 -1
- metadata/generated/schema/type/entityLineage.py +2 -1
- metadata/generated/schema/type/entityReference.py +5 -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 +7 -6
- 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 +1 -1
- metadata/generated/schema/type/profile.py +1 -1
- metadata/generated/schema/type/queryParserData.py +2 -2
- 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 +2 -2
- 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 +12 -20
- metadata/ingestion/api/delete.py +5 -2
- metadata/ingestion/api/models.py +4 -10
- metadata/ingestion/api/parser.py +3 -37
- metadata/ingestion/api/status.py +15 -4
- metadata/ingestion/api/step.py +39 -6
- metadata/ingestion/api/steps.py +34 -1
- metadata/ingestion/api/topology_runner.py +117 -168
- metadata/ingestion/bulksink/metadata_usage.py +11 -5
- metadata/ingestion/lineage/models.py +4 -0
- metadata/ingestion/lineage/parser.py +28 -12
- metadata/ingestion/lineage/sql_lineage.py +9 -17
- metadata/ingestion/models/custom_properties.py +0 -1
- metadata/ingestion/models/custom_pydantic.py +4 -2
- metadata/ingestion/models/lf_tags_model.py +33 -0
- metadata/ingestion/models/patch_request.py +160 -2
- metadata/ingestion/models/tests_data.py +9 -0
- metadata/ingestion/models/topology.py +177 -60
- metadata/ingestion/ometa/auth_provider.py +0 -349
- metadata/ingestion/ometa/client.py +12 -3
- metadata/ingestion/ometa/mixins/custom_property_mixin.py +11 -11
- metadata/ingestion/ometa/mixins/es_mixin.py +17 -0
- metadata/ingestion/ometa/mixins/patch_mixin.py +21 -72
- metadata/ingestion/ometa/mixins/suggestions_mixin.py +41 -0
- metadata/ingestion/ometa/mixins/table_mixin.py +18 -0
- metadata/ingestion/ometa/mixins/tests_mixin.py +24 -3
- metadata/ingestion/ometa/mixins/user_mixin.py +117 -22
- metadata/ingestion/ometa/ometa_api.py +19 -26
- metadata/ingestion/ometa/routes.py +7 -0
- metadata/ingestion/processor/query_parser.py +9 -2
- metadata/ingestion/sink/metadata_rest.py +29 -8
- metadata/ingestion/source/dashboard/dashboard_service.py +38 -61
- metadata/ingestion/source/dashboard/domodashboard/metadata.py +13 -14
- metadata/ingestion/source/dashboard/lightdash/metadata.py +2 -1
- metadata/ingestion/source/dashboard/looker/metadata.py +41 -29
- metadata/ingestion/source/dashboard/looker/utils.py +4 -2
- metadata/ingestion/source/dashboard/metabase/client.py +4 -0
- metadata/ingestion/source/dashboard/metabase/metadata.py +28 -10
- metadata/ingestion/source/dashboard/metabase/models.py +2 -2
- metadata/ingestion/source/dashboard/mode/client.py +10 -23
- metadata/ingestion/source/dashboard/mode/connection.py +6 -1
- metadata/ingestion/source/dashboard/mode/metadata.py +8 -4
- metadata/ingestion/source/dashboard/mstr/client.py +208 -0
- metadata/ingestion/source/dashboard/mstr/connection.py +53 -0
- metadata/ingestion/source/dashboard/mstr/metadata.py +182 -0
- metadata/ingestion/source/dashboard/mstr/models.py +144 -0
- metadata/ingestion/source/dashboard/powerbi/client.py +4 -1
- metadata/ingestion/source/dashboard/powerbi/metadata.py +15 -10
- metadata/ingestion/source/dashboard/qliksense/metadata.py +11 -7
- metadata/ingestion/source/dashboard/quicksight/metadata.py +9 -5
- metadata/ingestion/source/dashboard/redash/metadata.py +23 -14
- metadata/ingestion/source/dashboard/superset/api_source.py +11 -8
- metadata/ingestion/source/dashboard/superset/client.py +16 -9
- metadata/ingestion/source/dashboard/superset/connection.py +3 -3
- metadata/ingestion/source/dashboard/superset/db_source.py +14 -11
- metadata/ingestion/source/dashboard/superset/mixin.py +22 -18
- metadata/ingestion/source/dashboard/superset/queries.py +1 -1
- metadata/ingestion/source/dashboard/tableau/client.py +91 -11
- metadata/ingestion/source/dashboard/tableau/connection.py +10 -1
- metadata/ingestion/source/dashboard/tableau/metadata.py +76 -70
- metadata/ingestion/source/dashboard/tableau/models.py +0 -8
- metadata/ingestion/source/dashboard/tableau/queries.py +5 -5
- metadata/ingestion/source/database/athena/client.py +80 -0
- metadata/ingestion/source/database/athena/connection.py +7 -0
- metadata/ingestion/source/database/athena/metadata.py +161 -19
- metadata/ingestion/source/database/azuresql/connection.py +21 -3
- metadata/ingestion/source/database/azuresql/metadata.py +0 -1
- metadata/ingestion/source/database/bigquery/connection.py +24 -3
- metadata/ingestion/source/database/bigquery/helper.py +68 -1
- metadata/ingestion/source/database/bigquery/metadata.py +49 -28
- metadata/ingestion/source/database/bigquery/queries.py +33 -4
- metadata/ingestion/source/database/bigquery/query_parser.py +13 -0
- metadata/ingestion/source/database/bigquery/usage.py +1 -3
- metadata/ingestion/source/database/bigtable/client.py +62 -0
- metadata/ingestion/source/database/bigtable/connection.py +116 -0
- metadata/ingestion/source/database/bigtable/metadata.py +224 -0
- metadata/ingestion/source/database/bigtable/models.py +60 -0
- metadata/ingestion/source/database/column_helpers.py +0 -10
- metadata/ingestion/source/database/column_type_parser.py +11 -5
- metadata/ingestion/source/database/common_db_source.py +33 -8
- metadata/ingestion/source/database/common_nosql_source.py +27 -6
- metadata/ingestion/source/database/database_service.py +89 -7
- metadata/ingestion/source/database/databricks/client.py +55 -103
- metadata/ingestion/source/database/databricks/connection.py +16 -55
- metadata/ingestion/source/database/databricks/lineage.py +29 -26
- metadata/ingestion/source/database/databricks/metadata.py +534 -11
- metadata/ingestion/source/database/databricks/queries.py +27 -0
- metadata/ingestion/source/database/databricks/query_parser.py +5 -1
- metadata/ingestion/source/database/databricks/usage.py +3 -3
- metadata/ingestion/source/database/datalake/connection.py +33 -18
- metadata/ingestion/source/database/datalake/metadata.py +113 -27
- metadata/ingestion/source/database/dbt/dbt_config.py +7 -14
- metadata/ingestion/source/database/dbt/dbt_service.py +10 -14
- metadata/ingestion/source/database/dbt/dbt_utils.py +3 -1
- metadata/ingestion/source/database/dbt/metadata.py +27 -53
- metadata/ingestion/source/database/deltalake/metadata.py +6 -3
- metadata/ingestion/source/database/domodatabase/metadata.py +7 -6
- metadata/ingestion/source/database/doris/connection.py +72 -0
- metadata/ingestion/source/database/doris/metadata.py +315 -0
- metadata/ingestion/source/database/doris/queries.py +54 -0
- metadata/ingestion/source/database/doris/utils.py +64 -0
- metadata/ingestion/source/database/extended_sample_data.py +532 -0
- metadata/ingestion/source/database/glue/metadata.py +8 -5
- metadata/ingestion/source/database/hive/connection.py +0 -2
- metadata/ingestion/source/database/hive/utils.py +3 -0
- metadata/ingestion/source/database/iceberg/catalog/__init__.py +65 -0
- metadata/ingestion/source/database/iceberg/catalog/base.py +40 -0
- metadata/ingestion/source/database/iceberg/catalog/dynamodb.py +102 -0
- metadata/ingestion/source/database/iceberg/catalog/glue.py +88 -0
- metadata/ingestion/source/database/iceberg/catalog/hive.py +51 -0
- metadata/ingestion/source/database/iceberg/catalog/rest.py +84 -0
- metadata/ingestion/source/database/iceberg/connection.py +68 -0
- metadata/ingestion/source/database/iceberg/fs/__init__.py +52 -0
- metadata/ingestion/source/database/iceberg/fs/azure.py +44 -0
- metadata/ingestion/source/database/iceberg/fs/base.py +30 -0
- metadata/ingestion/source/database/iceberg/fs/s3.py +77 -0
- metadata/ingestion/source/database/iceberg/helper.py +124 -0
- metadata/ingestion/source/database/iceberg/metadata.py +311 -0
- metadata/ingestion/source/database/iceberg/models.py +66 -0
- metadata/ingestion/source/database/life_cycle_query_mixin.py +72 -3
- metadata/ingestion/source/database/mongodb/connection.py +1 -5
- metadata/ingestion/source/database/mssql/lineage.py +3 -0
- metadata/ingestion/source/database/mssql/metadata.py +108 -4
- metadata/ingestion/source/database/mssql/models.py +30 -0
- metadata/ingestion/source/database/mssql/queries.py +178 -1
- metadata/ingestion/source/database/mssql/usage.py +5 -1
- metadata/ingestion/source/database/mssql/utils.py +207 -4
- metadata/ingestion/source/database/mysql/connection.py +14 -0
- metadata/ingestion/source/database/mysql/metadata.py +0 -2
- metadata/ingestion/source/database/oracle/metadata.py +108 -2
- metadata/ingestion/source/database/oracle/models.py +30 -0
- metadata/ingestion/source/database/oracle/queries.py +99 -18
- metadata/ingestion/source/database/oracle/utils.py +0 -1
- metadata/ingestion/source/database/postgres/connection.py +15 -0
- metadata/ingestion/source/database/postgres/lineage.py +32 -14
- metadata/ingestion/source/database/postgres/metadata.py +15 -7
- metadata/ingestion/source/database/postgres/pgspider/lineage.py +0 -1
- metadata/ingestion/source/database/postgres/queries.py +4 -2
- metadata/ingestion/source/database/postgres/query_parser.py +4 -72
- metadata/ingestion/source/database/postgres/usage.py +41 -0
- metadata/ingestion/source/database/postgres/utils.py +34 -0
- metadata/ingestion/source/database/query_parser_source.py +8 -2
- metadata/ingestion/source/database/redshift/metadata.py +14 -4
- metadata/ingestion/source/database/redshift/queries.py +10 -4
- metadata/ingestion/source/database/redshift/query_parser.py +16 -0
- metadata/ingestion/source/database/redshift/usage.py +0 -2
- metadata/ingestion/source/database/salesforce/metadata.py +32 -3
- metadata/ingestion/source/database/sample_data.py +120 -6
- metadata/ingestion/source/database/sas/client.py +184 -0
- metadata/ingestion/source/database/sas/connection.py +47 -0
- metadata/ingestion/source/database/sas/extension_attr.py +103 -0
- metadata/ingestion/source/database/sas/metadata.py +914 -0
- metadata/ingestion/source/database/snowflake/metadata.py +34 -48
- metadata/ingestion/source/database/snowflake/models.py +6 -1
- metadata/ingestion/source/database/snowflake/queries.py +6 -4
- metadata/ingestion/source/database/snowflake/query_parser.py +5 -20
- metadata/ingestion/source/database/snowflake/utils.py +23 -8
- metadata/ingestion/source/database/stored_procedures_mixin.py +12 -8
- metadata/ingestion/source/database/unitycatalog/__init__.py +0 -0
- metadata/ingestion/source/database/unitycatalog/client.py +87 -0
- metadata/ingestion/source/database/unitycatalog/connection.py +97 -0
- metadata/ingestion/source/database/{databricks/unity_catalog → unitycatalog}/lineage.py +11 -11
- metadata/ingestion/source/database/{databricks/unity_catalog → unitycatalog}/metadata.py +42 -49
- metadata/ingestion/source/database/unitycatalog/query_parser.py +60 -0
- metadata/ingestion/source/database/unitycatalog/usage.py +31 -0
- metadata/ingestion/source/database/usage_source.py +3 -2
- metadata/ingestion/source/messaging/common_broker_source.py +15 -11
- metadata/ingestion/source/messaging/kafka/connection.py +45 -4
- metadata/ingestion/source/messaging/kinesis/metadata.py +6 -3
- metadata/ingestion/source/messaging/messaging_service.py +6 -2
- metadata/ingestion/source/metadata/amundsen/metadata.py +10 -7
- metadata/ingestion/source/metadata/atlas/metadata.py +5 -5
- metadata/ingestion/source/mlmodel/mlflow/metadata.py +5 -2
- metadata/ingestion/source/mlmodel/mlmodel_service.py +6 -2
- metadata/ingestion/source/mlmodel/sagemaker/metadata.py +20 -8
- metadata/ingestion/source/pipeline/airflow/connection.py +0 -12
- metadata/ingestion/source/pipeline/airflow/lineage_parser.py +12 -6
- metadata/ingestion/source/pipeline/airflow/metadata.py +63 -34
- metadata/ingestion/source/pipeline/airflow/models.py +5 -4
- metadata/ingestion/source/pipeline/dagster/metadata.py +7 -4
- metadata/ingestion/source/pipeline/databrickspipeline/connection.py +1 -5
- metadata/ingestion/source/pipeline/databrickspipeline/metadata.py +14 -11
- metadata/ingestion/source/pipeline/domopipeline/metadata.py +7 -4
- metadata/ingestion/source/pipeline/gluepipeline/metadata.py +5 -2
- metadata/ingestion/source/pipeline/pipeline_service.py +6 -2
- metadata/ingestion/source/pipeline/spline/metadata.py +0 -1
- metadata/ingestion/source/search/elasticsearch/connection.py +4 -1
- metadata/ingestion/source/search/elasticsearch/metadata.py +1 -2
- metadata/ingestion/source/search/search_service.py +6 -2
- metadata/ingestion/source/storage/s3/metadata.py +22 -17
- metadata/ingestion/source/storage/storage_service.py +53 -11
- metadata/ingestion/stage/table_usage.py +9 -2
- metadata/mixins/sqalchemy/sqa_mixin.py +14 -7
- metadata/parsers/protobuf_parser.py +29 -11
- metadata/pii/processor.py +9 -2
- metadata/pii/scanners/ner_scanner.py +5 -3
- metadata/profiler/api/models.py +19 -1
- metadata/profiler/interface/pandas/profiler_interface.py +59 -18
- metadata/profiler/interface/profiler_interface.py +14 -4
- metadata/profiler/interface/profiler_interface_factory.py +49 -14
- metadata/profiler/interface/sqlalchemy/bigquery/profiler_interface.py +3 -0
- metadata/profiler/interface/sqlalchemy/databricks/profiler_interface.py +26 -0
- metadata/profiler/interface/sqlalchemy/db2/__init__.py +0 -0
- metadata/profiler/interface/sqlalchemy/db2/profiler_interface.py +38 -0
- metadata/profiler/interface/sqlalchemy/mariadb/profiler_interface.py +85 -0
- metadata/profiler/interface/sqlalchemy/profiler_interface.py +77 -34
- metadata/profiler/interface/sqlalchemy/single_store/profiler_interface.py +2 -2
- metadata/profiler/interface/sqlalchemy/snowflake/profiler_interface.py +7 -0
- metadata/profiler/interface/sqlalchemy/trino/profiler_interface.py +2 -2
- metadata/profiler/interface/sqlalchemy/unity_catalog/profiler_interface.py +33 -0
- metadata/profiler/metrics/composed/null_ratio.py +1 -1
- metadata/profiler/metrics/hybrid/histogram.py +1 -0
- metadata/profiler/metrics/static/max.py +4 -1
- metadata/profiler/metrics/static/min.py +4 -1
- metadata/profiler/metrics/system/queries/snowflake.py +89 -17
- metadata/profiler/metrics/system/system.py +62 -20
- metadata/profiler/orm/functions/conn_test.py +1 -0
- metadata/profiler/orm/functions/length.py +1 -0
- metadata/profiler/orm/functions/median.py +9 -1
- metadata/profiler/orm/functions/sum.py +1 -0
- metadata/profiler/orm/functions/table_metric_computer.py +462 -0
- metadata/profiler/orm/registry.py +2 -0
- metadata/profiler/processor/core.py +129 -62
- metadata/profiler/processor/default.py +14 -3
- metadata/profiler/processor/handle_partition.py +2 -2
- metadata/profiler/processor/processor.py +10 -7
- metadata/profiler/processor/sample_data_handler.py +6 -2
- metadata/profiler/processor/sampler/sqlalchemy/bigquery/sampler.py +31 -3
- metadata/profiler/processor/sampler/sqlalchemy/sampler.py +29 -6
- metadata/profiler/processor/sampler/sqlalchemy/trino/sampler.py +10 -4
- metadata/profiler/source/base/profiler_source.py +5 -2
- metadata/profiler/source/bigquery/type_mapper.py +0 -1
- metadata/profiler/source/databricks/profiler_source.py +36 -0
- metadata/profiler/source/mariadb/functions/median.py +20 -0
- metadata/profiler/source/mariadb/metrics/window/first_quartile.py +10 -0
- metadata/profiler/source/mariadb/metrics/window/median.py +10 -0
- metadata/profiler/source/mariadb/metrics/window/third_quartile.py +10 -0
- metadata/profiler/source/metadata.py +49 -10
- metadata/profiler/source/metadata_ext.py +16 -50
- metadata/profiler/source/profiler_source_factory.py +8 -0
- metadata/py.typed +0 -0
- metadata/readers/dataframe/json.py +5 -4
- metadata/readers/file/api_reader.py +0 -1
- metadata/utils/constants.py +5 -0
- metadata/utils/credentials.py +36 -19
- metadata/utils/datalake/datalake_utils.py +369 -129
- metadata/utils/entity_link.py +26 -6
- metadata/utils/execution_time_tracker.py +199 -0
- metadata/utils/filters.py +4 -0
- metadata/utils/fqn.py +20 -0
- metadata/utils/helpers.py +34 -39
- metadata/utils/importer.py +2 -3
- metadata/utils/life_cycle_utils.py +4 -4
- metadata/utils/logger.py +13 -2
- metadata/utils/partition.py +10 -5
- metadata/utils/secrets/aws_based_secrets_manager.py +67 -4
- metadata/utils/secrets/aws_secrets_manager.py +7 -2
- metadata/utils/secrets/aws_ssm_secrets_manager.py +7 -2
- metadata/utils/secrets/azure_kv_secrets_manager.py +132 -0
- metadata/utils/secrets/{noop_secrets_manager.py → db_secrets_manager.py} +4 -3
- metadata/utils/secrets/external_secrets_manager.py +25 -3
- metadata/utils/secrets/secrets_manager_factory.py +15 -33
- metadata/utils/{source_hash_utils.py → source_hash.py} +10 -1
- metadata/utils/sqlalchemy_utils.py +21 -0
- metadata/utils/storage_metadata_config.py +42 -14
- metadata/utils/tag_utils.py +5 -2
- metadata/workflow/application.py +154 -0
- metadata/workflow/application_output_handler.py +34 -0
- metadata/workflow/base.py +88 -153
- metadata/workflow/data_insight.py +8 -7
- metadata/workflow/data_quality.py +3 -2
- metadata/workflow/ingestion.py +203 -0
- metadata/workflow/metadata.py +2 -3
- metadata/workflow/output_handler.py +226 -0
- metadata/workflow/profiler.py +2 -2
- metadata/workflow/usage.py +3 -4
- metadata/workflow/workflow_output_handler.py +15 -255
- metadata/workflow/workflow_status_mixin.py +44 -52
- openmetadata_ingestion-1.3.2.0rc1.dist-info/METADATA +758 -0
- {openmetadata_ingestion-1.2.4.0.dist-info → openmetadata_ingestion-1.3.2.0rc1.dist-info}/RECORD +870 -762
- {openmetadata_ingestion-1.2.4.0.dist-info → openmetadata_ingestion-1.3.2.0rc1.dist-info}/WHEEL +1 -1
- metadata/generated/schema/entity/applications/appConfig.py +0 -21
- metadata/generated/schema/entity/applications/configuration/dataInsightsApp.py +0 -17
- metadata/generated/schema/entity/applications/configuration/externalAppIngestionConfig.py +0 -38
- metadata/generated/schema/entity/services/connections/database/mongoDB/mongoDBValues.py +0 -44
- metadata/generated/schema/events/dataInsightAlertConfig.py +0 -17
- metadata/generated/schema/events/entitySpelFilters.py +0 -19
- metadata/ingestion/models/es_documents.py +0 -339
- metadata/ingestion/ometa/mixins/glossary_mixin.py +0 -501
- metadata/ingestion/ometa/provider_registry.py +0 -144
- metadata/ingestion/source/database/databricks/legacy/lineage.py +0 -51
- metadata/ingestion/source/database/databricks/legacy/metadata.py +0 -339
- metadata/ingestion/source/metadata/metadata_elasticsearch/metadata.py +0 -144
- metadata/profiler/orm/functions/table_metric_construct.py +0 -365
- metadata/utils/secrets/client/loader.py +0 -78
- openmetadata_ingestion-1.2.4.0.dist-info/METADATA +0 -429
- /metadata/examples/workflows/{datalake_azure.yaml → datalake_azure_client_secret.yaml} +0 -0
- /metadata/ingestion/source/{database/databricks/legacy → dashboard/mstr}/__init__.py +0 -0
- /metadata/ingestion/source/database/{databricks/unity_catalog → bigtable}/__init__.py +0 -0
- /metadata/ingestion/source/{metadata/metadata_elasticsearch → database/doris}/__init__.py +0 -0
- /metadata/{utils/secrets/client → ingestion/source/database/sas}/__init__.py +0 -0
- /metadata/ingestion/source/database/{databricks → unitycatalog}/models.py +0 -0
- {openmetadata_ingestion-1.2.4.0.dist-info → openmetadata_ingestion-1.3.2.0rc1.dist-info}/LICENSE +0 -0
- {openmetadata_ingestion-1.2.4.0.dist-info → openmetadata_ingestion-1.3.2.0rc1.dist-info}/entry_points.txt +0 -0
- {openmetadata_ingestion-1.2.4.0.dist-info → openmetadata_ingestion-1.3.2.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -13,11 +13,10 @@ Databricks Unity Catalog Source source methods.
|
|
|
13
13
|
"""
|
|
14
14
|
import json
|
|
15
15
|
import traceback
|
|
16
|
-
from typing import Any,
|
|
16
|
+
from typing import Any, Iterable, List, Optional, Tuple, Union
|
|
17
17
|
|
|
18
18
|
from databricks.sdk.service.catalog import ColumnInfo
|
|
19
19
|
from databricks.sdk.service.catalog import TableConstraint as DBTableConstraint
|
|
20
|
-
from databricks.sdk.service.catalog import TableConstraintList
|
|
21
20
|
|
|
22
21
|
from metadata.generated.schema.api.data.createDatabase import CreateDatabaseRequest
|
|
23
22
|
from metadata.generated.schema.api.data.createDatabaseSchema import (
|
|
@@ -38,8 +37,11 @@ from metadata.generated.schema.entity.data.table import (
|
|
|
38
37
|
TableConstraint,
|
|
39
38
|
TableType,
|
|
40
39
|
)
|
|
41
|
-
from metadata.generated.schema.entity.services.connections.database.
|
|
42
|
-
|
|
40
|
+
from metadata.generated.schema.entity.services.connections.database.unityCatalogConnection import (
|
|
41
|
+
UnityCatalogConnection,
|
|
42
|
+
)
|
|
43
|
+
from metadata.generated.schema.entity.services.ingestionPipelines.status import (
|
|
44
|
+
StackTraceError,
|
|
43
45
|
)
|
|
44
46
|
from metadata.generated.schema.metadataIngestion.databaseServiceMetadataPipeline import (
|
|
45
47
|
DatabaseServiceMetadataPipeline,
|
|
@@ -47,22 +49,22 @@ from metadata.generated.schema.metadataIngestion.databaseServiceMetadataPipeline
|
|
|
47
49
|
from metadata.generated.schema.metadataIngestion.workflow import (
|
|
48
50
|
Source as WorkflowSource,
|
|
49
51
|
)
|
|
50
|
-
from metadata.ingestion.api.models import Either
|
|
52
|
+
from metadata.ingestion.api.models import Either
|
|
51
53
|
from metadata.ingestion.api.steps import InvalidSourceException
|
|
52
54
|
from metadata.ingestion.lineage.sql_lineage import get_column_fqn
|
|
53
55
|
from metadata.ingestion.models.ometa_classification import OMetaTagAndClassification
|
|
54
56
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
55
57
|
from metadata.ingestion.source.database.column_type_parser import ColumnTypeParser
|
|
56
58
|
from metadata.ingestion.source.database.database_service import DatabaseServiceSource
|
|
57
|
-
from metadata.ingestion.source.database.
|
|
58
|
-
from metadata.ingestion.source.database.
|
|
59
|
+
from metadata.ingestion.source.database.multi_db_source import MultiDBSource
|
|
60
|
+
from metadata.ingestion.source.database.stored_procedures_mixin import QueryByProcedure
|
|
61
|
+
from metadata.ingestion.source.database.unitycatalog.connection import get_connection
|
|
62
|
+
from metadata.ingestion.source.database.unitycatalog.models import (
|
|
59
63
|
ColumnJson,
|
|
60
64
|
ElementType,
|
|
61
65
|
ForeignConstrains,
|
|
62
66
|
Type,
|
|
63
67
|
)
|
|
64
|
-
from metadata.ingestion.source.database.multi_db_source import MultiDBSource
|
|
65
|
-
from metadata.ingestion.source.database.stored_procedures_mixin import QueryByProcedure
|
|
66
68
|
from metadata.ingestion.source.models import TableView
|
|
67
69
|
from metadata.utils import fqn
|
|
68
70
|
from metadata.utils.db_utils import get_view_lineage
|
|
@@ -72,20 +74,7 @@ from metadata.utils.logger import ingestion_logger
|
|
|
72
74
|
logger = ingestion_logger()
|
|
73
75
|
|
|
74
76
|
|
|
75
|
-
|
|
76
|
-
@classmethod
|
|
77
|
-
def from_dict(cls, dct: Dict[str, Any]) -> "TableConstraintList":
|
|
78
|
-
return cls(
|
|
79
|
-
table_constraints=[
|
|
80
|
-
DBTableConstraint.from_dict(constraint) for constraint in dct
|
|
81
|
-
]
|
|
82
|
-
)
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
TableConstraintList.from_dict = from_dict
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
class DatabricksUnityCatalogSource(DatabaseServiceSource, MultiDBSource):
|
|
77
|
+
class UnitycatalogSource(DatabaseServiceSource, MultiDBSource):
|
|
89
78
|
"""
|
|
90
79
|
Implements the necessary methods to extract
|
|
91
80
|
Database metadata from Databricks Source using
|
|
@@ -100,7 +89,7 @@ class DatabricksUnityCatalogSource(DatabaseServiceSource, MultiDBSource):
|
|
|
100
89
|
)
|
|
101
90
|
self.context.table_views = []
|
|
102
91
|
self.metadata = metadata
|
|
103
|
-
self.service_connection:
|
|
92
|
+
self.service_connection: UnityCatalogConnection = (
|
|
104
93
|
self.config.serviceConnection.__root__.config
|
|
105
94
|
)
|
|
106
95
|
self.client = get_connection(self.service_connection)
|
|
@@ -118,10 +107,10 @@ class DatabricksUnityCatalogSource(DatabaseServiceSource, MultiDBSource):
|
|
|
118
107
|
@classmethod
|
|
119
108
|
def create(cls, config_dict, metadata: OpenMetadata):
|
|
120
109
|
config: WorkflowSource = WorkflowSource.parse_obj(config_dict)
|
|
121
|
-
connection:
|
|
122
|
-
if not isinstance(connection,
|
|
110
|
+
connection: UnityCatalogConnection = config.serviceConnection.__root__.config
|
|
111
|
+
if not isinstance(connection, UnityCatalogConnection):
|
|
123
112
|
raise InvalidSourceException(
|
|
124
|
-
f"Expected
|
|
113
|
+
f"Expected UnityCatalogConnection, but got {connection}"
|
|
125
114
|
)
|
|
126
115
|
return cls(config, metadata)
|
|
127
116
|
|
|
@@ -164,7 +153,7 @@ class DatabricksUnityCatalogSource(DatabaseServiceSource, MultiDBSource):
|
|
|
164
153
|
StackTraceError(
|
|
165
154
|
name=catalog_name,
|
|
166
155
|
error=f"Unexpected exception to get database name [{catalog_name}]: {exc}",
|
|
167
|
-
|
|
156
|
+
stackTrace=traceback.format_exc(),
|
|
168
157
|
)
|
|
169
158
|
)
|
|
170
159
|
|
|
@@ -210,7 +199,7 @@ class DatabricksUnityCatalogSource(DatabaseServiceSource, MultiDBSource):
|
|
|
210
199
|
StackTraceError(
|
|
211
200
|
name=schema.name,
|
|
212
201
|
error=f"Unexpected exception to get database schema [{schema.name}]: {exc}",
|
|
213
|
-
|
|
202
|
+
stackTrace=traceback.format_exc(),
|
|
214
203
|
)
|
|
215
204
|
)
|
|
216
205
|
|
|
@@ -233,7 +222,7 @@ class DatabricksUnityCatalogSource(DatabaseServiceSource, MultiDBSource):
|
|
|
233
222
|
)
|
|
234
223
|
)
|
|
235
224
|
|
|
236
|
-
def get_tables_name_and_type(self) ->
|
|
225
|
+
def get_tables_name_and_type(self) -> Iterable[Tuple[str, str]]:
|
|
237
226
|
"""
|
|
238
227
|
Handle table and views.
|
|
239
228
|
|
|
@@ -281,7 +270,7 @@ class DatabricksUnityCatalogSource(DatabaseServiceSource, MultiDBSource):
|
|
|
281
270
|
StackTraceError(
|
|
282
271
|
name=table.Name,
|
|
283
272
|
error=f"Unexpected exception to get table [{table.Name}]: {exc}",
|
|
284
|
-
|
|
273
|
+
stackTrace=traceback.format_exc(),
|
|
285
274
|
)
|
|
286
275
|
)
|
|
287
276
|
|
|
@@ -343,12 +332,12 @@ class DatabricksUnityCatalogSource(DatabaseServiceSource, MultiDBSource):
|
|
|
343
332
|
left=StackTraceError(
|
|
344
333
|
name=table_name,
|
|
345
334
|
error=f"Unexpected exception to yield table [{table_name}]: {exc}",
|
|
346
|
-
|
|
335
|
+
stackTrace=traceback.format_exc(),
|
|
347
336
|
)
|
|
348
337
|
)
|
|
349
338
|
|
|
350
339
|
def get_table_constraints(
|
|
351
|
-
self, constraints:
|
|
340
|
+
self, constraints: List[DBTableConstraint]
|
|
352
341
|
) -> Tuple[List[TableConstraint], List[ForeignConstrains]]:
|
|
353
342
|
"""
|
|
354
343
|
Function to handle table constraint for the current table and add it to context
|
|
@@ -356,23 +345,22 @@ class DatabricksUnityCatalogSource(DatabaseServiceSource, MultiDBSource):
|
|
|
356
345
|
|
|
357
346
|
primary_constraints = []
|
|
358
347
|
foreign_constraints = []
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
columns=constraint.primary_key_constraint.child_columns,
|
|
366
|
-
)
|
|
348
|
+
for constraint in constraints:
|
|
349
|
+
if constraint.primary_key_constraint:
|
|
350
|
+
primary_constraints.append(
|
|
351
|
+
TableConstraint(
|
|
352
|
+
constraintType=ConstraintType.PRIMARY_KEY,
|
|
353
|
+
columns=constraint.primary_key_constraint.child_columns,
|
|
367
354
|
)
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
355
|
+
)
|
|
356
|
+
if constraint.foreign_key_constraint:
|
|
357
|
+
foreign_constraints.append(
|
|
358
|
+
ForeignConstrains(
|
|
359
|
+
child_columns=constraint.foreign_key_constraint.child_columns,
|
|
360
|
+
parent_columns=constraint.foreign_key_constraint.parent_columns,
|
|
361
|
+
parent_table=constraint.foreign_key_constraint.parent_table,
|
|
375
362
|
)
|
|
363
|
+
)
|
|
376
364
|
return primary_constraints, foreign_constraints
|
|
377
365
|
|
|
378
366
|
def _get_foreign_constraints(self, foreign_columns) -> List[TableConstraint]:
|
|
@@ -471,11 +459,16 @@ class DatabricksUnityCatalogSource(DatabaseServiceSource, MultiDBSource):
|
|
|
471
459
|
)
|
|
472
460
|
|
|
473
461
|
def get_columns(self, column_data: List[ColumnInfo]) -> Iterable[Column]:
|
|
474
|
-
|
|
462
|
+
"""
|
|
463
|
+
process table regular columns info
|
|
464
|
+
"""
|
|
475
465
|
|
|
476
466
|
for column in column_data:
|
|
477
467
|
if column.type_text.lower().startswith("union"):
|
|
478
468
|
column.type_text = column.Type.replace(" ", "")
|
|
469
|
+
if column.type_text.lower() == "struct":
|
|
470
|
+
column.type_text = "struct<>"
|
|
471
|
+
|
|
479
472
|
parsed_string = ColumnTypeParser._parse_datatype_string( # pylint: disable=protected-access
|
|
480
473
|
column.type_text.lower()
|
|
481
474
|
)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Copyright 2021 Collate
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
# you may not use this file except in compliance with the License.
|
|
4
|
+
# You may obtain a copy of the License at
|
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
7
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
8
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
+
# See the License for the specific language governing permissions and
|
|
10
|
+
# limitations under the License.
|
|
11
|
+
"""
|
|
12
|
+
UnityCatalog Query parser module
|
|
13
|
+
"""
|
|
14
|
+
from abc import ABC
|
|
15
|
+
|
|
16
|
+
from metadata.generated.schema.entity.services.connections.database.unityCatalogConnection import (
|
|
17
|
+
UnityCatalogConnection,
|
|
18
|
+
)
|
|
19
|
+
from metadata.generated.schema.metadataIngestion.workflow import (
|
|
20
|
+
Source as WorkflowSource,
|
|
21
|
+
)
|
|
22
|
+
from metadata.ingestion.api.steps import InvalidSourceException
|
|
23
|
+
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
24
|
+
from metadata.ingestion.source.database.databricks.query_parser import (
|
|
25
|
+
DatabricksQueryParserSource,
|
|
26
|
+
)
|
|
27
|
+
from metadata.ingestion.source.database.query_parser_source import QueryParserSource
|
|
28
|
+
from metadata.ingestion.source.database.unitycatalog.client import UnityCatalogClient
|
|
29
|
+
from metadata.utils.logger import ingestion_logger
|
|
30
|
+
|
|
31
|
+
logger = ingestion_logger()
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class UnityCatalogQueryParserSource(
|
|
35
|
+
DatabricksQueryParserSource, QueryParserSource, ABC
|
|
36
|
+
):
|
|
37
|
+
"""
|
|
38
|
+
UnityCatalog Query Parser Source
|
|
39
|
+
|
|
40
|
+
This class would be inheriting all the methods
|
|
41
|
+
from DatabricksQueryParserSource
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
filters: str
|
|
45
|
+
|
|
46
|
+
# pylint: disable=super-init-not-called
|
|
47
|
+
def __init__(self, config: WorkflowSource, metadata: OpenMetadata):
|
|
48
|
+
self._init_super(config=config, metadata=metadata)
|
|
49
|
+
self.client = UnityCatalogClient(self.service_connection)
|
|
50
|
+
|
|
51
|
+
@classmethod
|
|
52
|
+
def create(cls, config_dict, metadata: OpenMetadata):
|
|
53
|
+
"""Create class instance"""
|
|
54
|
+
config: WorkflowSource = WorkflowSource.parse_obj(config_dict)
|
|
55
|
+
connection: UnityCatalogConnection = config.serviceConnection.__root__.config
|
|
56
|
+
if not isinstance(connection, UnityCatalogConnection):
|
|
57
|
+
raise InvalidSourceException(
|
|
58
|
+
f"Expected UnityCatalogConnection, but got {connection}"
|
|
59
|
+
)
|
|
60
|
+
return cls(config, metadata)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Copyright 2021 Collate
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
# you may not use this file except in compliance with the License.
|
|
4
|
+
# You may obtain a copy of the License at
|
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
7
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
8
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
+
# See the License for the specific language governing permissions and
|
|
10
|
+
# limitations under the License.
|
|
11
|
+
"""
|
|
12
|
+
unity catalog usage module
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from metadata.ingestion.source.database.databricks.usage import DatabricksUsageSource
|
|
16
|
+
from metadata.ingestion.source.database.unitycatalog.query_parser import (
|
|
17
|
+
UnityCatalogQueryParserSource,
|
|
18
|
+
)
|
|
19
|
+
from metadata.utils.logger import ingestion_logger
|
|
20
|
+
|
|
21
|
+
logger = ingestion_logger()
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class UnitycatalogUsageSource(UnityCatalogQueryParserSource, DatabricksUsageSource):
|
|
25
|
+
"""
|
|
26
|
+
UnityCatalog Usage Source
|
|
27
|
+
|
|
28
|
+
This class would be inheriting all the methods from
|
|
29
|
+
DatabricksUsageSource as both the sources would call
|
|
30
|
+
the same API for fetching Usage Queries
|
|
31
|
+
"""
|
|
@@ -107,12 +107,13 @@ class UsageSource(QueryParserSource, ABC):
|
|
|
107
107
|
row = dict(row)
|
|
108
108
|
try:
|
|
109
109
|
query_type = row.get("query_type")
|
|
110
|
+
query = self.format_query(row["query_text"])
|
|
110
111
|
queries.append(
|
|
111
112
|
TableQuery(
|
|
112
|
-
query=
|
|
113
|
+
query=query,
|
|
113
114
|
query_type=query_type,
|
|
114
115
|
exclude_usage=self.check_life_cycle_query(
|
|
115
|
-
query_type=query_type
|
|
116
|
+
query_type=query_type, query_text=query
|
|
116
117
|
),
|
|
117
118
|
userName=row["user_name"],
|
|
118
119
|
startTime=str(row["start_time"]),
|
|
@@ -27,11 +27,14 @@ from confluent_kafka.schema_registry.schema_registry_client import Schema
|
|
|
27
27
|
from metadata.generated.schema.api.data.createTopic import CreateTopicRequest
|
|
28
28
|
from metadata.generated.schema.entity.data.topic import Topic as TopicEntity
|
|
29
29
|
from metadata.generated.schema.entity.data.topic import TopicSampleData
|
|
30
|
+
from metadata.generated.schema.entity.services.ingestionPipelines.status import (
|
|
31
|
+
StackTraceError,
|
|
32
|
+
)
|
|
30
33
|
from metadata.generated.schema.metadataIngestion.workflow import (
|
|
31
34
|
Source as WorkflowSource,
|
|
32
35
|
)
|
|
33
36
|
from metadata.generated.schema.type.schema import SchemaType, Topic
|
|
34
|
-
from metadata.ingestion.api.models import Either
|
|
37
|
+
from metadata.ingestion.api.models import Either
|
|
35
38
|
from metadata.ingestion.models.ometa_topic_data import OMetaTopicSampleData
|
|
36
39
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
37
40
|
from metadata.ingestion.source.messaging.messaging_service import (
|
|
@@ -145,7 +148,7 @@ class CommonBrokerSource(MessagingServiceSource, ABC):
|
|
|
145
148
|
left=StackTraceError(
|
|
146
149
|
name=topic_details.topic_name,
|
|
147
150
|
error=f"Unexpected exception to yield topic [{topic_details}]: {exc}",
|
|
148
|
-
|
|
151
|
+
stackTrace=traceback.format_exc(),
|
|
149
152
|
)
|
|
150
153
|
)
|
|
151
154
|
|
|
@@ -223,27 +226,28 @@ class CommonBrokerSource(MessagingServiceSource, ABC):
|
|
|
223
226
|
if topic_entity and self.generate_sample_data:
|
|
224
227
|
topic_name = topic_details.topic_name
|
|
225
228
|
sample_data = []
|
|
229
|
+
messages = None
|
|
226
230
|
try:
|
|
227
|
-
self.consumer_client
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
231
|
+
if self.consumer_client:
|
|
232
|
+
self.consumer_client.subscribe(
|
|
233
|
+
[topic_name], on_assign=on_partitions_assignment_to_consumer
|
|
234
|
+
)
|
|
235
|
+
logger.info(
|
|
236
|
+
f"Broker consumer polling for sample messages in topic {topic_name}"
|
|
237
|
+
)
|
|
238
|
+
messages = self.consumer_client.consume(num_messages=10, timeout=10)
|
|
234
239
|
except Exception as exc:
|
|
235
240
|
yield Either(
|
|
236
241
|
left=StackTraceError(
|
|
237
242
|
name=topic_details.topic_name,
|
|
238
243
|
error=f"Failed to fetch sample data from topic {topic_name}: {exc}",
|
|
239
|
-
|
|
244
|
+
stackTrace=traceback.format_exc(),
|
|
240
245
|
)
|
|
241
246
|
)
|
|
242
247
|
else:
|
|
243
248
|
if messages:
|
|
244
249
|
for message in messages:
|
|
245
250
|
try:
|
|
246
|
-
|
|
247
251
|
value = message.value()
|
|
248
252
|
sample_data.append(
|
|
249
253
|
self.decode_message(
|
|
@@ -15,7 +15,7 @@ Source connection handler
|
|
|
15
15
|
from dataclasses import dataclass
|
|
16
16
|
from typing import Optional, Union
|
|
17
17
|
|
|
18
|
-
from confluent_kafka.admin import AdminClient
|
|
18
|
+
from confluent_kafka.admin import AdminClient, KafkaException
|
|
19
19
|
from confluent_kafka.avro import AvroConsumer
|
|
20
20
|
from confluent_kafka.schema_registry.schema_registry_client import SchemaRegistryClient
|
|
21
21
|
|
|
@@ -35,6 +35,21 @@ from metadata.utils.logger import ingestion_logger
|
|
|
35
35
|
logger = ingestion_logger()
|
|
36
36
|
|
|
37
37
|
|
|
38
|
+
class InvalidKafkaCreds(Exception):
|
|
39
|
+
"""
|
|
40
|
+
Class to indicate invalid kafka credentials exception
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class SchemaRegistryException(Exception):
|
|
45
|
+
"""
|
|
46
|
+
Class to indicate invalid schema registry not initialized
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
TIMEOUT_SECONDS = 10
|
|
51
|
+
|
|
52
|
+
|
|
38
53
|
@dataclass
|
|
39
54
|
class KafkaClient:
|
|
40
55
|
def __init__(self, admin_client, schema_registry_client, consumer_client) -> None:
|
|
@@ -60,6 +75,14 @@ def get_connection(
|
|
|
60
75
|
if connection.saslMechanism:
|
|
61
76
|
connection.consumerConfig["sasl.mechanism"] = connection.saslMechanism.value
|
|
62
77
|
|
|
78
|
+
if (
|
|
79
|
+
connection.consumerConfig.get("security.protocol") is None
|
|
80
|
+
and connection.securityProtocol
|
|
81
|
+
):
|
|
82
|
+
connection.consumerConfig[
|
|
83
|
+
"security.protocol"
|
|
84
|
+
] = connection.securityProtocol.value
|
|
85
|
+
|
|
63
86
|
if connection.basicAuthUserInfo:
|
|
64
87
|
connection.schemaRegistryConfig = connection.schemaRegistryConfig or {}
|
|
65
88
|
connection.schemaRegistryConfig[
|
|
@@ -109,9 +132,27 @@ def test_connection(
|
|
|
109
132
|
"""
|
|
110
133
|
|
|
111
134
|
def custom_executor():
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
135
|
+
try:
|
|
136
|
+
client.admin_client.list_topics(timeout=TIMEOUT_SECONDS).topics
|
|
137
|
+
except KafkaException as err:
|
|
138
|
+
raise InvalidKafkaCreds(
|
|
139
|
+
f"Failed to fetch topics due to: {err}. "
|
|
140
|
+
"Please validate credentials and check if you are using correct security protocol"
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
def schema_registry_test():
|
|
144
|
+
if client.schema_registry_client:
|
|
145
|
+
client.schema_registry_client.get_subjects()
|
|
146
|
+
else:
|
|
147
|
+
raise SchemaRegistryException(
|
|
148
|
+
"Schema Registry not initialized, please provide schema registry "
|
|
149
|
+
"credentials in case you want topic schema and sample data to be ingested"
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
test_fn = {
|
|
153
|
+
"GetTopics": custom_executor,
|
|
154
|
+
"CheckSchemaRegistry": schema_registry_test,
|
|
155
|
+
}
|
|
115
156
|
|
|
116
157
|
test_connection_steps(
|
|
117
158
|
metadata=metadata,
|
|
@@ -21,11 +21,14 @@ from metadata.generated.schema.entity.data.topic import TopicSampleData
|
|
|
21
21
|
from metadata.generated.schema.entity.services.connections.messaging.kinesisConnection import (
|
|
22
22
|
KinesisConnection,
|
|
23
23
|
)
|
|
24
|
+
from metadata.generated.schema.entity.services.ingestionPipelines.status import (
|
|
25
|
+
StackTraceError,
|
|
26
|
+
)
|
|
24
27
|
from metadata.generated.schema.metadataIngestion.workflow import (
|
|
25
28
|
Source as WorkflowSource,
|
|
26
29
|
)
|
|
27
30
|
from metadata.generated.schema.type.schema import Topic
|
|
28
|
-
from metadata.ingestion.api.models import Either
|
|
31
|
+
from metadata.ingestion.api.models import Either
|
|
29
32
|
from metadata.ingestion.api.steps import InvalidSourceException
|
|
30
33
|
from metadata.ingestion.models.ometa_topic_data import OMetaTopicSampleData
|
|
31
34
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
@@ -137,7 +140,7 @@ class KinesisSource(MessagingServiceSource):
|
|
|
137
140
|
left=StackTraceError(
|
|
138
141
|
name=topic_details.topic_name,
|
|
139
142
|
error=f"Unexpected exception to yield topic [{topic_details}]: {exc}",
|
|
140
|
-
|
|
143
|
+
stackTrace=traceback.format_exc(),
|
|
141
144
|
)
|
|
142
145
|
)
|
|
143
146
|
|
|
@@ -215,7 +218,7 @@ class KinesisSource(MessagingServiceSource):
|
|
|
215
218
|
left=StackTraceError(
|
|
216
219
|
name=topic_details.topic_name,
|
|
217
220
|
error=f"Error while yielding topic sample data for topic: {topic_details.topic_name} - {err}",
|
|
218
|
-
|
|
221
|
+
stackTrace=traceback.format_exc(),
|
|
219
222
|
)
|
|
220
223
|
)
|
|
221
224
|
|
|
@@ -37,8 +37,8 @@ from metadata.ingestion.models.delete_entity import DeleteEntity
|
|
|
37
37
|
from metadata.ingestion.models.topology import (
|
|
38
38
|
NodeStage,
|
|
39
39
|
ServiceTopology,
|
|
40
|
+
TopologyContext,
|
|
40
41
|
TopologyNode,
|
|
41
|
-
create_source_context,
|
|
42
42
|
)
|
|
43
43
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
44
44
|
from metadata.ingestion.source.connections import get_connection, get_test_connection_fn
|
|
@@ -114,7 +114,7 @@ class MessagingServiceSource(TopologyRunnerMixin, Source, ABC):
|
|
|
114
114
|
service_connection: MessagingConnection.__fields__["config"].type_
|
|
115
115
|
|
|
116
116
|
topology = MessagingServiceTopology()
|
|
117
|
-
context =
|
|
117
|
+
context = TopologyContext.create(topology)
|
|
118
118
|
topic_source_state: Set = set()
|
|
119
119
|
|
|
120
120
|
def __init__(
|
|
@@ -135,6 +135,10 @@ class MessagingServiceSource(TopologyRunnerMixin, Source, ABC):
|
|
|
135
135
|
self.connection_obj = self.connection
|
|
136
136
|
self.test_connection()
|
|
137
137
|
|
|
138
|
+
@property
|
|
139
|
+
def name(self) -> str:
|
|
140
|
+
return self.service_connection.type.name
|
|
141
|
+
|
|
138
142
|
@abstractmethod
|
|
139
143
|
def yield_topic(self, topic_details: Any) -> Iterable[Either[CreateTopicRequest]]:
|
|
140
144
|
"""
|
|
@@ -43,13 +43,16 @@ from metadata.generated.schema.entity.services.databaseService import (
|
|
|
43
43
|
DatabaseService,
|
|
44
44
|
DatabaseServiceType,
|
|
45
45
|
)
|
|
46
|
+
from metadata.generated.schema.entity.services.ingestionPipelines.status import (
|
|
47
|
+
StackTraceError,
|
|
48
|
+
)
|
|
46
49
|
from metadata.generated.schema.entity.teams import team
|
|
47
50
|
from metadata.generated.schema.entity.teams.user import User
|
|
48
51
|
from metadata.generated.schema.metadataIngestion.workflow import (
|
|
49
52
|
Source as WorkflowSource,
|
|
50
53
|
)
|
|
51
54
|
from metadata.ingestion.api.common import Entity
|
|
52
|
-
from metadata.ingestion.api.models import Either
|
|
55
|
+
from metadata.ingestion.api.models import Either
|
|
53
56
|
from metadata.ingestion.api.steps import InvalidSourceException, Source
|
|
54
57
|
from metadata.ingestion.models.user import OMetaUserProfile
|
|
55
58
|
from metadata.ingestion.ometa.client_utils import get_chart_entities_from_id
|
|
@@ -174,7 +177,7 @@ class AmundsenSource(Source):
|
|
|
174
177
|
left=StackTraceError(
|
|
175
178
|
name=user.name,
|
|
176
179
|
error=f"Failed to create user entity [{user}]: {exc}",
|
|
177
|
-
|
|
180
|
+
stackTrace=traceback.format_exc(),
|
|
178
181
|
)
|
|
179
182
|
)
|
|
180
183
|
|
|
@@ -222,7 +225,7 @@ class AmundsenSource(Source):
|
|
|
222
225
|
left=StackTraceError(
|
|
223
226
|
name=user.get("full_name") or "User",
|
|
224
227
|
error=f"Failed to add table from user [{user}]: {exc}",
|
|
225
|
-
|
|
228
|
+
stackTrace=traceback.format_exc(),
|
|
226
229
|
)
|
|
227
230
|
)
|
|
228
231
|
|
|
@@ -257,7 +260,7 @@ class AmundsenSource(Source):
|
|
|
257
260
|
left=StackTraceError(
|
|
258
261
|
name="Database",
|
|
259
262
|
error=f"Failed to Ingest database due to - {err}",
|
|
260
|
-
|
|
263
|
+
stackTrace=traceback.format_exc(),
|
|
261
264
|
)
|
|
262
265
|
)
|
|
263
266
|
|
|
@@ -284,7 +287,7 @@ class AmundsenSource(Source):
|
|
|
284
287
|
left=StackTraceError(
|
|
285
288
|
name="Database Schema",
|
|
286
289
|
error=f"Failed to Ingest database schema due to - {err}",
|
|
287
|
-
|
|
290
|
+
stackTrace=traceback.format_exc(),
|
|
288
291
|
)
|
|
289
292
|
)
|
|
290
293
|
|
|
@@ -354,7 +357,7 @@ class AmundsenSource(Source):
|
|
|
354
357
|
left=StackTraceError(
|
|
355
358
|
name=table.get("name") or "Table",
|
|
356
359
|
error=f"Failed to create table entity [{table}]: {exc}",
|
|
357
|
-
|
|
360
|
+
stackTrace=traceback.format_exc(),
|
|
358
361
|
)
|
|
359
362
|
)
|
|
360
363
|
|
|
@@ -397,7 +400,7 @@ class AmundsenSource(Source):
|
|
|
397
400
|
left=StackTraceError(
|
|
398
401
|
name=dashboard.get("name") or "Dashboard",
|
|
399
402
|
error=f"Failed to create dashboard entity [{dashboard}]: {exc}",
|
|
400
|
-
|
|
403
|
+
stackTrace=traceback.format_exc(),
|
|
401
404
|
)
|
|
402
405
|
)
|
|
403
406
|
|
|
@@ -122,7 +122,7 @@ class AtlasSource(Source):
|
|
|
122
122
|
left=StackTraceError(
|
|
123
123
|
name=service,
|
|
124
124
|
error=f"Cannot find service for {service} - type DatabaseService",
|
|
125
|
-
|
|
125
|
+
stackTrace=traceback.format_exc(),
|
|
126
126
|
)
|
|
127
127
|
)
|
|
128
128
|
|
|
@@ -142,7 +142,7 @@ class AtlasSource(Source):
|
|
|
142
142
|
left=StackTraceError(
|
|
143
143
|
name=service,
|
|
144
144
|
error=f"Cannot find service for {service} - type MessagingService",
|
|
145
|
-
|
|
145
|
+
stackTrace=traceback.format_exc(),
|
|
146
146
|
)
|
|
147
147
|
)
|
|
148
148
|
|
|
@@ -184,7 +184,7 @@ class AtlasSource(Source):
|
|
|
184
184
|
left=StackTraceError(
|
|
185
185
|
name="Topic",
|
|
186
186
|
error=f"Failed to parse topi entry [{topic_entity}]: {exc}",
|
|
187
|
-
|
|
187
|
+
stackTrace=traceback.format_exc(),
|
|
188
188
|
)
|
|
189
189
|
)
|
|
190
190
|
|
|
@@ -279,7 +279,7 @@ class AtlasSource(Source):
|
|
|
279
279
|
left=StackTraceError(
|
|
280
280
|
name="Database",
|
|
281
281
|
error=f"Failed to parse for database : {db_entity} - table {table}: {exc}",
|
|
282
|
-
|
|
282
|
+
stackTrace=traceback.format_exc(),
|
|
283
283
|
)
|
|
284
284
|
)
|
|
285
285
|
|
|
@@ -420,7 +420,7 @@ class AtlasSource(Source):
|
|
|
420
420
|
left=StackTraceError(
|
|
421
421
|
name="Lineage",
|
|
422
422
|
error=f"failed to parse lineage due to {exc}",
|
|
423
|
-
|
|
423
|
+
stackTrace=traceback.format_exc(),
|
|
424
424
|
)
|
|
425
425
|
)
|
|
426
426
|
|
|
@@ -29,10 +29,13 @@ from metadata.generated.schema.entity.data.mlmodel import (
|
|
|
29
29
|
from metadata.generated.schema.entity.services.connections.mlmodel.mlflowConnection import (
|
|
30
30
|
MlflowConnection,
|
|
31
31
|
)
|
|
32
|
+
from metadata.generated.schema.entity.services.ingestionPipelines.status import (
|
|
33
|
+
StackTraceError,
|
|
34
|
+
)
|
|
32
35
|
from metadata.generated.schema.metadataIngestion.workflow import (
|
|
33
36
|
Source as WorkflowSource,
|
|
34
37
|
)
|
|
35
|
-
from metadata.ingestion.api.models import Either
|
|
38
|
+
from metadata.ingestion.api.models import Either
|
|
36
39
|
from metadata.ingestion.api.steps import InvalidSourceException
|
|
37
40
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
38
41
|
from metadata.ingestion.source.mlmodel.mlmodel_service import MlModelServiceSource
|
|
@@ -91,7 +94,7 @@ class MlflowSource(MlModelServiceSource):
|
|
|
91
94
|
StackTraceError(
|
|
92
95
|
name=model.name,
|
|
93
96
|
error="Version not found",
|
|
94
|
-
|
|
97
|
+
stackTrace=f"Unable to ingest model {model.name} due to missing version from version list {model.latest_versions}", # pylint: disable=line-too-long
|
|
95
98
|
)
|
|
96
99
|
)
|
|
97
100
|
continue
|