openmetadata-ingestion 1.5.11.0__py3-none-any.whl → 1.6.0.0rc1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of openmetadata-ingestion might be problematic. Click here for more details.
- _openmetadata_testutils/dict.py +23 -0
- _openmetadata_testutils/pydantic/test_utils.py +22 -2
- _openmetadata_testutils/pytest_openmetadata/__init__.py +0 -0
- _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/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/config/common.py +3 -1
- metadata/data_quality/api/models.py +2 -1
- metadata/data_quality/builders/i_validator_builder.py +5 -2
- metadata/data_quality/interface/pandas/pandas_test_suite_interface.py +1 -0
- metadata/data_quality/interface/sqlalchemy/sqa_test_suite_interface.py +1 -0
- metadata/data_quality/interface/test_suite_interface.py +6 -11
- metadata/data_quality/interface/test_suite_interface_factory.py +63 -33
- metadata/data_quality/source/test_suite.py +1 -1
- metadata/data_quality/validations/base_test_handler.py +3 -3
- metadata/data_quality/validations/column/base/columnValuesToBeInSet.py +4 -2
- metadata/data_quality/validations/models.py +6 -1
- metadata/data_quality/validations/runtime_param_setter/table_diff_params_setter.py +7 -2
- metadata/data_quality/validations/table/sqlalchemy/tableDiff.py +175 -3
- metadata/examples/workflows/datafactory.yaml +29 -0
- metadata/examples/workflows/matillion.yaml +31 -0
- 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/antlr/FqnLexer.py +15 -15
- 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 +1 -1
- metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
- metadata/generated/schema/api/data/createTable.py +1 -1
- metadata/generated/schema/api/data/createTableProfile.py +1 -1
- metadata/generated/schema/api/data/createTopic.py +1 -1
- metadata/generated/schema/api/data/loadGlossary.py +1 -1
- metadata/generated/schema/api/data/restoreEntity.py +1 -1
- metadata/generated/schema/api/dataInsight/__init__.py +1 -1
- metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
- metadata/generated/schema/api/dataInsight/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 -1
- 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 +8 -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 +1 -1
- 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/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 +4 -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/modeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/mstrConnection.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 +1 -1
- metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +5 -1
- metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +8 -1
- 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 +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/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 +5 -2
- 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 +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
- metadata/generated/schema/entity/services/messagingService.py +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 +43 -0
- metadata/generated/schema/governance/workflows/workflowInstanceState.py +66 -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/databaseServiceMetadataPipeline.py +1 -9
- metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +37 -2
- 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 +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
- metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
- metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/testSuitePipeline.py +4 -1
- metadata/generated/schema/metadataIngestion/workflow.py +13 -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 -2
- 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/parser.py +14 -0
- 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/ometa/mixins/es_mixin.py +66 -8
- metadata/ingestion/ometa/routes.py +4 -2
- metadata/ingestion/processor/query_parser.py +2 -2
- 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/mode/service_spec.py +4 -0
- metadata/ingestion/source/dashboard/mstr/client.py +3 -2
- metadata/ingestion/source/dashboard/mstr/service_spec.py +4 -0
- 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 +10 -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 +14 -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/ingestion/source/database/couchbase/models.py +31 -0
- 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 +16 -0
- metadata/ingestion/source/database/datalake/clients/gcs.py +6 -4
- metadata/ingestion/source/database/datalake/metadata.py +2 -13
- metadata/ingestion/source/database/datalake/service_spec.py +9 -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/metadata.py +3 -6
- 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 +7 -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 +7 -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 +46 -0
- metadata/ingestion/source/database/mysql/service_spec.py +4 -0
- 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 +137 -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 +1 -24
- metadata/ingestion/source/database/snowflake/models.py +50 -1
- 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 +27 -0
- metadata/ingestion/source/database/snowflake/service_spec.py +14 -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 -37
- 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 +14 -0
- metadata/ingestion/source/database/unitycatalog/metadata.py +3 -24
- metadata/ingestion/source/database/unitycatalog/service_spec.py +18 -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/metadata.py +36 -2
- 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/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/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/service_spec.py +4 -0
- 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/sqalchemy/sqa_mixin.py +2 -1
- metadata/parsers/avro_parser.py +51 -16
- metadata/parsers/json_schema_parser.py +45 -16
- metadata/pii/scanners/ner_scanner.py +2 -1
- metadata/profiler/api/models.py +5 -0
- metadata/profiler/interface/profiler_interface.py +26 -8
- metadata/profiler/interface/sqlalchemy/mariadb/profiler_interface.py +5 -3
- metadata/profiler/interface/sqlalchemy/profiler_interface.py +32 -21
- metadata/profiler/interface/sqlalchemy/single_store/profiler_interface.py +3 -3
- metadata/profiler/interface/sqlalchemy/stored_statistics_profiler.py +147 -0
- metadata/profiler/interface/sqlalchemy/trino/profiler_interface.py +7 -2
- metadata/profiler/metrics/system/system.py +69 -374
- metadata/profiler/orm/converter/base.py +2 -1
- 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/profiler/orm/functions/substr.py +32 -0
- metadata/profiler/orm/functions/table_metric_computer.py +1 -1
- metadata/profiler/orm/functions/unique_count.py +6 -0
- metadata/profiler/orm/registry.py +27 -2
- metadata/profiler/processor/core.py +8 -4
- metadata/profiler/processor/processor.py +1 -1
- metadata/profiler/processor/sampler/sqlalchemy/snowflake/sampler.py +28 -5
- metadata/profiler/source/{base → database/base}/profiler_source.py +20 -23
- metadata/profiler/source/{bigquery → database/bigquery}/profiler_source.py +1 -1
- metadata/profiler/source/{databricks → database/databricks}/profiler_source.py +4 -4
- 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/entity_fetcher.py +62 -0
- metadata/profiler/source/fetcher/fetcher_strategy.py +301 -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/utils/class_helper.py +5 -0
- metadata/utils/collaborative_super.py +28 -0
- metadata/utils/constants.py +2 -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 +2 -0
- metadata/utils/importer.py +12 -24
- metadata/utils/logger.py +23 -2
- metadata/utils/lru_cache.py +76 -15
- metadata/utils/profiler_utils.py +1 -9
- metadata/utils/service_spec/__init__.py +5 -0
- metadata/utils/service_spec/default.py +15 -0
- metadata/utils/service_spec/service_spec.py +99 -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/ingestion.py +6 -38
- metadata/workflow/workflow_output_handler.py +11 -8
- metadata/workflow/workflow_status_mixin.py +0 -2
- openmetadata_ingestion-1.6.0.0rc1.dist-info/LICENSE +114 -0
- {openmetadata_ingestion-1.5.11.0.dist-info → openmetadata_ingestion-1.6.0.0rc1.dist-info}/METADATA +499 -578
- {openmetadata_ingestion-1.5.11.0.dist-info → openmetadata_ingestion-1.6.0.0rc1.dist-info}/RECORD +908 -728
- {openmetadata_ingestion-1.5.11.0.dist-info → openmetadata_ingestion-1.6.0.0rc1.dist-info}/entry_points.txt +3 -0
- 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/source/profiler_source_factory.py +0 -54
- openmetadata_ingestion-1.5.11.0.dist-info/LICENSE +0 -201
- /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.11.0.dist-info → openmetadata_ingestion-1.6.0.0rc1.dist-info}/WHEEL +0 -0
- {openmetadata_ingestion-1.5.11.0.dist-info → openmetadata_ingestion-1.6.0.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -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
|
+
Mariadb lineage module
|
|
13
|
+
"""
|
|
14
|
+
from typing import Optional
|
|
15
|
+
|
|
16
|
+
from metadata.generated.schema.entity.services.connections.database.mariaDBConnection import (
|
|
17
|
+
MariadbConnection,
|
|
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 MariadbLineageSource(LineageSource):
|
|
31
|
+
"""
|
|
32
|
+
Mariadb 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: MariadbConnection = config.serviceConnection.root.config
|
|
42
|
+
if not isinstance(connection, MariadbConnection):
|
|
43
|
+
raise InvalidSourceException(
|
|
44
|
+
f"Expected MariadbConnection, but got {connection}"
|
|
45
|
+
)
|
|
46
|
+
return cls(config, metadata)
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
from metadata.ingestion.source.database.mongodb.metadata import MongodbSource
|
|
2
|
+
from metadata.profiler.interface.nosql.profiler_interface import NoSQLProfilerInterface
|
|
3
|
+
from metadata.utils.service_spec.default import DefaultDatabaseSpec
|
|
4
|
+
|
|
5
|
+
ServiceSpec = DefaultDatabaseSpec(
|
|
6
|
+
metadata_source_class=MongodbSource, profiler_class=NoSQLProfilerInterface
|
|
7
|
+
)
|
|
@@ -11,21 +11,39 @@
|
|
|
11
11
|
"""
|
|
12
12
|
MSSQL lineage module
|
|
13
13
|
"""
|
|
14
|
+
import traceback
|
|
14
15
|
from datetime import datetime
|
|
16
|
+
from typing import Dict, List
|
|
15
17
|
|
|
18
|
+
from metadata.generated.schema.entity.services.ingestionPipelines.status import (
|
|
19
|
+
StackTraceError,
|
|
20
|
+
)
|
|
16
21
|
from metadata.ingestion.source.database.lineage_source import LineageSource
|
|
17
22
|
from metadata.ingestion.source.database.mssql.constants import (
|
|
18
23
|
DEFAULT_DATETIME_FORMAT,
|
|
19
24
|
MSSQL_DATEFORMAT_DATETIME_MAP,
|
|
20
25
|
)
|
|
21
|
-
from metadata.ingestion.source.database.mssql.queries import
|
|
26
|
+
from metadata.ingestion.source.database.mssql.queries import (
|
|
27
|
+
MSSQL_GET_STORED_PROCEDURE_QUERIES,
|
|
28
|
+
MSSQL_SQL_STATEMENT,
|
|
29
|
+
)
|
|
22
30
|
from metadata.ingestion.source.database.mssql.query_parser import MssqlQueryParserSource
|
|
23
31
|
from metadata.ingestion.source.database.mssql.utils import (
|
|
24
32
|
get_sqlalchemy_engine_dateformat,
|
|
25
33
|
)
|
|
34
|
+
from metadata.ingestion.source.database.stored_procedures_mixin import (
|
|
35
|
+
QueryByProcedure,
|
|
36
|
+
StoredProcedureLineageMixin,
|
|
37
|
+
)
|
|
38
|
+
from metadata.utils.helpers import get_start_and_end
|
|
39
|
+
from metadata.utils.logger import ingestion_logger
|
|
40
|
+
|
|
41
|
+
logger = ingestion_logger()
|
|
26
42
|
|
|
27
43
|
|
|
28
|
-
class MssqlLineageSource(
|
|
44
|
+
class MssqlLineageSource(
|
|
45
|
+
MssqlQueryParserSource, StoredProcedureLineageMixin, LineageSource
|
|
46
|
+
):
|
|
29
47
|
|
|
30
48
|
sql_stmt = MSSQL_SQL_STATEMENT
|
|
31
49
|
|
|
@@ -55,3 +73,34 @@ class MssqlLineageSource(MssqlQueryParserSource, LineageSource):
|
|
|
55
73
|
filters=self.get_filters(),
|
|
56
74
|
result_limit=self.source_config.resultLimit,
|
|
57
75
|
)
|
|
76
|
+
|
|
77
|
+
def get_stored_procedure_queries_dict(self) -> Dict[str, List[QueryByProcedure]]:
|
|
78
|
+
"""
|
|
79
|
+
Return the dictionary associating stored procedures to the
|
|
80
|
+
queries they triggered
|
|
81
|
+
"""
|
|
82
|
+
start, _ = get_start_and_end(self.source_config.queryLogDuration)
|
|
83
|
+
server_date_format = get_sqlalchemy_engine_dateformat(self.engine)
|
|
84
|
+
current_datetime_format = MSSQL_DATEFORMAT_DATETIME_MAP.get(
|
|
85
|
+
server_date_format, DEFAULT_DATETIME_FORMAT
|
|
86
|
+
)
|
|
87
|
+
start = start.strftime(current_datetime_format)
|
|
88
|
+
query = MSSQL_GET_STORED_PROCEDURE_QUERIES.format(
|
|
89
|
+
start_date=start,
|
|
90
|
+
)
|
|
91
|
+
try:
|
|
92
|
+
queries_dict = self.procedure_queries_dict(
|
|
93
|
+
query=query,
|
|
94
|
+
)
|
|
95
|
+
except Exception as ex: # pylint: disable=broad-except
|
|
96
|
+
logger.debug(f"Error runnning query:\n{query}")
|
|
97
|
+
self.status.failed(
|
|
98
|
+
StackTraceError(
|
|
99
|
+
name="Stored Procedure",
|
|
100
|
+
error=f"Error trying to get stored procedure queries: {ex}",
|
|
101
|
+
stackTrace=traceback.format_exc(),
|
|
102
|
+
)
|
|
103
|
+
)
|
|
104
|
+
return {}
|
|
105
|
+
|
|
106
|
+
return queries_dict
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
# limitations under the License.
|
|
11
11
|
"""MSSQL source module"""
|
|
12
12
|
import traceback
|
|
13
|
-
from typing import
|
|
13
|
+
from typing import Iterable, Optional
|
|
14
14
|
|
|
15
15
|
from sqlalchemy.dialects.mssql.base import MSDialect, ischema_names
|
|
16
16
|
from sqlalchemy.engine.reflection import Inspector
|
|
@@ -35,24 +35,18 @@ from metadata.ingestion.api.models import Either
|
|
|
35
35
|
from metadata.ingestion.api.steps import InvalidSourceException
|
|
36
36
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
37
37
|
from metadata.ingestion.source.database.common_db_source import CommonDbSourceService
|
|
38
|
-
from metadata.ingestion.source.database.mssql.constants import (
|
|
39
|
-
DEFAULT_DATETIME_FORMAT,
|
|
40
|
-
MSSQL_DATEFORMAT_DATETIME_MAP,
|
|
41
|
-
)
|
|
42
38
|
from metadata.ingestion.source.database.mssql.models import (
|
|
43
39
|
STORED_PROC_LANGUAGE_MAP,
|
|
44
40
|
MssqlStoredProcedure,
|
|
45
41
|
)
|
|
46
42
|
from metadata.ingestion.source.database.mssql.queries import (
|
|
47
43
|
MSSQL_GET_DATABASE,
|
|
48
|
-
MSSQL_GET_STORED_PROCEDURE_QUERIES,
|
|
49
44
|
MSSQL_GET_STORED_PROCEDURES,
|
|
50
45
|
)
|
|
51
46
|
from metadata.ingestion.source.database.mssql.utils import (
|
|
52
47
|
get_columns,
|
|
53
48
|
get_foreign_keys,
|
|
54
49
|
get_pk_constraint,
|
|
55
|
-
get_sqlalchemy_engine_dateformat,
|
|
56
50
|
get_table_comment,
|
|
57
51
|
get_table_names,
|
|
58
52
|
get_unique_constraints,
|
|
@@ -60,13 +54,8 @@ from metadata.ingestion.source.database.mssql.utils import (
|
|
|
60
54
|
get_view_names,
|
|
61
55
|
)
|
|
62
56
|
from metadata.ingestion.source.database.multi_db_source import MultiDBSource
|
|
63
|
-
from metadata.ingestion.source.database.stored_procedures_mixin import (
|
|
64
|
-
QueryByProcedure,
|
|
65
|
-
StoredProcedureMixin,
|
|
66
|
-
)
|
|
67
57
|
from metadata.utils import fqn
|
|
68
58
|
from metadata.utils.filters import filter_by_database
|
|
69
|
-
from metadata.utils.helpers import get_start_and_end
|
|
70
59
|
from metadata.utils.logger import ingestion_logger
|
|
71
60
|
from metadata.utils.sqa_utils import update_mssql_ischema_names
|
|
72
61
|
from metadata.utils.sqlalchemy_utils import (
|
|
@@ -99,7 +88,7 @@ Inspector.get_all_table_ddls = get_all_table_ddls
|
|
|
99
88
|
Inspector.get_table_ddl = get_table_ddl
|
|
100
89
|
|
|
101
90
|
|
|
102
|
-
class MssqlSource(
|
|
91
|
+
class MssqlSource(CommonDbSourceService, MultiDBSource):
|
|
103
92
|
"""
|
|
104
93
|
Implements the necessary methods to extract
|
|
105
94
|
Database metadata from MSSQL Source
|
|
@@ -213,34 +202,3 @@ class MssqlSource(StoredProcedureMixin, CommonDbSourceService, MultiDBSource):
|
|
|
213
202
|
stackTrace=traceback.format_exc(),
|
|
214
203
|
)
|
|
215
204
|
)
|
|
216
|
-
|
|
217
|
-
def get_stored_procedure_queries_dict(self) -> Dict[str, List[QueryByProcedure]]:
|
|
218
|
-
"""
|
|
219
|
-
Return the dictionary associating stored procedures to the
|
|
220
|
-
queries they triggered
|
|
221
|
-
"""
|
|
222
|
-
start, _ = get_start_and_end(self.source_config.queryLogDuration)
|
|
223
|
-
server_date_format = get_sqlalchemy_engine_dateformat(self.engine)
|
|
224
|
-
current_datetime_format = MSSQL_DATEFORMAT_DATETIME_MAP.get(
|
|
225
|
-
server_date_format, DEFAULT_DATETIME_FORMAT
|
|
226
|
-
)
|
|
227
|
-
start = start.strftime(current_datetime_format)
|
|
228
|
-
query = MSSQL_GET_STORED_PROCEDURE_QUERIES.format(
|
|
229
|
-
start_date=start,
|
|
230
|
-
)
|
|
231
|
-
try:
|
|
232
|
-
queries_dict = self.procedure_queries_dict(
|
|
233
|
-
query=query,
|
|
234
|
-
)
|
|
235
|
-
except Exception as ex: # pylint: disable=broad-except
|
|
236
|
-
logger.debug(f"Error runnning query:\n{query}")
|
|
237
|
-
self.status.failed(
|
|
238
|
-
StackTraceError(
|
|
239
|
-
name="Stored Procedure",
|
|
240
|
-
error=f"Error trying to get stored procedure queries: {ex}",
|
|
241
|
-
stackTrace=traceback.format_exc(),
|
|
242
|
-
)
|
|
243
|
-
)
|
|
244
|
-
return {}
|
|
245
|
-
|
|
246
|
-
return queries_dict
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from metadata.ingestion.source.database.mssql.lineage import MssqlLineageSource
|
|
2
|
+
from metadata.ingestion.source.database.mssql.metadata import MssqlSource
|
|
3
|
+
from metadata.ingestion.source.database.mssql.usage import MssqlUsageSource
|
|
4
|
+
from metadata.utils.service_spec.default import DefaultDatabaseSpec
|
|
5
|
+
|
|
6
|
+
ServiceSpec = DefaultDatabaseSpec(
|
|
7
|
+
metadata_source_class=MssqlSource,
|
|
8
|
+
lineage_source_class=MssqlLineageSource,
|
|
9
|
+
usage_source_class=MssqlUsageSource,
|
|
10
|
+
)
|
|
@@ -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
|
+
Mysql lineage module
|
|
13
|
+
"""
|
|
14
|
+
from typing import Optional
|
|
15
|
+
|
|
16
|
+
from metadata.generated.schema.entity.services.connections.database.mysqlConnection import (
|
|
17
|
+
MysqlConnection,
|
|
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 MysqlLineageSource(LineageSource):
|
|
31
|
+
"""
|
|
32
|
+
Mysql 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: MysqlConnection = config.serviceConnection.root.config
|
|
42
|
+
if not isinstance(connection, MysqlConnection):
|
|
43
|
+
raise InvalidSourceException(
|
|
44
|
+
f"Expected MysqlConnection, but got {connection}"
|
|
45
|
+
)
|
|
46
|
+
return cls(config, metadata)
|
|
@@ -30,16 +30,26 @@ workflowConfig:
|
|
|
30
30
|
jwtToken: "token"
|
|
31
31
|
"""
|
|
32
32
|
|
|
33
|
+
from typing import Dict, List
|
|
34
|
+
|
|
33
35
|
from metadata.ingestion.source.database.lineage_source import LineageSource
|
|
34
36
|
from metadata.ingestion.source.database.oracle.queries import (
|
|
37
|
+
ORACLE_GET_STORED_PROCEDURE_QUERIES,
|
|
35
38
|
ORACLE_QUERY_HISTORY_STATEMENT,
|
|
36
39
|
)
|
|
37
40
|
from metadata.ingestion.source.database.oracle.query_parser import (
|
|
38
41
|
OracleQueryParserSource,
|
|
39
42
|
)
|
|
43
|
+
from metadata.ingestion.source.database.stored_procedures_mixin import (
|
|
44
|
+
QueryByProcedure,
|
|
45
|
+
StoredProcedureLineageMixin,
|
|
46
|
+
)
|
|
47
|
+
from metadata.utils.helpers import get_start_and_end
|
|
40
48
|
|
|
41
49
|
|
|
42
|
-
class OracleLineageSource(
|
|
50
|
+
class OracleLineageSource(
|
|
51
|
+
OracleQueryParserSource, StoredProcedureLineageMixin, LineageSource
|
|
52
|
+
):
|
|
43
53
|
filters = """
|
|
44
54
|
AND COMMAND_TYPE IN (1, 2) AND (
|
|
45
55
|
lower(SQL_FULLTEXT) LIKE '%%create%%table%%as%%select%%'
|
|
@@ -50,3 +60,20 @@ class OracleLineageSource(OracleQueryParserSource, LineageSource):
|
|
|
50
60
|
"""
|
|
51
61
|
|
|
52
62
|
sql_stmt = ORACLE_QUERY_HISTORY_STATEMENT
|
|
63
|
+
|
|
64
|
+
stored_procedure_query = ORACLE_GET_STORED_PROCEDURE_QUERIES
|
|
65
|
+
|
|
66
|
+
def get_stored_procedure_queries_dict(self) -> Dict[str, List[QueryByProcedure]]:
|
|
67
|
+
"""
|
|
68
|
+
Return the dictionary associating stored procedures to the
|
|
69
|
+
queries they triggered
|
|
70
|
+
"""
|
|
71
|
+
start, _ = get_start_and_end(self.source_config.queryLogDuration)
|
|
72
|
+
query = self.stored_procedure_query.format(
|
|
73
|
+
start_date=start,
|
|
74
|
+
)
|
|
75
|
+
queries_dict = self.procedure_queries_dict(
|
|
76
|
+
query=query,
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
return queries_dict
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# pylint: disable=protected-access
|
|
13
13
|
"""Oracle source module"""
|
|
14
14
|
import traceback
|
|
15
|
-
from typing import
|
|
15
|
+
from typing import Iterable, Optional
|
|
16
16
|
|
|
17
17
|
from sqlalchemy.dialects.oracle.base import INTERVAL, OracleDialect, ischema_names
|
|
18
18
|
from sqlalchemy.engine import Inspector
|
|
@@ -49,7 +49,6 @@ from metadata.ingestion.source.database.oracle.models import (
|
|
|
49
49
|
OracleStoredProcedure,
|
|
50
50
|
)
|
|
51
51
|
from metadata.ingestion.source.database.oracle.queries import (
|
|
52
|
-
ORACLE_GET_STORED_PROCEDURE_QUERIES,
|
|
53
52
|
ORACLE_GET_STORED_PROCEDURES,
|
|
54
53
|
)
|
|
55
54
|
from metadata.ingestion.source.database.oracle.utils import (
|
|
@@ -65,12 +64,7 @@ from metadata.ingestion.source.database.oracle.utils import (
|
|
|
65
64
|
get_view_names,
|
|
66
65
|
get_view_names_dialect,
|
|
67
66
|
)
|
|
68
|
-
from metadata.ingestion.source.database.stored_procedures_mixin import (
|
|
69
|
-
QueryByProcedure,
|
|
70
|
-
StoredProcedureMixin,
|
|
71
|
-
)
|
|
72
67
|
from metadata.utils import fqn
|
|
73
|
-
from metadata.utils.helpers import get_start_and_end
|
|
74
68
|
from metadata.utils.logger import ingestion_logger
|
|
75
69
|
from metadata.utils.sqlalchemy_utils import (
|
|
76
70
|
get_all_table_comments,
|
|
@@ -109,7 +103,7 @@ Inspector.get_table_ddl = get_table_ddl
|
|
|
109
103
|
OracleDialect._get_constraint_data = _get_constraint_data
|
|
110
104
|
|
|
111
105
|
|
|
112
|
-
class OracleSource(
|
|
106
|
+
class OracleSource(CommonDbSourceService):
|
|
113
107
|
"""
|
|
114
108
|
Implements the necessary methods to extract
|
|
115
109
|
Database metadata from Oracle Source
|
|
@@ -250,18 +244,3 @@ class OracleSource(StoredProcedureMixin, CommonDbSourceService):
|
|
|
250
244
|
stackTrace=traceback.format_exc(),
|
|
251
245
|
)
|
|
252
246
|
)
|
|
253
|
-
|
|
254
|
-
def get_stored_procedure_queries_dict(self) -> Dict[str, List[QueryByProcedure]]:
|
|
255
|
-
"""
|
|
256
|
-
Return the dictionary associating stored procedures to the
|
|
257
|
-
queries they triggered
|
|
258
|
-
"""
|
|
259
|
-
start, _ = get_start_and_end(self.source_config.queryLogDuration)
|
|
260
|
-
query = ORACLE_GET_STORED_PROCEDURE_QUERIES.format(
|
|
261
|
-
start_date=start,
|
|
262
|
-
)
|
|
263
|
-
queries_dict = self.procedure_queries_dict(
|
|
264
|
-
query=query,
|
|
265
|
-
)
|
|
266
|
-
|
|
267
|
-
return queries_dict
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from metadata.ingestion.source.database.oracle.lineage import OracleLineageSource
|
|
2
|
+
from metadata.ingestion.source.database.oracle.metadata import OracleSource
|
|
3
|
+
from metadata.ingestion.source.database.oracle.usage import OracleUsageSource
|
|
4
|
+
from metadata.utils.service_spec.default import DefaultDatabaseSpec
|
|
5
|
+
|
|
6
|
+
ServiceSpec = DefaultDatabaseSpec(
|
|
7
|
+
metadata_source_class=OracleSource,
|
|
8
|
+
lineage_source_class=OracleLineageSource,
|
|
9
|
+
usage_source_class=OracleUsageSource,
|
|
10
|
+
)
|
|
@@ -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
|
+
Pinotdb lineage module
|
|
13
|
+
"""
|
|
14
|
+
from typing import Optional
|
|
15
|
+
|
|
16
|
+
from metadata.generated.schema.entity.services.connections.database.pinotDBConnection import (
|
|
17
|
+
PinotDBConnection,
|
|
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 PinotdbLineageSource(LineageSource):
|
|
31
|
+
"""
|
|
32
|
+
Pinotdb 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: PinotDBConnection = config.serviceConnection.root.config
|
|
42
|
+
if not isinstance(connection, PinotDBConnection):
|
|
43
|
+
raise InvalidSourceException(
|
|
44
|
+
f"Expected PinotDBConnection, but got {connection}"
|
|
45
|
+
)
|
|
46
|
+
return cls(config, metadata)
|
|
@@ -13,7 +13,7 @@ Postgres source module
|
|
|
13
13
|
"""
|
|
14
14
|
import traceback
|
|
15
15
|
from collections import namedtuple
|
|
16
|
-
from typing import
|
|
16
|
+
from typing import Iterable, Optional, Tuple
|
|
17
17
|
|
|
18
18
|
from sqlalchemy import String as SqlAlchemyString
|
|
19
19
|
from sqlalchemy import sql
|
|
@@ -67,14 +67,11 @@ from metadata.ingestion.source.database.postgres.utils import (
|
|
|
67
67
|
get_columns,
|
|
68
68
|
get_etable_owner,
|
|
69
69
|
get_foreign_keys,
|
|
70
|
+
get_json_fields_and_type,
|
|
70
71
|
get_table_comment,
|
|
71
72
|
get_table_owner,
|
|
72
73
|
get_view_definition,
|
|
73
74
|
)
|
|
74
|
-
from metadata.ingestion.source.database.stored_procedures_mixin import (
|
|
75
|
-
QueryByProcedure,
|
|
76
|
-
StoredProcedureMixin,
|
|
77
|
-
)
|
|
78
75
|
from metadata.utils import fqn
|
|
79
76
|
from metadata.utils.filters import filter_by_database
|
|
80
77
|
from metadata.utils.importer import import_side_effects
|
|
@@ -150,11 +147,12 @@ PGDialect.ischema_names = ischema_names
|
|
|
150
147
|
Inspector.get_all_table_ddls = get_all_table_ddls
|
|
151
148
|
Inspector.get_table_ddl = get_table_ddl
|
|
152
149
|
Inspector.get_table_owner = get_etable_owner
|
|
150
|
+
Inspector.get_json_fields_and_type = get_json_fields_and_type
|
|
153
151
|
|
|
154
152
|
PGDialect.get_foreign_keys = get_foreign_keys
|
|
155
153
|
|
|
156
154
|
|
|
157
|
-
class PostgresSource(CommonDbSourceService, MultiDBSource
|
|
155
|
+
class PostgresSource(CommonDbSourceService, MultiDBSource):
|
|
158
156
|
"""
|
|
159
157
|
Implements the necessary methods to extract
|
|
160
158
|
Database metadata from Postgres Source
|
|
@@ -362,10 +360,3 @@ class PostgresSource(CommonDbSourceService, MultiDBSource, StoredProcedureMixin)
|
|
|
362
360
|
stackTrace=traceback.format_exc(),
|
|
363
361
|
)
|
|
364
362
|
)
|
|
365
|
-
|
|
366
|
-
def get_stored_procedure_queries_dict(self) -> Dict[str, List[QueryByProcedure]]:
|
|
367
|
-
"""
|
|
368
|
-
Return the dictionary associating stored procedures to the
|
|
369
|
-
queries they triggered
|
|
370
|
-
"""
|
|
371
|
-
return {}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from metadata.ingestion.source.database.postgres.lineage import PostgresLineageSource
|
|
2
|
+
from metadata.ingestion.source.database.postgres.metadata import PostgresSource
|
|
3
|
+
from metadata.ingestion.source.database.postgres.usage import PostgresUsageSource
|
|
4
|
+
from metadata.utils.service_spec.default import DefaultDatabaseSpec
|
|
5
|
+
|
|
6
|
+
ServiceSpec = DefaultDatabaseSpec(
|
|
7
|
+
metadata_source_class=PostgresSource,
|
|
8
|
+
lineage_source_class=PostgresLineageSource,
|
|
9
|
+
usage_source_class=PostgresUsageSource,
|
|
10
|
+
)
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"""
|
|
14
14
|
Postgres SQLAlchemy util methods
|
|
15
15
|
"""
|
|
16
|
+
import json
|
|
16
17
|
import re
|
|
17
18
|
import traceback
|
|
18
19
|
from typing import Dict, Optional, Tuple
|
|
@@ -23,15 +24,18 @@ from sqlalchemy.dialects.postgresql.base import ENUM
|
|
|
23
24
|
from sqlalchemy.engine import reflection
|
|
24
25
|
from sqlalchemy.sql import sqltypes
|
|
25
26
|
|
|
27
|
+
from metadata.generated.schema.entity.data.table import Column
|
|
26
28
|
from metadata.ingestion.source.database.postgres.queries import (
|
|
27
29
|
POSTGRES_COL_IDENTITY,
|
|
28
30
|
POSTGRES_FETCH_FK,
|
|
31
|
+
POSTGRES_GET_JSON_FIELDS,
|
|
29
32
|
POSTGRES_GET_SERVER_VERSION,
|
|
30
33
|
POSTGRES_SQL_COLUMNS,
|
|
31
34
|
POSTGRES_TABLE_COMMENTS,
|
|
32
35
|
POSTGRES_TABLE_OWNERS,
|
|
33
36
|
POSTGRES_VIEW_DEFINITIONS,
|
|
34
37
|
)
|
|
38
|
+
from metadata.parsers.json_schema_parser import parse_json_schema
|
|
35
39
|
from metadata.utils.logger import utils_logger
|
|
36
40
|
from metadata.utils.sqlalchemy_utils import (
|
|
37
41
|
get_table_comment_wrapper,
|
|
@@ -186,6 +190,28 @@ def get_table_comment(
|
|
|
186
190
|
)
|
|
187
191
|
|
|
188
192
|
|
|
193
|
+
@reflection.cache
|
|
194
|
+
def get_json_fields_and_type(
|
|
195
|
+
self, table_name, column_name, schema=None, **kw
|
|
196
|
+
): # pylint: disable=unused-argument
|
|
197
|
+
try:
|
|
198
|
+
query = POSTGRES_GET_JSON_FIELDS.format(
|
|
199
|
+
table_name=table_name, column_name=column_name
|
|
200
|
+
)
|
|
201
|
+
cursor = self.engine.execute(query)
|
|
202
|
+
result = cursor.fetchone()
|
|
203
|
+
if result:
|
|
204
|
+
parsed_column = parse_json_schema(json.dumps(result[0]), Column)
|
|
205
|
+
if parsed_column:
|
|
206
|
+
return parsed_column[0].children
|
|
207
|
+
except Exception as err:
|
|
208
|
+
logger.warning(
|
|
209
|
+
f"Unable to parse the json fields for {table_name}.{column_name} - {err}"
|
|
210
|
+
)
|
|
211
|
+
logger.debug(traceback.format_exc())
|
|
212
|
+
return None
|
|
213
|
+
|
|
214
|
+
|
|
189
215
|
@reflection.cache
|
|
190
216
|
def get_columns( # pylint: disable=too-many-locals
|
|
191
217
|
self, connection, table_name, schema=None, **kw
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from metadata.ingestion.source.database.query.lineage import QueryLogLineageSource
|
|
2
|
+
from metadata.ingestion.source.database.query.usage import QueryLogUsageSource
|
|
3
|
+
from metadata.utils.service_spec import BaseSpec
|
|
4
|
+
|
|
5
|
+
ServiceSpec = BaseSpec(
|
|
6
|
+
metadata_source_class="not.implemented",
|
|
7
|
+
lineage_source_class=QueryLogLineageSource,
|
|
8
|
+
usage_source_class=QueryLogUsageSource,
|
|
9
|
+
)
|
|
@@ -58,6 +58,7 @@ class QueryParserSource(Source, ABC):
|
|
|
58
58
|
super().__init__()
|
|
59
59
|
self.config = config
|
|
60
60
|
self.metadata = metadata
|
|
61
|
+
self.service_name = self.config.serviceName
|
|
61
62
|
self.service_connection = self.config.serviceConnection.root.config
|
|
62
63
|
connection_type = self.service_connection.type.value
|
|
63
64
|
self.dialect = ConnectionTypeDialectMapper.dialect_of(connection_type)
|
|
@@ -16,6 +16,7 @@ from functools import partial
|
|
|
16
16
|
from typing import Optional
|
|
17
17
|
|
|
18
18
|
from sqlalchemy.engine import Engine
|
|
19
|
+
from sqlalchemy.sql import text
|
|
19
20
|
|
|
20
21
|
from metadata.generated.schema.entity.automations.workflow import (
|
|
21
22
|
Workflow as AutomationWorkflow,
|
|
@@ -41,6 +42,7 @@ from metadata.ingestion.connections.test_connections import (
|
|
|
41
42
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
42
43
|
from metadata.ingestion.source.connections import kill_active_connections
|
|
43
44
|
from metadata.ingestion.source.database.redshift.queries import (
|
|
45
|
+
REDSHIFT_GET_ALL_RELATIONS,
|
|
44
46
|
REDSHIFT_GET_DATABASE_NAMES,
|
|
45
47
|
REDSHIFT_TEST_GET_QUERIES,
|
|
46
48
|
REDSHIFT_TEST_PARTITION_DETAILS,
|
|
@@ -70,6 +72,11 @@ def test_connection(
|
|
|
70
72
|
Test connection. This can be executed either as part
|
|
71
73
|
of a metadata workflow or during an Automation Workflow
|
|
72
74
|
"""
|
|
75
|
+
table_and_view_query = text(
|
|
76
|
+
REDSHIFT_GET_ALL_RELATIONS.format(
|
|
77
|
+
schema_clause="", table_clause="", limit_clause="LIMIT 1"
|
|
78
|
+
)
|
|
79
|
+
)
|
|
73
80
|
|
|
74
81
|
def test_get_queries_permissions(engine_: Engine):
|
|
75
82
|
"""Check if we have the right permissions to list queries"""
|
|
@@ -83,8 +90,8 @@ def test_connection(
|
|
|
83
90
|
test_fn = {
|
|
84
91
|
"CheckAccess": partial(test_connection_engine_step, engine),
|
|
85
92
|
"GetSchemas": partial(execute_inspector_func, engine, "get_schema_names"),
|
|
86
|
-
"GetTables": partial(
|
|
87
|
-
"GetViews": partial(
|
|
93
|
+
"GetTables": partial(test_query, statement=table_and_view_query, engine=engine),
|
|
94
|
+
"GetViews": partial(test_query, statement=table_and_view_query, engine=engine),
|
|
88
95
|
"GetQueries": partial(test_get_queries_permissions, engine),
|
|
89
96
|
"GetDatabases": partial(
|
|
90
97
|
test_query, statement=REDSHIFT_GET_DATABASE_NAMES, engine=engine
|