openmetadata-ingestion 1.5.13.0__py3-none-any.whl → 1.6.0.0rc2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of openmetadata-ingestion might be problematic. Click here for more details.
- _openmetadata_testutils/dict.py +23 -0
- _openmetadata_testutils/pydantic/test_utils.py +22 -2
- _openmetadata_testutils/pytest_openmetadata/plugin.py +86 -0
- _openmetadata_testutils/pytest_openmetadata/test_utils.py +99 -0
- metadata/cli/app.py +1 -0
- metadata/cli/classify.py +52 -0
- metadata/cli/dataquality.py +4 -1
- metadata/cli/ingest.py +2 -1
- metadata/cli/lineage.py +2 -1
- metadata/cli/profile.py +4 -1
- metadata/cli/usage.py +2 -1
- metadata/cmd.py +9 -0
- metadata/config/common.py +3 -1
- metadata/data_quality/api/models.py +2 -1
- metadata/data_quality/builders/{i_validator_builder.py → validator_builder.py} +45 -31
- metadata/data_quality/interface/pandas/pandas_test_suite_interface.py +25 -24
- metadata/data_quality/interface/sqlalchemy/sqa_test_suite_interface.py +23 -49
- metadata/data_quality/interface/test_suite_interface.py +36 -52
- metadata/data_quality/processor/test_case_runner.py +9 -9
- metadata/data_quality/runner/base_test_suite_source.py +52 -26
- metadata/data_quality/source/test_suite.py +1 -1
- metadata/data_quality/validations/base_test_handler.py +13 -8
- metadata/data_quality/validations/column/base/columnValuesToBeInSet.py +4 -2
- metadata/data_quality/validations/column/sqlalchemy/columnValueLengthsToBeBetween.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValueMaxToBeBetween.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValueMeanToBeBetween.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValueMedianToBeBetween.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValueMinToBeBetween.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValueStdDevToBeBetween.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValuesMissingCount.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValuesSumToBeBetween.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeAtExpectedLocation.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeBetween.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeInSet.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeNotInSet.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeNotNull.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeUnique.py +2 -8
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToMatchRegex.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToNotMatchRegex.py +1 -1
- metadata/data_quality/validations/models.py +6 -1
- metadata/data_quality/validations/runtime_param_setter/param_setter.py +2 -3
- metadata/data_quality/validations/runtime_param_setter/param_setter_factory.py +45 -17
- metadata/data_quality/validations/runtime_param_setter/table_diff_params_setter.py +26 -16
- metadata/data_quality/validations/table/sqlalchemy/tableDiff.py +192 -17
- metadata/data_quality/validations/table/sqlalchemy/tableRowInsertedCountToBeBetween.py +2 -2
- metadata/examples/workflows/bigquery_classifier.yaml +56 -0
- metadata/examples/workflows/bigquery_profiler.yaml +1 -2
- metadata/examples/workflows/datafactory.yaml +29 -0
- metadata/examples/workflows/db2_profiler.yaml +1 -2
- metadata/examples/workflows/dbtcloud.yaml +2 -1
- metadata/examples/workflows/matillion.yaml +31 -0
- metadata/examples/workflows/{mstr.yaml → microstrategy.yaml} +3 -2
- metadata/examples/workflows/mysql_profiler.yaml +0 -1
- metadata/examples/workflows/redshift_classifier.yaml +38 -0
- metadata/examples/workflows/redshift_profiler.yaml +2 -3
- metadata/examples/workflows/rest.yaml +20 -0
- metadata/examples/workflows/sigma.yaml +25 -0
- metadata/examples/workflows/trino_profiler.yaml +20 -0
- metadata/generated/antlr/EntityLinkLexer.py +70 -99
- 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/addTagToAssetsRequest.py +43 -0
- 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 +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/createAPICollection.py +1 -1
- metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
- metadata/generated/schema/api/data/createChart.py +1 -1
- metadata/generated/schema/api/data/createContainer.py +1 -1
- metadata/generated/schema/api/data/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/createMetric.py +83 -0
- 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 +8 -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/custom/__init__.py +1 -1
- metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.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/governance/__init__.py +3 -0
- metadata/generated/schema/api/governance/createWorkflowDefinition.py +83 -0
- metadata/generated/schema/api/governance/createWorkflowInstanceState.py +22 -0
- 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/createApiService.py +2 -2
- 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/createTestCaseResult.py +71 -0
- 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/assetCertificationSettings.py +22 -0
- metadata/generated/schema/configuration/authConfig.py +1 -1
- metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
- metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
- metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
- metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
- metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -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/limitsConfiguration.py +1 -1
- metadata/generated/schema/configuration/lineageSettings.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 +1 -1
- metadata/generated/schema/configuration/searchSettings.py +1 -1
- metadata/generated/schema/configuration/slackAppConfiguration.py +1 -14
- metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
- metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
- metadata/generated/schema/configuration/themeConfiguration.py +1 -1
- metadata/generated/schema/configuration/uiThemePreference.py +1 -1
- metadata/generated/schema/dataInsight/__init__.py +1 -1
- metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
- metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
- metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +9 -1
- metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
- metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
- metadata/generated/schema/dataInsight/custom/lineChart.py +23 -8
- metadata/generated/schema/dataInsight/custom/summaryCard.py +20 -9
- 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/unusedAssets.py +1 -1
- metadata/generated/schema/email/__init__.py +1 -1
- metadata/generated/schema/email/emailRequest.py +1 -1
- metadata/generated/schema/email/emailTemplate.py +1 -1
- metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
- metadata/generated/schema/email/smtpSettings.py +1 -1
- metadata/generated/schema/email/templateValidationReponse.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 +9 -1
- metadata/generated/schema/entity/applications/appExtension.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 +4 -2
- metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +54 -2
- metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +22 -0
- 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/collateAIAppPrivateConfig.py +1 -1
- metadata/generated/schema/entity/applications/createAppRequest.py +8 -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 +8 -1
- metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +8 -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 +3 -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 -2
- metadata/generated/schema/entity/classification/tag.py +2 -2
- metadata/generated/schema/entity/data/__init__.py +1 -1
- metadata/generated/schema/entity/data/apiCollection.py +4 -2
- metadata/generated/schema/entity/data/apiEndpoint.py +4 -2
- metadata/generated/schema/entity/data/chart.py +4 -3
- metadata/generated/schema/entity/data/container.py +4 -2
- metadata/generated/schema/entity/data/dashboard.py +4 -2
- metadata/generated/schema/entity/data/dashboardDataModel.py +5 -2
- metadata/generated/schema/entity/data/database.py +7 -7
- metadata/generated/schema/entity/data/databaseSchema.py +5 -2
- metadata/generated/schema/entity/data/glossary.py +2 -2
- metadata/generated/schema/entity/data/glossaryTerm.py +3 -2
- metadata/generated/schema/entity/data/metric.py +196 -0
- metadata/generated/schema/entity/data/mlmodel.py +4 -2
- metadata/generated/schema/entity/data/pipeline.py +4 -3
- metadata/generated/schema/entity/data/query.py +3 -5
- metadata/generated/schema/entity/data/report.py +1 -1
- metadata/generated/schema/entity/data/searchIndex.py +16 -2
- metadata/generated/schema/entity/data/storedProcedure.py +4 -2
- metadata/generated/schema/entity/data/table.py +36 -3
- metadata/generated/schema/entity/data/topic.py +4 -3
- 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 +19 -2
- metadata/generated/schema/entity/feed/__init__.py +1 -1
- metadata/generated/schema/entity/feed/assets.py +1 -1
- metadata/generated/schema/entity/feed/customProperty.py +1 -1
- metadata/generated/schema/entity/feed/description.py +1 -1
- metadata/generated/schema/entity/feed/domain.py +1 -1
- metadata/generated/schema/entity/feed/entityInfo.py +1 -1
- metadata/generated/schema/entity/feed/owner.py +1 -1
- metadata/generated/schema/entity/feed/suggestion.py +1 -1
- metadata/generated/schema/entity/feed/tag.py +1 -1
- metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
- metadata/generated/schema/entity/feed/thread.py +1 -1
- metadata/generated/schema/entity/policies/__init__.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +4 -1
- metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
- metadata/generated/schema/entity/policies/filters.py +1 -1
- metadata/generated/schema/entity/policies/policy.py +1 -1
- metadata/generated/schema/entity/services/__init__.py +1 -1
- metadata/generated/schema/entity/services/apiService.py +7 -7
- metadata/generated/schema/entity/services/connections/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/{apiService → api}/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/{apiService → api}/restConnection.py +15 -7
- 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 +29 -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/microStrategyConnection.py +67 -0
- metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +41 -0
- 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 +5 -1
- metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +9 -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/common/noConfigAuthenticationTypes.py +11 -0
- 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 +4 -1
- metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/druidConnection.py +4 -1
- metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/exasolConnection.py +84 -0
- metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +4 -1
- metadata/generated/schema/entity/services/connections/database/hiveConnection.py +4 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/impalaConnection.py +4 -1
- metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +4 -1
- metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +3 -2
- metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +5 -1
- metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +11 -7
- metadata/generated/schema/entity/services/connections/database/oracleConnection.py +5 -1
- metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +4 -1
- metadata/generated/schema/entity/services/connections/database/postgresConnection.py +5 -1
- metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +9 -1
- metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapErpConnection.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 +5 -1
- metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +4 -1
- metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +9 -1
- metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +4 -1
- metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/teradataConnection.py +4 -1
- metadata/generated/schema/entity/services/connections/database/trinoConnection.py +7 -2
- 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 +1 -1
- metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.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/datafactoryConnection.py +69 -0
- metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +17 -5
- 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/flinkConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +65 -0
- metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
- 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/pipeline/stitchConnection.py +43 -0
- 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 +3 -3
- 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 +8 -5
- metadata/generated/schema/entity/services/databaseService.py +5 -2
- metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +2 -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 +2 -2
- metadata/generated/schema/entity/services/metadataService.py +2 -2
- metadata/generated/schema/entity/services/mlmodelService.py +2 -2
- metadata/generated/schema/entity/services/pipelineService.py +11 -2
- metadata/generated/schema/entity/services/searchService.py +2 -2
- metadata/generated/schema/entity/services/serviceType.py +2 -2
- metadata/generated/schema/entity/services/storageService.py +2 -2
- 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/api/eventSubscriptionDiagnosticInfo.py +69 -0
- metadata/generated/schema/events/api/eventsRecord.py +37 -0
- metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -4
- metadata/generated/schema/events/api/typedEvent.py +46 -0
- metadata/generated/schema/events/emailAlertConfig.py +1 -1
- metadata/generated/schema/events/eventFilterRule.py +1 -1
- metadata/generated/schema/events/eventSubscription.py +15 -46
- metadata/generated/schema/events/eventSubscriptionOffset.py +7 -2
- metadata/generated/schema/events/failedEvent.py +1 -1
- metadata/generated/schema/events/failedEventResponse.py +38 -0
- metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
- metadata/generated/schema/events/statusContext.py +43 -0
- metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
- metadata/generated/schema/events/subscriptionStatus.py +78 -0
- metadata/generated/schema/events/testDestinationStatus.py +88 -0
- metadata/generated/schema/governance/workflows/__init__.py +3 -0
- metadata/generated/schema/governance/workflows/elements/__init__.py +5 -0
- metadata/generated/schema/governance/workflows/elements/edge.py +29 -0
- metadata/generated/schema/governance/workflows/elements/nodeSubType.py +16 -0
- metadata/generated/schema/governance/workflows/elements/nodeType.py +14 -0
- metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +3 -0
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +5 -0
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +44 -0
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +49 -0
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +42 -0
- metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +3 -0
- metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +30 -0
- metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +3 -0
- metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +30 -0
- metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +3 -0
- metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +57 -0
- metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +3 -0
- metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +43 -0
- metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +44 -0
- metadata/generated/schema/{entity/data/metrics.py → governance/workflows/workflowDefinition.py} +36 -49
- metadata/generated/schema/governance/workflows/workflowInstance.py +50 -0
- metadata/generated/schema/governance/workflows/workflowInstanceState.py +73 -0
- metadata/generated/schema/metadataIngestion/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +53 -0
- metadata/generated/schema/metadataIngestion/application.py +1 -1
- metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +127 -0
- metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -9
- metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +28 -17
- metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +42 -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 +9 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +9 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
- metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +9 -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 +4 -1
- metadata/generated/schema/metadataIngestion/workflow.py +15 -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/credentials/gitlabCredentials.py +1 -1
- metadata/generated/schema/security/sasl/__init__.py +1 -1
- metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
- metadata/generated/schema/security/secrets/__init__.py +1 -1
- metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
- metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
- metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
- metadata/generated/schema/security/securityConfiguration.py +1 -1
- metadata/generated/schema/security/ssl/__init__.py +1 -1
- metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
- metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
- metadata/generated/schema/settings/__init__.py +1 -1
- metadata/generated/schema/settings/settings.py +7 -1
- metadata/generated/schema/system/__init__.py +1 -1
- metadata/generated/schema/system/entityError.py +1 -1
- metadata/generated/schema/system/eventPublisherJob.py +2 -1
- metadata/generated/schema/system/indexingError.py +1 -1
- metadata/generated/schema/system/limitsResponse.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 +19 -4
- metadata/generated/schema/tests/customMetric.py +1 -1
- metadata/generated/schema/tests/dataQualityReport.py +1 -1
- metadata/generated/schema/tests/resolved.py +1 -1
- metadata/generated/schema/tests/testCase.py +6 -2
- metadata/generated/schema/tests/testCaseResolutionStatus.py +17 -2
- metadata/generated/schema/tests/testDefinition.py +1 -1
- metadata/generated/schema/tests/testSuite.py +9 -2
- metadata/generated/schema/type/__init__.py +1 -1
- metadata/generated/schema/type/apiSchema.py +1 -1
- metadata/generated/schema/type/assetCertification.py +26 -0
- 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 +1 -1
- metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
- metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
- metadata/generated/schema/type/customProperty.py +8 -1
- metadata/generated/schema/type/dailyCount.py +1 -1
- metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
- metadata/generated/schema/type/entityHierarchy.py +1 -1
- metadata/generated/schema/type/entityHistory.py +1 -1
- metadata/generated/schema/type/entityLineage.py +1 -1
- metadata/generated/schema/type/entityReference.py +1 -1
- metadata/generated/schema/type/entityReferenceList.py +1 -1
- metadata/generated/schema/type/entityRelationship.py +1 -1
- metadata/generated/schema/type/entityUsage.py +1 -1
- metadata/generated/schema/type/filterPattern.py +1 -1
- metadata/generated/schema/type/function.py +1 -1
- metadata/generated/schema/type/include.py +1 -1
- metadata/generated/schema/type/jdbcConnection.py +1 -1
- metadata/generated/schema/type/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 +1 -1
- metadata/generated/schema/type/reaction.py +1 -1
- metadata/generated/schema/type/schedule.py +1 -1
- metadata/generated/schema/type/schema.py +1 -1
- metadata/generated/schema/type/tableQuery.py +1 -1
- metadata/generated/schema/type/tableUsageCount.py +1 -1
- metadata/generated/schema/type/tagLabel.py +1 -1
- metadata/generated/schema/type/usageDetails.py +1 -1
- metadata/generated/schema/type/usageRequest.py +1 -1
- metadata/generated/schema/type/votes.py +1 -1
- metadata/ingestion/api/models.py +9 -5
- metadata/ingestion/api/parser.py +14 -0
- metadata/ingestion/lineage/parser.py +4 -6
- metadata/ingestion/lineage/sql_lineage.py +29 -185
- metadata/ingestion/models/custom_basemodel_validation.py +80 -0
- metadata/ingestion/models/custom_pydantic.py +33 -1
- metadata/ingestion/models/custom_types.py +2 -0
- metadata/ingestion/models/entity_interface.py +71 -0
- metadata/ingestion/models/patch_request.py +0 -1
- metadata/ingestion/ometa/mixins/es_mixin.py +66 -8
- metadata/ingestion/ometa/models.py +1 -0
- metadata/ingestion/ometa/ometa_api.py +6 -3
- metadata/ingestion/ometa/routes.py +4 -2
- metadata/ingestion/processor/query_parser.py +2 -2
- metadata/ingestion/sink/metadata_rest.py +23 -18
- metadata/ingestion/source/api/api_service.py +212 -0
- metadata/ingestion/source/api/rest/connection.py +93 -0
- metadata/ingestion/source/api/rest/metadata.py +278 -0
- metadata/ingestion/source/api/rest/models.py +41 -0
- metadata/ingestion/source/api/rest/service_spec.py +4 -0
- metadata/ingestion/source/dashboard/domodashboard/service_spec.py +6 -0
- metadata/ingestion/source/dashboard/lightdash/service_spec.py +4 -0
- metadata/ingestion/source/dashboard/looker/metadata.py +33 -4
- metadata/ingestion/source/dashboard/looker/service_spec.py +4 -0
- metadata/ingestion/source/dashboard/metabase/service_spec.py +4 -0
- metadata/ingestion/source/dashboard/microstrategy/__init__.py +0 -0
- metadata/ingestion/source/dashboard/{mstr → microstrategy}/client.py +27 -32
- metadata/ingestion/source/dashboard/{mstr → microstrategy}/connection.py +7 -10
- metadata/ingestion/source/dashboard/{mstr → microstrategy}/metadata.py +18 -14
- metadata/ingestion/source/dashboard/{mstr → microstrategy}/models.py +1 -1
- metadata/ingestion/source/dashboard/microstrategy/service_spec.py +6 -0
- metadata/ingestion/source/dashboard/mode/service_spec.py +4 -0
- metadata/ingestion/source/dashboard/powerbi/client.py +1 -2
- metadata/ingestion/source/dashboard/powerbi/service_spec.py +4 -0
- metadata/ingestion/source/dashboard/qlikcloud/service_spec.py +4 -0
- metadata/ingestion/source/dashboard/qliksense/service_spec.py +4 -0
- metadata/ingestion/source/dashboard/quicksight/service_spec.py +4 -0
- metadata/ingestion/source/dashboard/redash/service_spec.py +4 -0
- metadata/ingestion/source/dashboard/sigma/__init__.py +0 -0
- metadata/ingestion/source/dashboard/sigma/client.py +186 -0
- metadata/ingestion/source/dashboard/sigma/connection.py +67 -0
- metadata/ingestion/source/dashboard/sigma/metadata.py +331 -0
- metadata/ingestion/source/dashboard/sigma/models.py +97 -0
- metadata/ingestion/source/dashboard/sigma/service_spec.py +4 -0
- metadata/ingestion/source/dashboard/superset/service_spec.py +4 -0
- metadata/ingestion/source/dashboard/tableau/service_spec.py +4 -0
- metadata/ingestion/source/database/athena/service_spec.py +10 -0
- metadata/ingestion/source/database/azuresql/service_spec.py +12 -0
- metadata/ingestion/source/database/bigquery/connection.py +28 -2
- metadata/ingestion/source/database/bigquery/lineage.py +29 -2
- metadata/ingestion/source/database/bigquery/metadata.py +1 -25
- metadata/ingestion/source/database/bigquery/profiler/__init__.py +0 -0
- metadata/ingestion/source/database/bigquery/profiler/profiler.py +30 -0
- metadata/ingestion/source/database/bigquery/profiler/system.py +165 -0
- metadata/ingestion/source/database/bigquery/queries.py +69 -1
- metadata/ingestion/source/database/bigquery/service_spec.py +16 -0
- metadata/ingestion/source/database/bigtable/service_spec.py +4 -0
- metadata/ingestion/source/database/clickhouse/service_spec.py +12 -0
- metadata/ingestion/source/database/common_db_source.py +150 -147
- metadata/ingestion/source/database/common_nosql_source.py +0 -14
- metadata/ingestion/source/database/couchbase/metadata.py +62 -2
- metadata/{data_quality/builders/sqa_validator_builder.py → ingestion/source/database/couchbase/models.py} +15 -9
- metadata/ingestion/source/database/couchbase/queries.py +6 -1
- metadata/ingestion/source/database/couchbase/service_spec.py +4 -0
- metadata/ingestion/source/database/database_service.py +15 -22
- metadata/ingestion/source/database/databricks/metadata.py +12 -1
- metadata/ingestion/source/database/databricks/service_spec.py +20 -0
- metadata/ingestion/source/database/datalake/clients/azure_blob.py +0 -3
- metadata/ingestion/source/database/datalake/clients/base.py +10 -1
- metadata/ingestion/source/database/datalake/clients/gcs.py +10 -6
- metadata/ingestion/source/database/datalake/clients/s3.py +0 -3
- metadata/ingestion/source/database/datalake/metadata.py +2 -13
- metadata/ingestion/source/database/datalake/service_spec.py +16 -0
- metadata/ingestion/source/database/db2/lineage.py +46 -0
- metadata/ingestion/source/database/db2/service_spec.py +9 -0
- metadata/ingestion/source/database/dbt/constants.py +4 -0
- metadata/ingestion/source/database/dbt/dbt_config.py +19 -1
- metadata/ingestion/source/database/dbt/dbt_service.py +8 -1
- metadata/ingestion/source/database/dbt/dbt_utils.py +29 -0
- metadata/ingestion/source/database/dbt/metadata.py +73 -7
- metadata/ingestion/source/database/dbt/models.py +2 -0
- metadata/ingestion/source/database/dbt/service_spec.py +4 -0
- metadata/ingestion/source/database/deltalake/metadata.py +1 -12
- metadata/ingestion/source/database/deltalake/service_spec.py +4 -0
- metadata/ingestion/source/database/domodatabase/metadata.py +1 -12
- metadata/ingestion/source/database/domodatabase/service_spec.py +4 -0
- metadata/ingestion/source/database/doris/metadata.py +1 -1
- metadata/ingestion/source/database/doris/service_spec.py +4 -0
- metadata/ingestion/source/database/druid/lineage.py +46 -0
- metadata/ingestion/source/database/druid/service_spec.py +4 -0
- metadata/ingestion/source/database/dynamodb/service_spec.py +10 -0
- metadata/ingestion/source/database/exasol/__init__.py +0 -0
- metadata/ingestion/source/database/exasol/connection.py +87 -0
- metadata/ingestion/source/database/exasol/metadata.py +27 -0
- metadata/ingestion/source/database/exasol/service_spec.py +4 -0
- metadata/ingestion/source/database/glue/metadata.py +49 -19
- metadata/ingestion/source/database/glue/models.py +8 -0
- metadata/ingestion/source/database/glue/service_spec.py +4 -0
- metadata/ingestion/source/database/greenplum/lineage.py +46 -0
- metadata/ingestion/source/database/greenplum/service_spec.py +4 -0
- metadata/ingestion/source/database/hive/lineage.py +46 -0
- metadata/ingestion/source/database/hive/service_spec.py +4 -0
- metadata/ingestion/source/database/iceberg/metadata.py +1 -16
- metadata/ingestion/source/database/iceberg/service_spec.py +4 -0
- metadata/ingestion/source/database/impala/lineage.py +46 -0
- metadata/ingestion/source/database/impala/service_spec.py +4 -0
- metadata/ingestion/source/database/life_cycle_query_mixin.py +3 -5
- metadata/ingestion/source/database/lineage_source.py +124 -32
- metadata/ingestion/source/database/mariadb/lineage.py +46 -0
- metadata/ingestion/source/database/mariadb/service_spec.py +4 -0
- metadata/ingestion/source/database/mongodb/service_spec.py +10 -0
- metadata/ingestion/source/database/mssql/lineage.py +51 -2
- metadata/ingestion/source/database/mssql/metadata.py +2 -44
- metadata/ingestion/source/database/mssql/service_spec.py +10 -0
- metadata/ingestion/source/database/mysql/lineage.py +0 -2
- metadata/ingestion/source/database/mysql/queries.py +0 -2
- metadata/ingestion/source/database/mysql/service_spec.py +10 -0
- metadata/ingestion/source/database/mysql/usage.py +0 -2
- metadata/ingestion/source/database/oracle/lineage.py +28 -1
- metadata/ingestion/source/database/oracle/metadata.py +2 -23
- metadata/ingestion/source/database/oracle/service_spec.py +10 -0
- metadata/ingestion/source/database/pinotdb/lineage.py +46 -0
- metadata/ingestion/source/database/pinotdb/service_spec.py +4 -0
- metadata/ingestion/source/database/postgres/metadata.py +4 -13
- metadata/ingestion/source/database/postgres/service_spec.py +10 -0
- metadata/ingestion/source/database/postgres/utils.py +26 -0
- metadata/ingestion/source/database/presto/service_spec.py +4 -0
- metadata/ingestion/source/database/query/service_spec.py +9 -0
- metadata/ingestion/source/database/query_parser_source.py +1 -0
- metadata/ingestion/source/database/redshift/connection.py +9 -2
- metadata/ingestion/source/database/redshift/lineage.py +27 -3
- metadata/ingestion/source/database/redshift/metadata.py +2 -27
- metadata/ingestion/source/database/redshift/profiler/__init__.py +0 -0
- metadata/ingestion/source/database/redshift/profiler/profiler.py +14 -0
- metadata/ingestion/source/database/redshift/profiler/system.py +148 -0
- metadata/ingestion/source/database/redshift/queries.py +99 -8
- metadata/ingestion/source/database/redshift/service_spec.py +14 -0
- metadata/ingestion/source/database/redshift/utils.py +3 -3
- metadata/ingestion/source/database/salesforce/metadata.py +1 -12
- metadata/ingestion/source/database/salesforce/service_spec.py +4 -0
- metadata/ingestion/source/database/sample_data.py +129 -34
- metadata/ingestion/source/database/saperp/service_spec.py +4 -0
- metadata/ingestion/source/database/saphana/service_spec.py +7 -0
- metadata/ingestion/source/database/sas/metadata.py +1 -10
- metadata/ingestion/source/database/sas/service_spec.py +4 -0
- metadata/ingestion/source/database/singlestore/lineage.py +46 -0
- metadata/ingestion/source/database/singlestore/service_spec.py +9 -0
- metadata/ingestion/source/database/snowflake/connection.py +6 -1
- metadata/ingestion/source/database/snowflake/lineage.py +31 -2
- metadata/ingestion/source/database/snowflake/metadata.py +20 -62
- metadata/ingestion/source/database/snowflake/models.py +50 -2
- metadata/ingestion/source/database/snowflake/profiler/__init__.py +0 -0
- metadata/ingestion/source/database/snowflake/profiler/profiler.py +26 -0
- metadata/ingestion/source/database/snowflake/profiler/system.py +436 -0
- metadata/ingestion/source/database/snowflake/queries.py +28 -22
- metadata/ingestion/source/database/snowflake/service_spec.py +20 -0
- metadata/ingestion/source/database/sql_column_handler.py +26 -0
- metadata/ingestion/source/database/sqlite/lineage.py +46 -0
- metadata/ingestion/source/database/sqlite/service_spec.py +4 -0
- metadata/ingestion/source/database/stored_procedures_mixin.py +78 -52
- metadata/ingestion/source/database/teradata/lineage.py +46 -0
- metadata/ingestion/source/database/teradata/service_spec.py +4 -0
- metadata/ingestion/source/database/trino/connection.py +60 -23
- metadata/ingestion/source/database/trino/profiler/__init__.py +0 -0
- metadata/ingestion/source/database/trino/profiler/system_tables_profiler.py +167 -0
- metadata/ingestion/source/database/trino/service_spec.py +16 -0
- metadata/ingestion/source/database/unitycatalog/metadata.py +3 -24
- metadata/ingestion/source/database/unitycatalog/service_spec.py +22 -0
- metadata/ingestion/source/database/usage_source.py +4 -1
- metadata/ingestion/source/database/vertica/service_spec.py +10 -0
- metadata/ingestion/source/messaging/kafka/service_spec.py +4 -0
- metadata/ingestion/source/messaging/kinesis/service_spec.py +4 -0
- metadata/ingestion/source/messaging/redpanda/service_spec.py +4 -0
- metadata/ingestion/source/metadata/alationsink/service_spec.py +4 -0
- metadata/ingestion/source/metadata/amundsen/service_spec.py +4 -0
- metadata/ingestion/source/metadata/atlas/service_spec.py +4 -0
- metadata/ingestion/source/mlmodel/mlflow/service_spec.py +4 -0
- metadata/ingestion/source/mlmodel/sagemaker/service_spec.py +4 -0
- metadata/ingestion/source/pipeline/airbyte/service_spec.py +4 -0
- metadata/ingestion/source/pipeline/airflow/connection.py +45 -2
- metadata/ingestion/source/pipeline/airflow/metadata.py +71 -27
- metadata/ingestion/source/pipeline/airflow/service_spec.py +4 -0
- metadata/ingestion/source/pipeline/dagster/metadata.py +3 -1
- metadata/ingestion/source/pipeline/dagster/service_spec.py +4 -0
- metadata/ingestion/source/pipeline/databrickspipeline/service_spec.py +6 -0
- metadata/ingestion/source/pipeline/dbtcloud/client.py +67 -28
- metadata/ingestion/source/pipeline/dbtcloud/connection.py +1 -3
- metadata/ingestion/source/pipeline/dbtcloud/models.py +1 -1
- metadata/ingestion/source/pipeline/dbtcloud/service_spec.py +4 -0
- metadata/ingestion/source/pipeline/domopipeline/service_spec.py +4 -0
- metadata/ingestion/source/pipeline/fivetran/service_spec.py +4 -0
- metadata/ingestion/source/pipeline/flink/service_spec.py +4 -0
- metadata/ingestion/source/pipeline/gluepipeline/service_spec.py +4 -0
- metadata/ingestion/source/pipeline/kafkaconnect/client.py +1 -1
- metadata/ingestion/source/pipeline/kafkaconnect/service_spec.py +4 -0
- metadata/ingestion/source/pipeline/nifi/service_spec.py +4 -0
- metadata/ingestion/source/pipeline/openlineage/service_spec.py +4 -0
- metadata/ingestion/source/pipeline/pipeline_service.py +3 -1
- metadata/ingestion/source/pipeline/spline/service_spec.py +4 -0
- metadata/ingestion/source/search/elasticsearch/metadata.py +53 -0
- metadata/ingestion/source/search/elasticsearch/service_spec.py +4 -0
- metadata/ingestion/source/search/search_service.py +44 -1
- metadata/ingestion/source/storage/gcs/metadata.py +2 -2
- metadata/ingestion/source/storage/gcs/service_spec.py +4 -0
- metadata/ingestion/source/storage/s3/service_spec.py +4 -0
- metadata/mixins/pandas/pandas_mixin.py +2 -31
- metadata/mixins/sqalchemy/sqa_mixin.py +18 -17
- metadata/parsers/avro_parser.py +51 -16
- metadata/parsers/json_schema_parser.py +45 -16
- metadata/pii/processor.py +10 -9
- metadata/pii/scanners/ner_scanner.py +2 -1
- metadata/profiler/api/models.py +4 -75
- metadata/profiler/config.py +39 -0
- metadata/profiler/interface/nosql/profiler_interface.py +1 -26
- metadata/profiler/interface/pandas/profiler_interface.py +37 -77
- metadata/profiler/interface/profiler_interface.py +25 -279
- metadata/profiler/interface/sqlalchemy/bigquery/profiler_interface.py +0 -19
- metadata/profiler/interface/sqlalchemy/databricks/profiler_interface.py +2 -17
- metadata/profiler/interface/sqlalchemy/db2/profiler_interface.py +1 -1
- metadata/profiler/interface/sqlalchemy/mariadb/profiler_interface.py +7 -5
- metadata/profiler/interface/sqlalchemy/profiler_interface.py +73 -125
- metadata/profiler/interface/sqlalchemy/single_store/profiler_interface.py +5 -5
- metadata/profiler/interface/sqlalchemy/snowflake/profiler_interface.py +1 -1
- metadata/profiler/interface/sqlalchemy/stored_statistics_profiler.py +145 -0
- metadata/profiler/interface/sqlalchemy/trino/profiler_interface.py +9 -4
- metadata/profiler/metrics/system/system.py +69 -374
- metadata/profiler/orm/converter/base.py +23 -13
- metadata/profiler/orm/converter/bigquery/converter.py +1 -1
- metadata/profiler/orm/functions/count.py +9 -0
- metadata/profiler/orm/functions/md5.py +39 -0
- metadata/{data_quality/builders/pandas_validator_builder.py → profiler/orm/functions/substr.py} +13 -10
- metadata/profiler/orm/functions/table_metric_computer.py +6 -5
- metadata/profiler/orm/functions/unique_count.py +6 -0
- metadata/profiler/orm/registry.py +27 -2
- metadata/profiler/processor/core.py +13 -62
- metadata/profiler/processor/handle_partition.py +0 -48
- metadata/profiler/processor/processor.py +1 -1
- metadata/profiler/processor/runner.py +111 -35
- metadata/profiler/processor/sample_data_handler.py +7 -4
- metadata/profiler/source/database/base/profiler_source.py +215 -0
- metadata/profiler/source/{bigquery → database/bigquery}/profiler_source.py +4 -4
- metadata/profiler/source/{databricks → database/databricks}/profiler_source.py +6 -7
- metadata/profiler/source/{mariadb → database/mariadb}/metrics/window/first_quartile.py +1 -1
- metadata/profiler/source/{mariadb → database/mariadb}/metrics/window/median.py +1 -1
- metadata/profiler/source/{mariadb → database/mariadb}/metrics/window/third_quartile.py +1 -1
- metadata/profiler/source/{single_store → database/single_store}/metrics/window/first_quartile.py +3 -1
- metadata/profiler/source/{single_store → database/single_store}/metrics/window/median.py +3 -1
- metadata/profiler/source/{single_store → database/single_store}/metrics/window/third_quartile.py +3 -1
- metadata/profiler/source/fetcher/config.py +44 -0
- metadata/profiler/source/fetcher/entity_fetcher.py +62 -0
- metadata/profiler/source/fetcher/fetcher_strategy.py +299 -0
- metadata/profiler/source/fetcher/profiler_source_factory.py +89 -0
- metadata/profiler/source/metadata.py +16 -201
- metadata/profiler/source/metadata_ext.py +23 -18
- metadata/profiler/source/model.py +29 -0
- metadata/sampler/config.py +237 -0
- metadata/sampler/models.py +106 -0
- metadata/{profiler/processor/sampler → sampler}/nosql/sampler.py +44 -12
- metadata/sampler/pandas/sampler.py +239 -0
- metadata/{utils → sampler}/partition.py +66 -51
- metadata/sampler/processor.py +158 -0
- metadata/sampler/sampler_interface.py +251 -0
- metadata/{profiler/processor/sampler → sampler}/sqlalchemy/azuresql/sampler.py +1 -1
- metadata/{profiler/processor/sampler → sampler}/sqlalchemy/bigquery/sampler.py +55 -26
- metadata/sampler/sqlalchemy/postgres/sampler.py +91 -0
- metadata/{profiler/processor/sampler → sampler}/sqlalchemy/sampler.py +90 -98
- metadata/sampler/sqlalchemy/snowflake/sampler.py +95 -0
- metadata/{profiler/processor/sampler → sampler}/sqlalchemy/trino/sampler.py +5 -3
- metadata/utils/class_helper.py +5 -0
- metadata/utils/collaborative_super.py +28 -0
- metadata/utils/constants.py +65 -0
- metadata/utils/constraints.py +65 -0
- metadata/utils/dict.py +8 -0
- metadata/utils/dispatch.py +1 -53
- metadata/utils/entity_link.py +8 -2
- metadata/utils/entity_utils.py +93 -0
- metadata/utils/filters.py +15 -0
- metadata/utils/fqn.py +15 -0
- metadata/utils/helpers.py +3 -2
- metadata/utils/importer.py +12 -24
- metadata/utils/logger.py +31 -1
- metadata/utils/lru_cache.py +76 -15
- metadata/utils/profiler_utils.py +43 -9
- metadata/utils/service_spec/__init__.py +5 -0
- metadata/utils/service_spec/default.py +21 -0
- metadata/utils/service_spec/service_spec.py +146 -0
- metadata/utils/ssl_manager.py +33 -0
- metadata/utils/time_utils.py +33 -5
- metadata/workflow/application.py +7 -36
- metadata/workflow/base.py +47 -17
- metadata/workflow/classification.py +53 -0
- metadata/workflow/ingestion.py +6 -38
- metadata/workflow/profiler.py +1 -17
- metadata/workflow/workflow_output_handler.py +11 -8
- metadata/workflow/workflow_status_mixin.py +0 -2
- openmetadata_ingestion-1.6.0.0rc2.dist-info/LICENSE +114 -0
- {openmetadata_ingestion-1.5.13.0.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/METADATA +473 -548
- {openmetadata_ingestion-1.5.13.0.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/RECORD +995 -809
- {openmetadata_ingestion-1.5.13.0.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/entry_points.txt +3 -0
- metadata/data_quality/interface/test_suite_interface_factory.py +0 -128
- metadata/data_quality/runner/test_suite_source_factory.py +0 -38
- metadata/generated/schema/entity/services/connections/dashboard/mstrConnection.py +0 -54
- metadata/profiler/interface/profiler_interface_factory.py +0 -107
- metadata/profiler/metrics/system/queries/bigquery.py +0 -54
- metadata/profiler/metrics/system/queries/redshift.py +0 -103
- metadata/profiler/metrics/system/queries/snowflake.py +0 -191
- metadata/profiler/processor/sampler/pandas/sampler.py +0 -170
- metadata/profiler/processor/sampler/sampler_factory.py +0 -100
- metadata/profiler/processor/sampler/sampler_interface.py +0 -74
- metadata/profiler/processor/sampler/sqlalchemy/snowflake/sampler.py +0 -60
- metadata/profiler/source/base/profiler_source.py +0 -299
- metadata/profiler/source/profiler_source_factory.py +0 -54
- openmetadata_ingestion-1.5.13.0.dist-info/LICENSE +0 -201
- {metadata/ingestion/source/dashboard/mstr → _openmetadata_testutils/pytest_openmetadata}/__init__.py +0 -0
- /metadata/profiler/source/{bigquery → database/bigquery}/type_mapper.py +0 -0
- /metadata/profiler/source/{mariadb → database/mariadb}/functions/median.py +0 -0
- /metadata/profiler/source/{single_store → database/single_store}/functions/median.py +0 -0
- {openmetadata_ingestion-1.5.13.0.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/WHEEL +0 -0
- {openmetadata_ingestion-1.5.13.0.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/top_level.txt +0 -0
|
@@ -20,12 +20,14 @@ from pydantic import BaseModel
|
|
|
20
20
|
class DbtFiles(BaseModel):
|
|
21
21
|
dbt_catalog: Optional[dict] = None
|
|
22
22
|
dbt_manifest: dict
|
|
23
|
+
dbt_sources: Optional[dict] = None
|
|
23
24
|
dbt_run_results: Optional[List[dict]] = None
|
|
24
25
|
|
|
25
26
|
|
|
26
27
|
class DbtObjects(BaseModel):
|
|
27
28
|
dbt_catalog: Optional[Any] = None
|
|
28
29
|
dbt_manifest: Any
|
|
30
|
+
dbt_sources: Optional[Any] = None
|
|
29
31
|
dbt_run_results: Optional[List[Any]] = None
|
|
30
32
|
|
|
31
33
|
|
|
@@ -12,18 +12,16 @@
|
|
|
12
12
|
Deltalake source methods.
|
|
13
13
|
"""
|
|
14
14
|
import traceback
|
|
15
|
-
from typing import Any, Iterable, Optional, Tuple
|
|
15
|
+
from typing import Any, Iterable, Optional, Tuple
|
|
16
16
|
|
|
17
17
|
from metadata.generated.schema.api.data.createDatabase import CreateDatabaseRequest
|
|
18
18
|
from metadata.generated.schema.api.data.createDatabaseSchema import (
|
|
19
19
|
CreateDatabaseSchemaRequest,
|
|
20
20
|
)
|
|
21
|
-
from metadata.generated.schema.api.data.createQuery import CreateQueryRequest
|
|
22
21
|
from metadata.generated.schema.api.data.createStoredProcedure import (
|
|
23
22
|
CreateStoredProcedureRequest,
|
|
24
23
|
)
|
|
25
24
|
from metadata.generated.schema.api.data.createTable import CreateTableRequest
|
|
26
|
-
from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
|
|
27
25
|
from metadata.generated.schema.entity.data.database import Database
|
|
28
26
|
from metadata.generated.schema.entity.data.databaseSchema import DatabaseSchema
|
|
29
27
|
from metadata.generated.schema.entity.data.table import Table, TablePartition, TableType
|
|
@@ -283,9 +281,6 @@ class DeltalakeSource(DatabaseServiceSource):
|
|
|
283
281
|
def prepare(self):
|
|
284
282
|
"""Nothing to prepare"""
|
|
285
283
|
|
|
286
|
-
def yield_view_lineage(self) -> Iterable[Either[AddLineageRequest]]:
|
|
287
|
-
yield from []
|
|
288
|
-
|
|
289
284
|
def yield_tag(
|
|
290
285
|
self, schema_name: str
|
|
291
286
|
) -> Iterable[Either[OMetaTagAndClassification]]:
|
|
@@ -302,11 +297,5 @@ class DeltalakeSource(DatabaseServiceSource):
|
|
|
302
297
|
def get_stored_procedure_queries(self) -> Iterable[QueryByProcedure]:
|
|
303
298
|
"""Not Implemented"""
|
|
304
299
|
|
|
305
|
-
def yield_procedure_lineage_and_queries(
|
|
306
|
-
self,
|
|
307
|
-
) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
|
|
308
|
-
"""Not Implemented"""
|
|
309
|
-
yield from []
|
|
310
|
-
|
|
311
300
|
def close(self):
|
|
312
301
|
"""No client to close"""
|
|
@@ -14,18 +14,16 @@ Domo Database source to extract metadata
|
|
|
14
14
|
"""
|
|
15
15
|
|
|
16
16
|
import traceback
|
|
17
|
-
from typing import Any, Iterable, Optional, Tuple
|
|
17
|
+
from typing import Any, Iterable, Optional, Tuple
|
|
18
18
|
|
|
19
19
|
from metadata.generated.schema.api.data.createDatabase import CreateDatabaseRequest
|
|
20
20
|
from metadata.generated.schema.api.data.createDatabaseSchema import (
|
|
21
21
|
CreateDatabaseSchemaRequest,
|
|
22
22
|
)
|
|
23
|
-
from metadata.generated.schema.api.data.createQuery import CreateQueryRequest
|
|
24
23
|
from metadata.generated.schema.api.data.createStoredProcedure import (
|
|
25
24
|
CreateStoredProcedureRequest,
|
|
26
25
|
)
|
|
27
26
|
from metadata.generated.schema.api.data.createTable import CreateTableRequest
|
|
28
|
-
from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
|
|
29
27
|
from metadata.generated.schema.entity.data.database import Database
|
|
30
28
|
from metadata.generated.schema.entity.data.databaseSchema import DatabaseSchema
|
|
31
29
|
from metadata.generated.schema.entity.data.table import (
|
|
@@ -294,15 +292,6 @@ class DomodatabaseSource(DatabaseServiceSource):
|
|
|
294
292
|
def get_stored_procedure_queries(self) -> Iterable[QueryByProcedure]:
|
|
295
293
|
"""Not Implemented"""
|
|
296
294
|
|
|
297
|
-
def yield_procedure_lineage_and_queries(
|
|
298
|
-
self,
|
|
299
|
-
) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
|
|
300
|
-
"""Not Implemented"""
|
|
301
|
-
yield from []
|
|
302
|
-
|
|
303
|
-
def yield_view_lineage(self) -> Iterable[Either[AddLineageRequest]]:
|
|
304
|
-
yield from []
|
|
305
|
-
|
|
306
295
|
def get_source_url(
|
|
307
296
|
self,
|
|
308
297
|
table_name: Optional[str] = None,
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
9
|
# See the License for the specific language governing permissions and
|
|
10
10
|
# limitations under the License.
|
|
11
|
-
"""
|
|
11
|
+
"""Doris source module"""
|
|
12
12
|
import re
|
|
13
13
|
import traceback
|
|
14
14
|
from typing import Dict, Iterable, List, Optional, Tuple, cast
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
Druid lineage module
|
|
13
|
+
"""
|
|
14
|
+
from typing import Optional
|
|
15
|
+
|
|
16
|
+
from metadata.generated.schema.entity.services.connections.database.druidConnection import (
|
|
17
|
+
DruidConnection,
|
|
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.lineage_source import LineageSource
|
|
25
|
+
from metadata.utils.logger import ingestion_logger
|
|
26
|
+
|
|
27
|
+
logger = ingestion_logger()
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class DruidLineageSource(LineageSource):
|
|
31
|
+
"""
|
|
32
|
+
Druid lineage source implements view lineage
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
@classmethod
|
|
36
|
+
def create(
|
|
37
|
+
cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
|
|
38
|
+
):
|
|
39
|
+
"""Create class instance"""
|
|
40
|
+
config: WorkflowSource = WorkflowSource.model_validate(config_dict)
|
|
41
|
+
connection: DruidConnection = config.serviceConnection.root.config
|
|
42
|
+
if not isinstance(connection, DruidConnection):
|
|
43
|
+
raise InvalidSourceException(
|
|
44
|
+
f"Expected DruidConnection, but got {connection}"
|
|
45
|
+
)
|
|
46
|
+
return cls(config, metadata)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from metadata.ingestion.source.database.dynamodb.metadata import DynamodbSource
|
|
2
|
+
from metadata.profiler.interface.nosql.profiler_interface import NoSQLProfilerInterface
|
|
3
|
+
from metadata.sampler.nosql.sampler import NoSQLSampler
|
|
4
|
+
from metadata.utils.service_spec.default import DefaultDatabaseSpec
|
|
5
|
+
|
|
6
|
+
ServiceSpec = DefaultDatabaseSpec(
|
|
7
|
+
metadata_source_class=DynamodbSource,
|
|
8
|
+
profiler_class=NoSQLProfilerInterface,
|
|
9
|
+
sampler_class=NoSQLSampler,
|
|
10
|
+
)
|
|
File without changes
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
from urllib.parse import quote_plus
|
|
3
|
+
|
|
4
|
+
from pydantic import SecretStr
|
|
5
|
+
from sqlalchemy.engine import Engine
|
|
6
|
+
|
|
7
|
+
from metadata.generated.schema.entity.automations.workflow import (
|
|
8
|
+
Workflow as AutomationWorkflow,
|
|
9
|
+
)
|
|
10
|
+
from metadata.generated.schema.entity.services.connections.database.exasolConnection import (
|
|
11
|
+
ExasolConnection,
|
|
12
|
+
)
|
|
13
|
+
from metadata.ingestion.connections.builders import (
|
|
14
|
+
create_generic_db_connection,
|
|
15
|
+
get_connection_args_common,
|
|
16
|
+
)
|
|
17
|
+
from metadata.ingestion.connections.test_connections import test_query
|
|
18
|
+
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
19
|
+
from metadata.utils.logger import ingestion_logger
|
|
20
|
+
|
|
21
|
+
logger = ingestion_logger()
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def get_connection_url(connection: ExasolConnection) -> str:
|
|
25
|
+
"""
|
|
26
|
+
Common method for building the source connection urls
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
url = f"{connection.scheme.value}://"
|
|
30
|
+
|
|
31
|
+
if connection.username:
|
|
32
|
+
url += f"{quote_plus(connection.username)}"
|
|
33
|
+
connection.password = (
|
|
34
|
+
SecretStr("") if not connection.password else connection.password
|
|
35
|
+
)
|
|
36
|
+
url += (
|
|
37
|
+
f":{quote_plus(connection.password.get_secret_value())}"
|
|
38
|
+
if connection
|
|
39
|
+
else ""
|
|
40
|
+
)
|
|
41
|
+
url += "@"
|
|
42
|
+
|
|
43
|
+
url += connection.hostPort
|
|
44
|
+
|
|
45
|
+
if hasattr(connection, "databaseSchema"):
|
|
46
|
+
url += f"/{connection.databaseSchema}" if connection.databaseSchema else ""
|
|
47
|
+
|
|
48
|
+
tls_settings = {
|
|
49
|
+
"validate-certificate": {},
|
|
50
|
+
"ignore-certificate": {"SSLCertificate": "SSL_VERIFY_NONE"},
|
|
51
|
+
"disable-tls": {"SSLCertificate": "SSL_VERIFY_NONE", "ENCRYPTION": "no"},
|
|
52
|
+
}
|
|
53
|
+
options = tls_settings[connection.tls.value]
|
|
54
|
+
if options:
|
|
55
|
+
if (hasattr(connection, "database") and not connection.database) or (
|
|
56
|
+
hasattr(connection, "databaseSchema") and not connection.databaseSchema
|
|
57
|
+
):
|
|
58
|
+
url += "/"
|
|
59
|
+
params = "&".join(
|
|
60
|
+
f"{key}={quote_plus(value)}" for (key, value) in options.items() if value
|
|
61
|
+
)
|
|
62
|
+
url = f"{url}?{params}"
|
|
63
|
+
return url
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def get_connection(connection: ExasolConnection) -> Engine:
|
|
67
|
+
"""
|
|
68
|
+
Create connection
|
|
69
|
+
"""
|
|
70
|
+
return create_generic_db_connection(
|
|
71
|
+
connection=connection,
|
|
72
|
+
get_connection_url_fn=get_connection_url,
|
|
73
|
+
get_connection_args_fn=get_connection_args_common,
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def test_connection(
|
|
78
|
+
metadata: OpenMetadata,
|
|
79
|
+
engine: Engine,
|
|
80
|
+
service_connection: ExasolConnection,
|
|
81
|
+
automation_workflow: Optional[AutomationWorkflow] = None,
|
|
82
|
+
) -> None:
|
|
83
|
+
"""
|
|
84
|
+
Test connection. This can be executed either as part
|
|
85
|
+
of a metadata workflow or during an Automation Workflow
|
|
86
|
+
"""
|
|
87
|
+
test_query(engine, "SELECT 1;")
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from typing import Optional, cast
|
|
2
|
+
|
|
3
|
+
from metadata.generated.schema.entity.services.connections.database.exasolConnection import (
|
|
4
|
+
ExasolConnection,
|
|
5
|
+
)
|
|
6
|
+
from metadata.generated.schema.metadataIngestion.workflow import (
|
|
7
|
+
Source as WorkflowSource,
|
|
8
|
+
)
|
|
9
|
+
from metadata.ingestion.api.steps import InvalidSourceException
|
|
10
|
+
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
11
|
+
from metadata.ingestion.source.database.common_db_source import CommonDbSourceService
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class ExasolSource(CommonDbSourceService):
|
|
15
|
+
@classmethod
|
|
16
|
+
def create(
|
|
17
|
+
cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
|
|
18
|
+
):
|
|
19
|
+
config: WorkflowSource = WorkflowSource.model_validate(config_dict)
|
|
20
|
+
if config.serviceConnection is None:
|
|
21
|
+
raise InvalidSourceException("Missing service connection")
|
|
22
|
+
connection = cast(ExasolConnection, config.serviceConnection.root.config)
|
|
23
|
+
if not isinstance(connection, ExasolConnection):
|
|
24
|
+
raise InvalidSourceException(
|
|
25
|
+
f"Expected ExasolConnection, but got {connection}"
|
|
26
|
+
)
|
|
27
|
+
return cls(config, metadata)
|
|
@@ -12,21 +12,24 @@
|
|
|
12
12
|
Glue source methods.
|
|
13
13
|
"""
|
|
14
14
|
import traceback
|
|
15
|
-
from typing import Any, Iterable, Optional, Tuple
|
|
15
|
+
from typing import Any, Iterable, Optional, Tuple
|
|
16
16
|
|
|
17
17
|
from metadata.generated.schema.api.data.createDatabase import CreateDatabaseRequest
|
|
18
18
|
from metadata.generated.schema.api.data.createDatabaseSchema import (
|
|
19
19
|
CreateDatabaseSchemaRequest,
|
|
20
20
|
)
|
|
21
|
-
from metadata.generated.schema.api.data.createQuery import CreateQueryRequest
|
|
22
21
|
from metadata.generated.schema.api.data.createStoredProcedure import (
|
|
23
22
|
CreateStoredProcedureRequest,
|
|
24
23
|
)
|
|
25
24
|
from metadata.generated.schema.api.data.createTable import CreateTableRequest
|
|
26
|
-
from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
|
|
27
25
|
from metadata.generated.schema.entity.data.database import Database
|
|
28
26
|
from metadata.generated.schema.entity.data.databaseSchema import DatabaseSchema
|
|
29
|
-
from metadata.generated.schema.entity.data.table import
|
|
27
|
+
from metadata.generated.schema.entity.data.table import (
|
|
28
|
+
Column,
|
|
29
|
+
FileFormat,
|
|
30
|
+
Table,
|
|
31
|
+
TableType,
|
|
32
|
+
)
|
|
30
33
|
from metadata.generated.schema.entity.services.connections.database.glueConnection import (
|
|
31
34
|
GlueConnection,
|
|
32
35
|
)
|
|
@@ -39,7 +42,11 @@ from metadata.generated.schema.metadataIngestion.databaseServiceMetadataPipeline
|
|
|
39
42
|
from metadata.generated.schema.metadataIngestion.workflow import (
|
|
40
43
|
Source as WorkflowSource,
|
|
41
44
|
)
|
|
42
|
-
from metadata.generated.schema.type.basic import
|
|
45
|
+
from metadata.generated.schema.type.basic import (
|
|
46
|
+
EntityName,
|
|
47
|
+
FullyQualifiedEntityName,
|
|
48
|
+
Markdown,
|
|
49
|
+
)
|
|
43
50
|
from metadata.ingestion.api.models import Either
|
|
44
51
|
from metadata.ingestion.api.steps import InvalidSourceException
|
|
45
52
|
from metadata.ingestion.models.ometa_classification import OMetaTagAndClassification
|
|
@@ -48,6 +55,9 @@ from metadata.ingestion.source.connections import get_connection
|
|
|
48
55
|
from metadata.ingestion.source.database.column_helpers import truncate_column_name
|
|
49
56
|
from metadata.ingestion.source.database.column_type_parser import ColumnTypeParser
|
|
50
57
|
from metadata.ingestion.source.database.database_service import DatabaseServiceSource
|
|
58
|
+
from metadata.ingestion.source.database.external_table_lineage_mixin import (
|
|
59
|
+
ExternalTableLineageMixin,
|
|
60
|
+
)
|
|
51
61
|
from metadata.ingestion.source.database.glue.models import Column as GlueColumn
|
|
52
62
|
from metadata.ingestion.source.database.glue.models import (
|
|
53
63
|
DatabasePage,
|
|
@@ -62,7 +72,7 @@ from metadata.utils.logger import ingestion_logger
|
|
|
62
72
|
logger = ingestion_logger()
|
|
63
73
|
|
|
64
74
|
|
|
65
|
-
class GlueSource(DatabaseServiceSource):
|
|
75
|
+
class GlueSource(ExternalTableLineageMixin, DatabaseServiceSource):
|
|
66
76
|
"""
|
|
67
77
|
Implements the necessary methods to extract
|
|
68
78
|
Database metadata from Glue Source
|
|
@@ -79,6 +89,8 @@ class GlueSource(DatabaseServiceSource):
|
|
|
79
89
|
self.glue = get_connection(self.service_connection)
|
|
80
90
|
|
|
81
91
|
self.connection_obj = self.glue
|
|
92
|
+
self.schema_description_map = {}
|
|
93
|
+
self.external_location_map = {}
|
|
82
94
|
self.test_connection()
|
|
83
95
|
|
|
84
96
|
@classmethod
|
|
@@ -191,6 +203,10 @@ class GlueSource(DatabaseServiceSource):
|
|
|
191
203
|
):
|
|
192
204
|
self.status.filter(schema_fqn, "Schema Filtered Out")
|
|
193
205
|
continue
|
|
206
|
+
if schema.Description:
|
|
207
|
+
self.schema_description_map[schema.Name] = Markdown(
|
|
208
|
+
schema.Description
|
|
209
|
+
)
|
|
194
210
|
yield schema.Name
|
|
195
211
|
except Exception as exc:
|
|
196
212
|
self.status.failed(
|
|
@@ -211,6 +227,7 @@ class GlueSource(DatabaseServiceSource):
|
|
|
211
227
|
yield Either(
|
|
212
228
|
right=CreateDatabaseSchemaRequest(
|
|
213
229
|
name=EntityName(schema_name),
|
|
230
|
+
description=self.schema_description_map.get(schema_name),
|
|
214
231
|
database=FullyQualifiedEntityName(
|
|
215
232
|
fqn.build(
|
|
216
233
|
metadata=self.metadata,
|
|
@@ -295,9 +312,16 @@ class GlueSource(DatabaseServiceSource):
|
|
|
295
312
|
table_name, table_type = table_name_and_type
|
|
296
313
|
table = self.context.get().table_data
|
|
297
314
|
table_constraints = None
|
|
315
|
+
storage_descriptor = table.StorageDescriptor
|
|
316
|
+
database_name = self.context.get().database
|
|
317
|
+
schema_name = self.context.get().database_schema
|
|
318
|
+
if storage_descriptor.Location:
|
|
319
|
+
# s3a doesn't occur as a path in containers, so it needs to be replaced for lineage to work
|
|
320
|
+
self.external_location_map[
|
|
321
|
+
(database_name, schema_name, table_name)
|
|
322
|
+
] = storage_descriptor.Location.replace("s3a://", "s3://")
|
|
298
323
|
try:
|
|
299
|
-
columns = self.get_columns(
|
|
300
|
-
|
|
324
|
+
columns = self.get_columns(storage_descriptor)
|
|
301
325
|
table_request = CreateTableRequest(
|
|
302
326
|
name=EntityName(table_name),
|
|
303
327
|
tableType=table_type,
|
|
@@ -309,8 +333,8 @@ class GlueSource(DatabaseServiceSource):
|
|
|
309
333
|
metadata=self.metadata,
|
|
310
334
|
entity_type=DatabaseSchema,
|
|
311
335
|
service_name=self.context.get().database_service,
|
|
312
|
-
database_name=
|
|
313
|
-
schema_name=
|
|
336
|
+
database_name=database_name,
|
|
337
|
+
schema_name=schema_name,
|
|
314
338
|
)
|
|
315
339
|
),
|
|
316
340
|
sourceUrl=self.get_source_url(
|
|
@@ -318,6 +342,8 @@ class GlueSource(DatabaseServiceSource):
|
|
|
318
342
|
schema_name=self.context.get().database_schema,
|
|
319
343
|
database_name=self.context.get().database,
|
|
320
344
|
),
|
|
345
|
+
fileFormat=self.get_format(storage_descriptor),
|
|
346
|
+
locationPath=storage_descriptor.Location,
|
|
321
347
|
)
|
|
322
348
|
yield Either(right=table_request)
|
|
323
349
|
self.register_record(table_request=table_request)
|
|
@@ -360,12 +386,22 @@ class GlueSource(DatabaseServiceSource):
|
|
|
360
386
|
for column in self.context.get().table_data.PartitionKeys:
|
|
361
387
|
yield self._get_column_object(column)
|
|
362
388
|
|
|
389
|
+
@classmethod
|
|
390
|
+
def get_format(cls, storage: StorageDetails) -> Optional[FileFormat]:
|
|
391
|
+
library = storage.SerdeInfo.SerializationLibrary
|
|
392
|
+
if library is None:
|
|
393
|
+
return None
|
|
394
|
+
if library.endswith(".LazySimpleSerDe"):
|
|
395
|
+
return (
|
|
396
|
+
FileFormat.tsv
|
|
397
|
+
if storage.SerdeInfo.Parameters.get("serialization.format") == "\t"
|
|
398
|
+
else FileFormat.csv
|
|
399
|
+
)
|
|
400
|
+
return next((fmt for fmt in FileFormat if fmt.value in library.lower()), None)
|
|
401
|
+
|
|
363
402
|
def standardize_table_name(self, _: str, table: str) -> str:
|
|
364
403
|
return table[:128]
|
|
365
404
|
|
|
366
|
-
def yield_view_lineage(self) -> Iterable[Either[AddLineageRequest]]:
|
|
367
|
-
yield from []
|
|
368
|
-
|
|
369
405
|
def yield_tag(
|
|
370
406
|
self, schema_name: str
|
|
371
407
|
) -> Iterable[Either[OMetaTagAndClassification]]:
|
|
@@ -382,12 +418,6 @@ class GlueSource(DatabaseServiceSource):
|
|
|
382
418
|
def get_stored_procedure_queries(self) -> Iterable[QueryByProcedure]:
|
|
383
419
|
"""Not Implemented"""
|
|
384
420
|
|
|
385
|
-
def yield_procedure_lineage_and_queries(
|
|
386
|
-
self,
|
|
387
|
-
) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
|
|
388
|
-
"""Not Implemented"""
|
|
389
|
-
yield from []
|
|
390
|
-
|
|
391
421
|
def get_source_url(
|
|
392
422
|
self,
|
|
393
423
|
database_name: Optional[str],
|
|
@@ -20,6 +20,7 @@ from pydantic import BaseModel
|
|
|
20
20
|
class GlueSchema(BaseModel):
|
|
21
21
|
CatalogId: Optional[str] = None
|
|
22
22
|
Name: str
|
|
23
|
+
Description: Optional[str] = None
|
|
23
24
|
|
|
24
25
|
|
|
25
26
|
class DatabasePage(BaseModel):
|
|
@@ -36,8 +37,15 @@ class Column(BaseModel):
|
|
|
36
37
|
Comment: Optional[str] = None
|
|
37
38
|
|
|
38
39
|
|
|
40
|
+
class SerializationDetails(BaseModel):
|
|
41
|
+
SerializationLibrary: Optional[str] = None
|
|
42
|
+
Parameters: Optional[dict] = {}
|
|
43
|
+
|
|
44
|
+
|
|
39
45
|
class StorageDetails(BaseModel):
|
|
40
46
|
Columns: Optional[List[Column]] = []
|
|
47
|
+
Location: Optional[str] = None
|
|
48
|
+
SerdeInfo: Optional[SerializationDetails] = SerializationDetails()
|
|
41
49
|
|
|
42
50
|
|
|
43
51
|
class GlueTable(BaseModel):
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
Greenplum lineage module
|
|
13
|
+
"""
|
|
14
|
+
from typing import Optional
|
|
15
|
+
|
|
16
|
+
from metadata.generated.schema.entity.services.connections.database.greenplumConnection import (
|
|
17
|
+
GreenplumConnection,
|
|
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.lineage_source import LineageSource
|
|
25
|
+
from metadata.utils.logger import ingestion_logger
|
|
26
|
+
|
|
27
|
+
logger = ingestion_logger()
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class GreenplumLineageSource(LineageSource):
|
|
31
|
+
"""
|
|
32
|
+
Greenplum lineage source implements view lineage
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
@classmethod
|
|
36
|
+
def create(
|
|
37
|
+
cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
|
|
38
|
+
):
|
|
39
|
+
"""Create class instance"""
|
|
40
|
+
config: WorkflowSource = WorkflowSource.model_validate(config_dict)
|
|
41
|
+
connection: GreenplumConnection = config.serviceConnection.root.config
|
|
42
|
+
if not isinstance(connection, GreenplumConnection):
|
|
43
|
+
raise InvalidSourceException(
|
|
44
|
+
f"Expected GreenplumConnection, but got {connection}"
|
|
45
|
+
)
|
|
46
|
+
return cls(config, metadata)
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
Hive lineage module
|
|
13
|
+
"""
|
|
14
|
+
from typing import Optional
|
|
15
|
+
|
|
16
|
+
from metadata.generated.schema.entity.services.connections.database.hiveConnection import (
|
|
17
|
+
HiveConnection,
|
|
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.lineage_source import LineageSource
|
|
25
|
+
from metadata.utils.logger import ingestion_logger
|
|
26
|
+
|
|
27
|
+
logger = ingestion_logger()
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class HiveLineageSource(LineageSource):
|
|
31
|
+
"""
|
|
32
|
+
Hive lineage source implements view lineage
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
@classmethod
|
|
36
|
+
def create(
|
|
37
|
+
cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
|
|
38
|
+
):
|
|
39
|
+
"""Create class instance"""
|
|
40
|
+
config: WorkflowSource = WorkflowSource.model_validate(config_dict)
|
|
41
|
+
connection: HiveConnection = config.serviceConnection.root.config
|
|
42
|
+
if not isinstance(connection, HiveConnection):
|
|
43
|
+
raise InvalidSourceException(
|
|
44
|
+
f"Expected HiveConnection, but got {connection}"
|
|
45
|
+
)
|
|
46
|
+
return cls(config, metadata)
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
Iceberg source methods.
|
|
13
13
|
"""
|
|
14
14
|
import traceback
|
|
15
|
-
from typing import Any, Iterable, Optional, Tuple
|
|
15
|
+
from typing import Any, Iterable, Optional, Tuple
|
|
16
16
|
|
|
17
17
|
import pyiceberg
|
|
18
18
|
import pyiceberg.exceptions
|
|
@@ -21,12 +21,10 @@ from metadata.generated.schema.api.data.createDatabase import CreateDatabaseRequ
|
|
|
21
21
|
from metadata.generated.schema.api.data.createDatabaseSchema import (
|
|
22
22
|
CreateDatabaseSchemaRequest,
|
|
23
23
|
)
|
|
24
|
-
from metadata.generated.schema.api.data.createQuery import CreateQueryRequest
|
|
25
24
|
from metadata.generated.schema.api.data.createStoredProcedure import (
|
|
26
25
|
CreateStoredProcedureRequest,
|
|
27
26
|
)
|
|
28
27
|
from metadata.generated.schema.api.data.createTable import CreateTableRequest
|
|
29
|
-
from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
|
|
30
28
|
from metadata.generated.schema.entity.data.database import Database
|
|
31
29
|
from metadata.generated.schema.entity.data.databaseSchema import DatabaseSchema
|
|
32
30
|
from metadata.generated.schema.entity.data.table import Table, TableType
|
|
@@ -293,13 +291,6 @@ class IcebergSource(DatabaseServiceSource):
|
|
|
293
291
|
"""
|
|
294
292
|
yield from []
|
|
295
293
|
|
|
296
|
-
def yield_view_lineage(self) -> Iterable[Either[AddLineageRequest]]:
|
|
297
|
-
"""
|
|
298
|
-
From topology.
|
|
299
|
-
Parses view definition to get lineage information
|
|
300
|
-
"""
|
|
301
|
-
yield from []
|
|
302
|
-
|
|
303
294
|
def get_stored_procedures(self) -> Iterable[Any]:
|
|
304
295
|
"""Not Implemented"""
|
|
305
296
|
|
|
@@ -309,11 +300,5 @@ class IcebergSource(DatabaseServiceSource):
|
|
|
309
300
|
"""Process the stored procedure information"""
|
|
310
301
|
yield from []
|
|
311
302
|
|
|
312
|
-
def yield_procedure_lineage_and_queries(
|
|
313
|
-
self,
|
|
314
|
-
) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
|
|
315
|
-
"""Extracts the lineage information from Stored Procedures"""
|
|
316
|
-
yield from []
|
|
317
|
-
|
|
318
303
|
def close(self):
|
|
319
304
|
"""There is no connection to close."""
|