openmetadata-ingestion 1.6.0.0rc1__py3-none-any.whl → 1.6.0.0rc2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of openmetadata-ingestion might be problematic. Click here for more details.
- metadata/cli/classify.py +52 -0
- metadata/cmd.py +9 -0
- metadata/data_quality/builders/{i_validator_builder.py → validator_builder.py} +40 -29
- metadata/data_quality/interface/pandas/pandas_test_suite_interface.py +25 -25
- metadata/data_quality/interface/sqlalchemy/sqa_test_suite_interface.py +23 -50
- metadata/data_quality/interface/test_suite_interface.py +45 -56
- metadata/data_quality/processor/test_case_runner.py +9 -9
- metadata/data_quality/runner/base_test_suite_source.py +52 -26
- metadata/data_quality/validations/base_test_handler.py +10 -5
- metadata/data_quality/validations/column/sqlalchemy/columnValueLengthsToBeBetween.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValueMaxToBeBetween.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValueMeanToBeBetween.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValueMedianToBeBetween.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValueMinToBeBetween.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValueStdDevToBeBetween.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValuesMissingCount.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValuesSumToBeBetween.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeAtExpectedLocation.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeBetween.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeInSet.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeNotInSet.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeNotNull.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeUnique.py +2 -8
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToMatchRegex.py +1 -1
- metadata/data_quality/validations/column/sqlalchemy/columnValuesToNotMatchRegex.py +1 -1
- metadata/data_quality/validations/runtime_param_setter/param_setter.py +2 -3
- metadata/data_quality/validations/runtime_param_setter/param_setter_factory.py +45 -17
- metadata/data_quality/validations/runtime_param_setter/table_diff_params_setter.py +21 -16
- metadata/data_quality/validations/table/sqlalchemy/tableDiff.py +21 -18
- metadata/data_quality/validations/table/sqlalchemy/tableRowInsertedCountToBeBetween.py +2 -2
- metadata/examples/workflows/bigquery_classifier.yaml +56 -0
- metadata/examples/workflows/bigquery_profiler.yaml +1 -2
- metadata/examples/workflows/db2_profiler.yaml +1 -2
- metadata/examples/workflows/dbtcloud.yaml +2 -1
- metadata/examples/workflows/{mstr.yaml → microstrategy.yaml} +3 -2
- metadata/examples/workflows/mongodb.yaml +4 -0
- metadata/examples/workflows/mysql_profiler.yaml +0 -1
- metadata/examples/workflows/redshift_classifier.yaml +38 -0
- metadata/examples/workflows/redshift_profiler.yaml +2 -3
- metadata/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 +1 -1
- metadata/generated/schema/api/analytics/__init__.py +1 -1
- metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
- metadata/generated/schema/api/automations/__init__.py +1 -1
- metadata/generated/schema/api/automations/createWorkflow.py +1 -1
- metadata/generated/schema/api/bulkAssets.py +1 -1
- metadata/generated/schema/api/classification/__init__.py +1 -1
- metadata/generated/schema/api/classification/createClassification.py +1 -1
- metadata/generated/schema/api/classification/createTag.py +1 -1
- metadata/generated/schema/api/classification/loadTags.py +1 -1
- metadata/generated/schema/api/createBot.py +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 +1 -1
- metadata/generated/schema/api/data/createMlModel.py +1 -1
- metadata/generated/schema/api/data/createPipeline.py +1 -1
- metadata/generated/schema/api/data/createQuery.py +1 -1
- metadata/generated/schema/api/data/createSearchIndex.py +8 -1
- metadata/generated/schema/api/data/createStoredProcedure.py +8 -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 +1 -1
- metadata/generated/schema/api/governance/createWorkflowDefinition.py +1 -1
- metadata/generated/schema/api/governance/createWorkflowInstanceState.py +1 -1
- metadata/generated/schema/api/lineage/__init__.py +1 -1
- metadata/generated/schema/api/lineage/addLineage.py +1 -1
- metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
- metadata/generated/schema/api/policies/__init__.py +1 -1
- metadata/generated/schema/api/policies/createPolicy.py +1 -1
- metadata/generated/schema/api/services/__init__.py +1 -1
- metadata/generated/schema/api/services/createApiService.py +1 -1
- metadata/generated/schema/api/services/createDashboardService.py +1 -1
- metadata/generated/schema/api/services/createDatabaseService.py +1 -1
- metadata/generated/schema/api/services/createMessagingService.py +1 -1
- metadata/generated/schema/api/services/createMetadataService.py +1 -1
- metadata/generated/schema/api/services/createMlModelService.py +1 -1
- metadata/generated/schema/api/services/createPipelineService.py +1 -1
- metadata/generated/schema/api/services/createSearchService.py +1 -1
- metadata/generated/schema/api/services/createStorageService.py +1 -1
- metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
- metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
- metadata/generated/schema/api/setOwner.py +1 -1
- metadata/generated/schema/api/teams/__init__.py +1 -1
- metadata/generated/schema/api/teams/createPersona.py +1 -1
- metadata/generated/schema/api/teams/createRole.py +1 -1
- metadata/generated/schema/api/teams/createTeam.py +1 -1
- metadata/generated/schema/api/teams/createUser.py +1 -1
- metadata/generated/schema/api/tests/__init__.py +1 -1
- metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
- metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
- metadata/generated/schema/api/tests/createTestCase.py +1 -1
- metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
- metadata/generated/schema/api/tests/createTestCaseResult.py +1 -1
- metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
- metadata/generated/schema/api/tests/createTestSuite.py +1 -1
- metadata/generated/schema/api/voteRequest.py +1 -1
- metadata/generated/schema/auth/__init__.py +1 -1
- metadata/generated/schema/auth/basicAuth.py +1 -1
- metadata/generated/schema/auth/basicLoginRequest.py +1 -1
- metadata/generated/schema/auth/changePasswordRequest.py +1 -1
- metadata/generated/schema/auth/createPersonalToken.py +1 -1
- metadata/generated/schema/auth/emailRequest.py +1 -1
- metadata/generated/schema/auth/emailVerificationToken.py +1 -1
- metadata/generated/schema/auth/generateToken.py +1 -1
- metadata/generated/schema/auth/jwtAuth.py +1 -1
- metadata/generated/schema/auth/loginRequest.py +1 -1
- metadata/generated/schema/auth/logoutRequest.py +1 -1
- metadata/generated/schema/auth/passwordResetRequest.py +1 -1
- metadata/generated/schema/auth/passwordResetToken.py +1 -1
- metadata/generated/schema/auth/personalAccessToken.py +1 -1
- metadata/generated/schema/auth/refreshToken.py +1 -1
- metadata/generated/schema/auth/registrationRequest.py +1 -1
- metadata/generated/schema/auth/revokePersonalToken.py +1 -1
- metadata/generated/schema/auth/revokeToken.py +1 -1
- metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
- metadata/generated/schema/auth/ssoAuth.py +1 -1
- metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
- metadata/generated/schema/configuration/__init__.py +1 -1
- metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
- metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
- metadata/generated/schema/configuration/authConfig.py +1 -1
- metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
- metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
- metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
- metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
- metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
- metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
- metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
- metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
- metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
- metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
- metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
- metadata/generated/schema/configuration/lineageSettings.py +1 -1
- metadata/generated/schema/configuration/loginConfiguration.py +1 -1
- metadata/generated/schema/configuration/logoConfiguration.py +1 -1
- metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
- metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
- metadata/generated/schema/configuration/searchSettings.py +1 -1
- metadata/generated/schema/configuration/slackAppConfiguration.py +1 -14
- metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
- metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
- metadata/generated/schema/configuration/themeConfiguration.py +1 -1
- metadata/generated/schema/configuration/uiThemePreference.py +1 -1
- metadata/generated/schema/dataInsight/__init__.py +1 -1
- metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
- metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
- metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -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 +1 -1
- metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
- metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
- metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
- metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
- metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
- metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
- metadata/generated/schema/dataInsight/type/__init__.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
- metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
- metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
- metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
- metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
- metadata/generated/schema/dataInsight/type/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 +2 -1
- metadata/generated/schema/entity/applications/appExtension.py +1 -1
- metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
- metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/applicationConfig.py +4 -2
- metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +22 -0
- metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
- metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
- metadata/generated/schema/entity/applications/jobStatus.py +1 -1
- metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
- metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
- metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
- metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
- metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
- metadata/generated/schema/entity/automations/__init__.py +1 -1
- metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
- metadata/generated/schema/entity/automations/workflow.py +1 -1
- metadata/generated/schema/entity/bot.py +1 -1
- metadata/generated/schema/entity/classification/__init__.py +1 -1
- metadata/generated/schema/entity/classification/classification.py +1 -1
- metadata/generated/schema/entity/classification/tag.py +1 -1
- metadata/generated/schema/entity/data/__init__.py +1 -1
- metadata/generated/schema/entity/data/apiCollection.py +1 -1
- metadata/generated/schema/entity/data/apiEndpoint.py +1 -1
- metadata/generated/schema/entity/data/chart.py +1 -1
- metadata/generated/schema/entity/data/container.py +1 -1
- metadata/generated/schema/entity/data/dashboard.py +1 -1
- metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
- metadata/generated/schema/entity/data/database.py +1 -1
- metadata/generated/schema/entity/data/databaseSchema.py +1 -1
- metadata/generated/schema/entity/data/glossary.py +1 -1
- metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
- metadata/generated/schema/entity/data/metric.py +1 -1
- metadata/generated/schema/entity/data/mlmodel.py +1 -1
- metadata/generated/schema/entity/data/pipeline.py +1 -1
- metadata/generated/schema/entity/data/query.py +1 -1
- metadata/generated/schema/entity/data/report.py +1 -1
- metadata/generated/schema/entity/data/searchIndex.py +13 -1
- metadata/generated/schema/entity/data/storedProcedure.py +13 -1
- metadata/generated/schema/entity/data/table.py +1 -1
- metadata/generated/schema/entity/data/topic.py +1 -1
- metadata/generated/schema/entity/docStore/__init__.py +1 -1
- metadata/generated/schema/entity/docStore/document.py +1 -1
- metadata/generated/schema/entity/domains/__init__.py +1 -1
- metadata/generated/schema/entity/domains/dataProduct.py +1 -1
- metadata/generated/schema/entity/domains/domain.py +1 -1
- metadata/generated/schema/entity/events/__init__.py +1 -1
- metadata/generated/schema/entity/events/webhook.py +1 -1
- metadata/generated/schema/entity/feed/__init__.py +1 -1
- metadata/generated/schema/entity/feed/assets.py +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 +1 -1
- metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
- metadata/generated/schema/entity/policies/filters.py +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 +1 -1
- metadata/generated/schema/entity/services/connections/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/api/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/api/restConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
- metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
- metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +67 -0
- metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
- metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/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 +1 -1
- metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/exasolConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +6 -2
- metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +6 -3
- metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -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 +1 -1
- metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +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 +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +17 -5
- metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +1 -1
- 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 +1 -1
- metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
- metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
- metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
- metadata/generated/schema/entity/services/dashboardService.py +4 -4
- metadata/generated/schema/entity/services/databaseService.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +2 -1
- metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
- metadata/generated/schema/entity/services/messagingService.py +1 -1
- metadata/generated/schema/entity/services/metadataService.py +1 -1
- metadata/generated/schema/entity/services/mlmodelService.py +1 -1
- metadata/generated/schema/entity/services/pipelineService.py +1 -1
- metadata/generated/schema/entity/services/searchService.py +1 -1
- metadata/generated/schema/entity/services/serviceType.py +1 -1
- metadata/generated/schema/entity/services/storageService.py +1 -1
- metadata/generated/schema/entity/teams/__init__.py +1 -1
- metadata/generated/schema/entity/teams/persona.py +1 -1
- metadata/generated/schema/entity/teams/role.py +1 -1
- metadata/generated/schema/entity/teams/team.py +1 -1
- metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
- metadata/generated/schema/entity/teams/user.py +1 -1
- metadata/generated/schema/entity/type.py +1 -1
- metadata/generated/schema/entity/utils/__init__.py +1 -1
- metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
- metadata/generated/schema/entity/utils/servicesCount.py +1 -1
- metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
- metadata/generated/schema/events/__init__.py +1 -1
- metadata/generated/schema/events/alertMetrics.py +1 -1
- metadata/generated/schema/events/api/__init__.py +1 -1
- metadata/generated/schema/events/api/createEventSubscription.py +1 -1
- metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +1 -1
- metadata/generated/schema/events/api/eventsRecord.py +1 -1
- metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
- metadata/generated/schema/events/api/typedEvent.py +1 -1
- metadata/generated/schema/events/emailAlertConfig.py +1 -1
- metadata/generated/schema/events/eventFilterRule.py +1 -1
- metadata/generated/schema/events/eventSubscription.py +1 -1
- metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
- metadata/generated/schema/events/failedEvent.py +1 -1
- metadata/generated/schema/events/failedEventResponse.py +1 -1
- metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
- metadata/generated/schema/events/statusContext.py +1 -1
- metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
- metadata/generated/schema/events/subscriptionStatus.py +1 -1
- metadata/generated/schema/events/testDestinationStatus.py +1 -1
- metadata/generated/schema/governance/workflows/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/edge.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodeSubType.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodeType.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +2 -2
- metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
- metadata/generated/schema/governance/workflows/workflowInstance.py +8 -1
- metadata/generated/schema/governance/workflows/workflowInstanceState.py +8 -1
- metadata/generated/schema/metadataIngestion/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/application.py +1 -1
- metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +127 -0
- metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -25
- metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +9 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +9 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
- metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +9 -1
- metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
- metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/workflow.py +3 -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 +1 -1
- metadata/generated/schema/system/__init__.py +1 -1
- metadata/generated/schema/system/entityError.py +1 -1
- metadata/generated/schema/system/eventPublisherJob.py +2 -1
- metadata/generated/schema/system/indexingError.py +1 -1
- metadata/generated/schema/system/limitsResponse.py +1 -1
- metadata/generated/schema/system/ui/__init__.py +1 -1
- metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
- metadata/generated/schema/system/ui/page.py +1 -1
- metadata/generated/schema/system/validationResponse.py +1 -1
- metadata/generated/schema/tests/__init__.py +1 -1
- metadata/generated/schema/tests/assigned.py +1 -1
- metadata/generated/schema/tests/basic.py +1 -1
- 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 +1 -1
- metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
- metadata/generated/schema/tests/testDefinition.py +1 -1
- metadata/generated/schema/tests/testSuite.py +1 -1
- metadata/generated/schema/type/__init__.py +1 -1
- metadata/generated/schema/type/apiSchema.py +1 -1
- metadata/generated/schema/type/assetCertification.py +1 -1
- metadata/generated/schema/type/auditLog.py +1 -1
- metadata/generated/schema/type/basic.py +1 -1
- metadata/generated/schema/type/bulkOperationResult.py +1 -1
- metadata/generated/schema/type/changeEvent.py +1 -1
- metadata/generated/schema/type/changeEventType.py +1 -1
- metadata/generated/schema/type/collectionDescriptor.py +1 -1
- metadata/generated/schema/type/csvDocumentation.py +1 -1
- metadata/generated/schema/type/csvErrorType.py +1 -1
- metadata/generated/schema/type/csvFile.py +1 -1
- metadata/generated/schema/type/csvImportResult.py +1 -1
- metadata/generated/schema/type/customProperties/__init__.py +1 -1
- metadata/generated/schema/type/customProperties/complexTypes.py +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 +1 -1
- metadata/generated/schema/type/dailyCount.py +1 -1
- metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
- metadata/generated/schema/type/entityHierarchy.py +1 -1
- metadata/generated/schema/type/entityHistory.py +1 -1
- metadata/generated/schema/type/entityLineage.py +1 -1
- metadata/generated/schema/type/entityReference.py +1 -1
- metadata/generated/schema/type/entityReferenceList.py +1 -1
- metadata/generated/schema/type/entityRelationship.py +1 -1
- metadata/generated/schema/type/entityUsage.py +1 -1
- metadata/generated/schema/type/filterPattern.py +1 -1
- metadata/generated/schema/type/function.py +1 -1
- metadata/generated/schema/type/include.py +1 -1
- metadata/generated/schema/type/jdbcConnection.py +1 -1
- metadata/generated/schema/type/lifeCycle.py +1 -1
- metadata/generated/schema/type/paging.py +1 -1
- metadata/generated/schema/type/profile.py +1 -1
- metadata/generated/schema/type/queryParserData.py +1 -1
- metadata/generated/schema/type/reaction.py +1 -1
- metadata/generated/schema/type/schedule.py +1 -1
- metadata/generated/schema/type/schema.py +1 -1
- metadata/generated/schema/type/tableQuery.py +1 -1
- metadata/generated/schema/type/tableUsageCount.py +1 -1
- metadata/generated/schema/type/tagLabel.py +1 -1
- metadata/generated/schema/type/usageDetails.py +1 -1
- metadata/generated/schema/type/usageRequest.py +1 -1
- metadata/generated/schema/type/votes.py +1 -1
- metadata/ingestion/api/models.py +9 -5
- metadata/ingestion/models/patch_request.py +1 -0
- metadata/ingestion/ometa/client.py +13 -8
- metadata/ingestion/ometa/models.py +1 -0
- metadata/ingestion/ometa/ometa_api.py +6 -3
- metadata/ingestion/sink/metadata_rest.py +23 -18
- metadata/ingestion/source/dashboard/microstrategy/client.py +252 -0
- metadata/ingestion/source/dashboard/{mstr → microstrategy}/connection.py +7 -10
- metadata/ingestion/source/dashboard/{mstr → microstrategy}/metadata.py +74 -51
- metadata/ingestion/source/dashboard/{mstr → microstrategy}/models.py +9 -3
- metadata/ingestion/source/dashboard/microstrategy/service_spec.py +6 -0
- metadata/ingestion/source/dashboard/powerbi/client.py +1 -2
- metadata/ingestion/source/dashboard/superset/db_source.py +1 -1
- metadata/ingestion/source/database/athena/metadata.py +8 -0
- metadata/ingestion/source/database/azuresql/service_spec.py +2 -0
- metadata/ingestion/source/database/bigquery/profiler/profiler.py +1 -1
- metadata/ingestion/source/database/bigquery/service_spec.py +2 -0
- metadata/ingestion/source/database/common_nosql_source.py +7 -0
- metadata/ingestion/source/database/databricks/metadata.py +1 -3
- metadata/ingestion/source/database/databricks/service_spec.py +4 -0
- metadata/ingestion/source/database/datalake/clients/azure_blob.py +0 -3
- metadata/ingestion/source/database/datalake/clients/base.py +10 -1
- metadata/ingestion/source/database/datalake/clients/gcs.py +4 -2
- metadata/ingestion/source/database/datalake/clients/s3.py +0 -3
- metadata/ingestion/source/database/datalake/service_spec.py +8 -1
- metadata/ingestion/source/database/dbt/constants.py +4 -0
- metadata/ingestion/source/database/dbt/dbt_config.py +19 -1
- metadata/ingestion/source/database/dbt/dbt_service.py +8 -1
- metadata/ingestion/source/database/dbt/dbt_utils.py +29 -0
- metadata/ingestion/source/database/dbt/metadata.py +70 -1
- metadata/ingestion/source/database/dbt/models.py +2 -0
- metadata/ingestion/source/database/dynamodb/service_spec.py +4 -1
- metadata/ingestion/source/database/mongodb/service_spec.py +4 -1
- metadata/ingestion/source/database/mysql/connection.py +5 -0
- metadata/ingestion/source/database/mysql/lineage.py +12 -30
- metadata/ingestion/source/database/mysql/queries.py +43 -0
- metadata/ingestion/source/database/mysql/query_parser.py +46 -0
- metadata/ingestion/source/database/mysql/service_spec.py +7 -1
- metadata/{data_quality/builders/pandas_validator_builder.py → ingestion/source/database/mysql/usage.py} +9 -14
- metadata/ingestion/source/database/sample_data.py +4 -12
- metadata/ingestion/source/database/snowflake/connection.py +1 -1
- metadata/ingestion/source/database/snowflake/service_spec.py +6 -0
- metadata/ingestion/source/database/trino/service_spec.py +2 -0
- metadata/ingestion/source/database/unitycatalog/service_spec.py +4 -0
- metadata/ingestion/source/pipeline/airflow/connection.py +45 -2
- metadata/ingestion/source/pipeline/airflow/metadata.py +35 -25
- metadata/ingestion/source/pipeline/dbtcloud/client.py +67 -28
- metadata/ingestion/source/pipeline/dbtcloud/connection.py +1 -3
- metadata/ingestion/source/pipeline/dbtcloud/models.py +1 -1
- metadata/ingestion/source/pipeline/kafkaconnect/client.py +1 -1
- metadata/ingestion/source/search/elasticsearch/metadata.py +53 -0
- metadata/ingestion/source/search/search_service.py +44 -1
- metadata/mixins/pandas/pandas_mixin.py +2 -31
- metadata/mixins/sqalchemy/sqa_mixin.py +16 -16
- metadata/pii/processor.py +10 -9
- metadata/profiler/api/models.py +3 -79
- metadata/profiler/config.py +39 -0
- metadata/profiler/interface/nosql/profiler_interface.py +1 -26
- metadata/profiler/interface/pandas/profiler_interface.py +37 -77
- metadata/profiler/interface/profiler_interface.py +10 -282
- metadata/profiler/interface/sqlalchemy/bigquery/profiler_interface.py +0 -19
- metadata/profiler/interface/sqlalchemy/databricks/profiler_interface.py +2 -17
- metadata/profiler/interface/sqlalchemy/db2/profiler_interface.py +1 -1
- metadata/profiler/interface/sqlalchemy/mariadb/profiler_interface.py +2 -2
- metadata/profiler/interface/sqlalchemy/profiler_interface.py +46 -109
- metadata/profiler/interface/sqlalchemy/single_store/profiler_interface.py +2 -2
- metadata/profiler/interface/sqlalchemy/snowflake/profiler_interface.py +1 -1
- metadata/profiler/interface/sqlalchemy/stored_statistics_profiler.py +6 -8
- metadata/profiler/interface/sqlalchemy/trino/profiler_interface.py +2 -2
- metadata/profiler/orm/converter/base.py +21 -12
- metadata/profiler/orm/functions/table_metric_computer.py +5 -4
- metadata/profiler/processor/core.py +5 -58
- metadata/profiler/processor/handle_partition.py +0 -48
- metadata/profiler/processor/runner.py +111 -35
- metadata/profiler/processor/sample_data_handler.py +7 -4
- metadata/profiler/source/database/base/profiler_source.py +57 -138
- metadata/profiler/source/database/bigquery/profiler_source.py +3 -3
- metadata/profiler/source/database/databricks/profiler_source.py +2 -3
- metadata/profiler/source/fetcher/config.py +44 -0
- metadata/profiler/source/fetcher/fetcher_strategy.py +2 -4
- metadata/sampler/config.py +237 -0
- metadata/sampler/models.py +106 -0
- metadata/{profiler/processor/sampler → sampler}/nosql/sampler.py +44 -12
- metadata/sampler/pandas/sampler.py +239 -0
- metadata/{utils → sampler}/partition.py +66 -51
- metadata/sampler/processor.py +158 -0
- metadata/sampler/sampler_interface.py +251 -0
- metadata/{profiler/processor/sampler → sampler}/sqlalchemy/azuresql/sampler.py +1 -1
- metadata/{profiler/processor/sampler → sampler}/sqlalchemy/bigquery/sampler.py +55 -26
- metadata/sampler/sqlalchemy/postgres/sampler.py +91 -0
- metadata/{profiler/processor/sampler → sampler}/sqlalchemy/sampler.py +90 -98
- metadata/sampler/sqlalchemy/snowflake/sampler.py +95 -0
- metadata/{profiler/processor/sampler → sampler}/sqlalchemy/trino/sampler.py +5 -3
- metadata/utils/constants.py +63 -0
- metadata/utils/helpers.py +1 -2
- metadata/utils/logger.py +9 -0
- metadata/utils/profiler_utils.py +42 -0
- metadata/utils/service_spec/default.py +6 -0
- metadata/utils/service_spec/service_spec.py +47 -0
- metadata/utils/sqlalchemy_utils.py +1 -1
- metadata/utils/ssl_manager.py +39 -1
- metadata/workflow/classification.py +53 -0
- metadata/workflow/profiler.py +1 -17
- {openmetadata_ingestion-1.6.0.0rc1.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/METADATA +366 -366
- {openmetadata_ingestion-1.6.0.0rc1.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/RECORD +781 -771
- metadata/data_quality/builders/sqa_validator_builder.py +0 -25
- metadata/data_quality/interface/test_suite_interface_factory.py +0 -158
- metadata/data_quality/runner/test_suite_source_factory.py +0 -38
- metadata/generated/schema/entity/services/connections/dashboard/mstrConnection.py +0 -54
- metadata/ingestion/source/dashboard/mstr/client.py +0 -209
- metadata/ingestion/source/dashboard/mstr/service_spec.py +0 -4
- metadata/profiler/processor/sampler/pandas/sampler.py +0 -170
- metadata/profiler/processor/sampler/sampler_factory.py +0 -100
- metadata/profiler/processor/sampler/sampler_interface.py +0 -74
- metadata/profiler/processor/sampler/sqlalchemy/snowflake/sampler.py +0 -83
- /metadata/ingestion/source/dashboard/{mstr → microstrategy}/__init__.py +0 -0
- {openmetadata_ingestion-1.6.0.0rc1.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/LICENSE +0 -0
- {openmetadata_ingestion-1.6.0.0rc1.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/WHEEL +0 -0
- {openmetadata_ingestion-1.6.0.0rc1.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/entry_points.txt +0 -0
- {openmetadata_ingestion-1.6.0.0rc1.dist-info → openmetadata_ingestion-1.6.0.0rc2.dist-info}/top_level.txt +0 -0
|
@@ -1,25 +0,0 @@
|
|
|
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
|
-
"""
|
|
13
|
-
Builder defining the structure of builders for validators for SQA sources
|
|
14
|
-
"""
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
from metadata.data_quality.builders.i_validator_builder import IValidatorBuilder
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class SQAValidatorBuilder(IValidatorBuilder):
|
|
21
|
-
"""Builder for SQA validators"""
|
|
22
|
-
|
|
23
|
-
def _get_source_type(self) -> str:
|
|
24
|
-
"""Return the test case"""
|
|
25
|
-
return "sqlalchemy"
|
|
@@ -1,158 +0,0 @@
|
|
|
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
|
-
# pylint: disable=import-outside-toplevel
|
|
12
|
-
"""
|
|
13
|
-
Interface factory
|
|
14
|
-
"""
|
|
15
|
-
import traceback
|
|
16
|
-
from logging import Logger
|
|
17
|
-
from typing import Callable, Dict, Type
|
|
18
|
-
|
|
19
|
-
from metadata.data_quality.interface.test_suite_interface import TestSuiteInterface
|
|
20
|
-
from metadata.generated.schema.entity.data.table import Table
|
|
21
|
-
from metadata.generated.schema.entity.services.connections.database.databricksConnection import (
|
|
22
|
-
DatabricksConnection,
|
|
23
|
-
)
|
|
24
|
-
from metadata.generated.schema.entity.services.connections.database.datalakeConnection import (
|
|
25
|
-
DatalakeConnection,
|
|
26
|
-
)
|
|
27
|
-
from metadata.generated.schema.entity.services.connections.database.snowflakeConnection import (
|
|
28
|
-
SnowflakeConnection,
|
|
29
|
-
)
|
|
30
|
-
from metadata.generated.schema.entity.services.connections.database.unityCatalogConnection import (
|
|
31
|
-
UnityCatalogConnection,
|
|
32
|
-
)
|
|
33
|
-
from metadata.generated.schema.entity.services.databaseService import DatabaseConnection
|
|
34
|
-
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
35
|
-
from metadata.utils.logger import test_suite_logger
|
|
36
|
-
|
|
37
|
-
logger: Logger = test_suite_logger()
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
class TestSuiteInterfaceFactory:
|
|
41
|
-
"""Factory class for the data quality interface"""
|
|
42
|
-
|
|
43
|
-
def __init__(self):
|
|
44
|
-
"""Initialize the interface factory"""
|
|
45
|
-
self._interface_type: Dict[str, Callable[[], Type[TestSuiteInterface]]] = {
|
|
46
|
-
"base": self.sqa,
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
def register(self, interface_type: str, fn: Callable[[], Type[TestSuiteInterface]]):
|
|
50
|
-
"""Register the interface
|
|
51
|
-
|
|
52
|
-
Args:
|
|
53
|
-
interface_type (str): type of the interface
|
|
54
|
-
interface (callable): a class that implements the TestSuiteInterface
|
|
55
|
-
"""
|
|
56
|
-
self._interface_type[interface_type] = fn
|
|
57
|
-
|
|
58
|
-
def register_many(self, interface_dict):
|
|
59
|
-
"""
|
|
60
|
-
Registers multiple profiler interfaces at once.
|
|
61
|
-
|
|
62
|
-
Args:
|
|
63
|
-
interface_dict: A dictionary mapping connection class names (strings) to their
|
|
64
|
-
corresponding profiler interface classes.
|
|
65
|
-
"""
|
|
66
|
-
for interface_type, interface_fn in interface_dict.items():
|
|
67
|
-
self.register(interface_type, interface_fn)
|
|
68
|
-
|
|
69
|
-
def create(
|
|
70
|
-
self,
|
|
71
|
-
service_connection_config: DatabaseConnection,
|
|
72
|
-
ometa_client: OpenMetadata,
|
|
73
|
-
table_entity: Table,
|
|
74
|
-
*args,
|
|
75
|
-
**kwargs,
|
|
76
|
-
) -> TestSuiteInterface:
|
|
77
|
-
"""Create the interface
|
|
78
|
-
|
|
79
|
-
Args:
|
|
80
|
-
service_connection_config (DatabaseService): a database service object
|
|
81
|
-
|
|
82
|
-
Raises:
|
|
83
|
-
AttributeError: if no connection is found in the database service object
|
|
84
|
-
|
|
85
|
-
Returns:
|
|
86
|
-
TestSuiteInterface:
|
|
87
|
-
"""
|
|
88
|
-
try:
|
|
89
|
-
connection_type = service_connection_config.__class__.__name__
|
|
90
|
-
except AttributeError as err:
|
|
91
|
-
logger.debug(traceback.format_exc())
|
|
92
|
-
raise AttributeError(f"Could not instantiate interface class: {err}")
|
|
93
|
-
interface_fn = self._interface_type.get(connection_type)
|
|
94
|
-
|
|
95
|
-
if not interface_fn:
|
|
96
|
-
interface_fn = self._interface_type["base"]
|
|
97
|
-
|
|
98
|
-
interface_class = interface_fn()
|
|
99
|
-
return interface_class(
|
|
100
|
-
service_connection_config, ometa_client, table_entity, *args, **kwargs
|
|
101
|
-
)
|
|
102
|
-
|
|
103
|
-
@staticmethod
|
|
104
|
-
def sqa() -> Type[TestSuiteInterface]:
|
|
105
|
-
"""Lazy load the SQATestSuiteInterface"""
|
|
106
|
-
from metadata.data_quality.interface.sqlalchemy.sqa_test_suite_interface import (
|
|
107
|
-
SQATestSuiteInterface,
|
|
108
|
-
)
|
|
109
|
-
|
|
110
|
-
return SQATestSuiteInterface
|
|
111
|
-
|
|
112
|
-
@staticmethod
|
|
113
|
-
def pandas() -> Type[TestSuiteInterface]:
|
|
114
|
-
"""Lazy load the PandasTestSuiteInterface"""
|
|
115
|
-
from metadata.data_quality.interface.pandas.pandas_test_suite_interface import (
|
|
116
|
-
PandasTestSuiteInterface,
|
|
117
|
-
)
|
|
118
|
-
|
|
119
|
-
return PandasTestSuiteInterface
|
|
120
|
-
|
|
121
|
-
@staticmethod
|
|
122
|
-
def snowflake() -> Type[TestSuiteInterface]:
|
|
123
|
-
"""Lazy load the SnowflakeTestSuiteInterface"""
|
|
124
|
-
from metadata.data_quality.interface.sqlalchemy.snowflake.test_suite_interface import (
|
|
125
|
-
SnowflakeTestSuiteInterface,
|
|
126
|
-
)
|
|
127
|
-
|
|
128
|
-
return SnowflakeTestSuiteInterface
|
|
129
|
-
|
|
130
|
-
@staticmethod
|
|
131
|
-
def unity_catalog() -> Type[TestSuiteInterface]:
|
|
132
|
-
"""Lazy load the UnityCatalogTestSuiteInterface"""
|
|
133
|
-
from metadata.data_quality.interface.sqlalchemy.unity_catalog.test_suite_interface import (
|
|
134
|
-
UnityCatalogTestSuiteInterface,
|
|
135
|
-
)
|
|
136
|
-
|
|
137
|
-
return UnityCatalogTestSuiteInterface
|
|
138
|
-
|
|
139
|
-
@staticmethod
|
|
140
|
-
def databricks() -> Type[TestSuiteInterface]:
|
|
141
|
-
"""Lazy load the DatabricksTestSuiteInterface"""
|
|
142
|
-
from metadata.data_quality.interface.sqlalchemy.databricks.test_suite_interface import (
|
|
143
|
-
DatabricksTestSuiteInterface,
|
|
144
|
-
)
|
|
145
|
-
|
|
146
|
-
return DatabricksTestSuiteInterface
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
test_suite_interface = {
|
|
150
|
-
DatabaseConnection.__name__: TestSuiteInterfaceFactory.sqa,
|
|
151
|
-
DatalakeConnection.__name__: TestSuiteInterfaceFactory.pandas,
|
|
152
|
-
SnowflakeConnection.__name__: TestSuiteInterfaceFactory.snowflake,
|
|
153
|
-
UnityCatalogConnection.__name__: TestSuiteInterfaceFactory.unity_catalog,
|
|
154
|
-
DatabricksConnection.__name__: TestSuiteInterfaceFactory.databricks,
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
test_suite_interface_factory = TestSuiteInterfaceFactory()
|
|
158
|
-
test_suite_interface_factory.register_many(test_suite_interface)
|
|
@@ -1,38 +0,0 @@
|
|
|
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
|
-
"""
|
|
13
|
-
Factory class for creating test suite source objects
|
|
14
|
-
"""
|
|
15
|
-
|
|
16
|
-
from metadata.data_quality.runner.base_test_suite_source import BaseTestSuiteRunner
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class TestSuiteRunnerFactory:
|
|
20
|
-
"""Creational factory for test suite source objects"""
|
|
21
|
-
|
|
22
|
-
def __init__(self):
|
|
23
|
-
self._source_type = {"base": BaseTestSuiteRunner}
|
|
24
|
-
|
|
25
|
-
def register_source(self, source_type: str, source_class):
|
|
26
|
-
"""Register a new source type"""
|
|
27
|
-
self._source_type[source_type] = source_class
|
|
28
|
-
|
|
29
|
-
def create(self, source_type: str, *args, **kwargs) -> BaseTestSuiteRunner:
|
|
30
|
-
"""Create source object based on source type"""
|
|
31
|
-
source_class = self._source_type.get(source_type)
|
|
32
|
-
if not source_class:
|
|
33
|
-
source_class = self._source_type["base"]
|
|
34
|
-
return source_class(*args, **kwargs)
|
|
35
|
-
return source_class(*args, **kwargs)
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
test_suite_source_factory = TestSuiteRunnerFactory()
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
# generated by datamodel-codegen:
|
|
2
|
-
# filename: entity/services/connections/dashboard/mstrConnection.json
|
|
3
|
-
# timestamp: 2024-11-20T14:26:20+00:00
|
|
4
|
-
|
|
5
|
-
from __future__ import annotations
|
|
6
|
-
|
|
7
|
-
from enum import Enum
|
|
8
|
-
from typing import Optional
|
|
9
|
-
|
|
10
|
-
from pydantic import AnyUrl, ConfigDict, Field
|
|
11
|
-
from typing_extensions import Annotated
|
|
12
|
-
|
|
13
|
-
from metadata.ingestion.models.custom_pydantic import BaseModel, CustomSecretStr
|
|
14
|
-
|
|
15
|
-
from .. import connectionBasicType
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class MstrType(Enum):
|
|
19
|
-
Mstr = 'Mstr'
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
class MstrConnection(BaseModel):
|
|
23
|
-
model_config = ConfigDict(
|
|
24
|
-
extra='forbid',
|
|
25
|
-
)
|
|
26
|
-
type: Annotated[
|
|
27
|
-
Optional[MstrType],
|
|
28
|
-
Field(MstrType.Mstr, description='Service Type', title='Service Type'),
|
|
29
|
-
]
|
|
30
|
-
username: Annotated[
|
|
31
|
-
str,
|
|
32
|
-
Field(
|
|
33
|
-
description='Username to connect to MSTR. This user should have privileges to read all the metadata in MSTR.',
|
|
34
|
-
title='Username',
|
|
35
|
-
),
|
|
36
|
-
]
|
|
37
|
-
password: Annotated[
|
|
38
|
-
Optional[CustomSecretStr],
|
|
39
|
-
Field(None, description='Password to connect to MSTR.', title='Password'),
|
|
40
|
-
]
|
|
41
|
-
hostPort: Annotated[
|
|
42
|
-
AnyUrl,
|
|
43
|
-
Field(
|
|
44
|
-
description='Host and Port of the Metabase instance.', title='Host and Port'
|
|
45
|
-
),
|
|
46
|
-
]
|
|
47
|
-
projectName: Annotated[
|
|
48
|
-
Optional[str],
|
|
49
|
-
Field(None, description='MSTR Project Name', title='Project Name'),
|
|
50
|
-
]
|
|
51
|
-
supportsMetadataExtraction: Annotated[
|
|
52
|
-
Optional[connectionBasicType.SupportsMetadataExtraction],
|
|
53
|
-
Field(None, title='Supports Metadata Extraction'),
|
|
54
|
-
]
|
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
# Copyright 2023 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
|
-
REST Auth & Client for Mstr
|
|
13
|
-
"""
|
|
14
|
-
import traceback
|
|
15
|
-
from typing import List, Optional
|
|
16
|
-
|
|
17
|
-
import requests
|
|
18
|
-
from mstr.requests import MSTRRESTSession
|
|
19
|
-
|
|
20
|
-
from metadata.generated.schema.entity.services.connections.dashboard.mstrConnection import (
|
|
21
|
-
MstrConnection,
|
|
22
|
-
)
|
|
23
|
-
from metadata.ingestion.connections.test_connections import SourceConnectionException
|
|
24
|
-
from metadata.ingestion.source.dashboard.mstr.models import (
|
|
25
|
-
MstrDashboard,
|
|
26
|
-
MstrDashboardDetails,
|
|
27
|
-
MstrDashboardList,
|
|
28
|
-
MstrProject,
|
|
29
|
-
MstrProjectList,
|
|
30
|
-
MstrSearchResult,
|
|
31
|
-
MstrSearchResultList,
|
|
32
|
-
)
|
|
33
|
-
from metadata.utils.helpers import clean_uri
|
|
34
|
-
from metadata.utils.logger import ingestion_logger
|
|
35
|
-
|
|
36
|
-
logger = ingestion_logger()
|
|
37
|
-
|
|
38
|
-
API_VERSION = "MicroStrategyLibrary/api"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
class MSTRClient:
|
|
42
|
-
"""
|
|
43
|
-
Client Handling API communication with Metabase
|
|
44
|
-
"""
|
|
45
|
-
|
|
46
|
-
def _get_base_url(self, path=None):
|
|
47
|
-
if not path:
|
|
48
|
-
return f"{clean_uri(self.config.hostPort)}/{API_VERSION}/"
|
|
49
|
-
return f"{clean_uri(self.config.hostPort)}/{API_VERSION}/{path}"
|
|
50
|
-
|
|
51
|
-
def _get_mstr_session(self) -> MSTRRESTSession:
|
|
52
|
-
try:
|
|
53
|
-
session = MSTRRESTSession(base_url=self._get_base_url())
|
|
54
|
-
session.login(
|
|
55
|
-
username=self.config.username,
|
|
56
|
-
password=self.config.password.get_secret_value(),
|
|
57
|
-
)
|
|
58
|
-
return session
|
|
59
|
-
|
|
60
|
-
except KeyError as exe:
|
|
61
|
-
msg = "Failed to fetch mstr session, please validate credentials"
|
|
62
|
-
raise SourceConnectionException(msg) from exe
|
|
63
|
-
|
|
64
|
-
except Exception as exc:
|
|
65
|
-
msg = f"Unknown error in connection: {exc}."
|
|
66
|
-
raise SourceConnectionException(msg) from exc
|
|
67
|
-
|
|
68
|
-
def __init__(
|
|
69
|
-
self,
|
|
70
|
-
config: MstrConnection,
|
|
71
|
-
):
|
|
72
|
-
self.config = config
|
|
73
|
-
self.session = self._get_mstr_session()
|
|
74
|
-
|
|
75
|
-
def is_project_name(self) -> bool:
|
|
76
|
-
return bool(self.config.projectName)
|
|
77
|
-
|
|
78
|
-
def get_projects_list(self) -> List[MstrProject]:
|
|
79
|
-
"""
|
|
80
|
-
Get List of all projects
|
|
81
|
-
"""
|
|
82
|
-
try:
|
|
83
|
-
resp_projects = self.session.get(
|
|
84
|
-
url=self._get_base_url("projects"), params={"include_auth": True}
|
|
85
|
-
)
|
|
86
|
-
|
|
87
|
-
if not resp_projects.ok:
|
|
88
|
-
raise requests.ConnectionError()
|
|
89
|
-
|
|
90
|
-
project_list = MstrProjectList(projects=resp_projects.json())
|
|
91
|
-
return project_list.projects
|
|
92
|
-
|
|
93
|
-
except Exception as exc:
|
|
94
|
-
logger.debug(traceback.format_exc())
|
|
95
|
-
logger.warning(f"Failed to fetch the project list due to [{exc}]")
|
|
96
|
-
|
|
97
|
-
return []
|
|
98
|
-
|
|
99
|
-
def get_project_by_name(self) -> Optional[MstrProject]:
|
|
100
|
-
"""
|
|
101
|
-
Get Project By Name
|
|
102
|
-
"""
|
|
103
|
-
try:
|
|
104
|
-
resp_projects = self.session.get(
|
|
105
|
-
url=self._get_base_url(f"projects/{self.config.projectName}"),
|
|
106
|
-
params={"include_auth": True},
|
|
107
|
-
)
|
|
108
|
-
|
|
109
|
-
if not resp_projects.ok:
|
|
110
|
-
raise requests.ConnectionError()
|
|
111
|
-
|
|
112
|
-
project = MstrProject(**resp_projects.json())
|
|
113
|
-
return project
|
|
114
|
-
|
|
115
|
-
except Exception:
|
|
116
|
-
logger.debug(traceback.format_exc())
|
|
117
|
-
logger.warning("Failed to fetch the project list")
|
|
118
|
-
|
|
119
|
-
return None
|
|
120
|
-
|
|
121
|
-
def get_search_results_list(
|
|
122
|
-
self, project_id, object_type
|
|
123
|
-
) -> List[MstrSearchResult]:
|
|
124
|
-
"""
|
|
125
|
-
Get Search Results
|
|
126
|
-
"""
|
|
127
|
-
try:
|
|
128
|
-
resp_results = self.session.get(
|
|
129
|
-
url=self._get_base_url("searches/results"),
|
|
130
|
-
params={
|
|
131
|
-
"include_auth": True,
|
|
132
|
-
"project_id": project_id,
|
|
133
|
-
"type": object_type,
|
|
134
|
-
"getAncestors": False,
|
|
135
|
-
"offset": 0,
|
|
136
|
-
"limit": -1,
|
|
137
|
-
"certifiedStatus": "ALL",
|
|
138
|
-
"isCrossCluster": False,
|
|
139
|
-
"result.hidden": False,
|
|
140
|
-
},
|
|
141
|
-
)
|
|
142
|
-
|
|
143
|
-
if not resp_results.ok:
|
|
144
|
-
raise requests.ConnectionError()
|
|
145
|
-
|
|
146
|
-
results = []
|
|
147
|
-
for resp_result in resp_results.json()["result"]:
|
|
148
|
-
results.append(resp_result)
|
|
149
|
-
|
|
150
|
-
results_list = MstrSearchResultList(results=results)
|
|
151
|
-
return results_list.results
|
|
152
|
-
|
|
153
|
-
except Exception:
|
|
154
|
-
logger.debug(traceback.format_exc())
|
|
155
|
-
logger.warning("Failed to fetch the Search Result list")
|
|
156
|
-
|
|
157
|
-
return []
|
|
158
|
-
|
|
159
|
-
def get_dashboards_list(self, project_id, project_name) -> List[MstrDashboard]:
|
|
160
|
-
"""
|
|
161
|
-
Get Dashboard
|
|
162
|
-
"""
|
|
163
|
-
try:
|
|
164
|
-
results = self.get_search_results_list(
|
|
165
|
-
project_id=project_id, object_type=55
|
|
166
|
-
)
|
|
167
|
-
|
|
168
|
-
dashboards = []
|
|
169
|
-
for result in results:
|
|
170
|
-
dashboards.append(
|
|
171
|
-
MstrDashboard(projectName=project_name, **result.model_dump())
|
|
172
|
-
)
|
|
173
|
-
|
|
174
|
-
dashboards_list = MstrDashboardList(dashboards=dashboards)
|
|
175
|
-
return dashboards_list.dashboards
|
|
176
|
-
|
|
177
|
-
except Exception:
|
|
178
|
-
logger.debug(traceback.format_exc())
|
|
179
|
-
logger.warning("Failed to fetch the dashboard list")
|
|
180
|
-
|
|
181
|
-
return []
|
|
182
|
-
|
|
183
|
-
def get_dashboard_details(
|
|
184
|
-
self, project_id, project_name, dashboard_id
|
|
185
|
-
) -> Optional[MstrDashboardDetails]:
|
|
186
|
-
"""
|
|
187
|
-
Get Dashboard Details
|
|
188
|
-
"""
|
|
189
|
-
try:
|
|
190
|
-
resp_dashboard = self.session.get(
|
|
191
|
-
url=self._get_base_url(f"v2/dossiers/{dashboard_id}/definition"),
|
|
192
|
-
params={
|
|
193
|
-
"include_auth": True,
|
|
194
|
-
},
|
|
195
|
-
headers={"X-MSTR-ProjectID": project_id},
|
|
196
|
-
)
|
|
197
|
-
|
|
198
|
-
if not resp_dashboard.ok:
|
|
199
|
-
raise requests.ConnectionError()
|
|
200
|
-
|
|
201
|
-
return MstrDashboardDetails(
|
|
202
|
-
projectId=project_id, projectName=project_name, **resp_dashboard.json()
|
|
203
|
-
)
|
|
204
|
-
|
|
205
|
-
except Exception:
|
|
206
|
-
logger.debug(traceback.format_exc())
|
|
207
|
-
logger.warning(f"Failed to fetch the dashboard with id: {dashboard_id}")
|
|
208
|
-
|
|
209
|
-
return None
|
|
@@ -1,170 +0,0 @@
|
|
|
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
|
-
Helper module to handle data sampling
|
|
13
|
-
for the profiler
|
|
14
|
-
"""
|
|
15
|
-
import math
|
|
16
|
-
import random
|
|
17
|
-
from typing import List, Optional, cast
|
|
18
|
-
|
|
19
|
-
from metadata.data_quality.validations.table.pandas.tableRowInsertedCountToBeBetween import (
|
|
20
|
-
TableRowInsertedCountToBeBetweenValidator,
|
|
21
|
-
)
|
|
22
|
-
from metadata.generated.schema.entity.data.table import (
|
|
23
|
-
PartitionIntervalTypes,
|
|
24
|
-
PartitionProfilerConfig,
|
|
25
|
-
ProfileSampleType,
|
|
26
|
-
TableData,
|
|
27
|
-
)
|
|
28
|
-
from metadata.profiler.processor.sampler.sampler_interface import SamplerInterface
|
|
29
|
-
from metadata.utils.sqa_like_column import SQALikeColumn
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
class DatalakeSampler(SamplerInterface):
|
|
33
|
-
"""
|
|
34
|
-
Generates a sample of the data to not
|
|
35
|
-
run the query in the whole table.
|
|
36
|
-
"""
|
|
37
|
-
|
|
38
|
-
def _partitioned_table(self):
|
|
39
|
-
"""Get partitioned table"""
|
|
40
|
-
self._partition_details = cast(PartitionProfilerConfig, self._partition_details)
|
|
41
|
-
partition_field = self._partition_details.partitionColumnName
|
|
42
|
-
if (
|
|
43
|
-
self._partition_details.partitionIntervalType
|
|
44
|
-
== PartitionIntervalTypes.COLUMN_VALUE
|
|
45
|
-
):
|
|
46
|
-
return [
|
|
47
|
-
df[df[partition_field].isin(self._partition_details.partitionValues)]
|
|
48
|
-
for df in self.table
|
|
49
|
-
]
|
|
50
|
-
if (
|
|
51
|
-
self._partition_details.partitionIntervalType
|
|
52
|
-
== PartitionIntervalTypes.INTEGER_RANGE
|
|
53
|
-
):
|
|
54
|
-
return [
|
|
55
|
-
df[
|
|
56
|
-
df[partition_field].between(
|
|
57
|
-
self._partition_details.partitionIntegerRangeStart,
|
|
58
|
-
self._partition_details.partitionIntegerRangeEnd,
|
|
59
|
-
)
|
|
60
|
-
]
|
|
61
|
-
for df in self.table
|
|
62
|
-
]
|
|
63
|
-
return [
|
|
64
|
-
df[
|
|
65
|
-
df[partition_field]
|
|
66
|
-
>= TableRowInsertedCountToBeBetweenValidator._get_threshold_date( # pylint: disable=protected-access
|
|
67
|
-
self._partition_details.partitionIntervalUnit.value,
|
|
68
|
-
self._partition_details.partitionInterval,
|
|
69
|
-
)
|
|
70
|
-
]
|
|
71
|
-
for df in self.table
|
|
72
|
-
]
|
|
73
|
-
|
|
74
|
-
def _fetch_sample_data_from_user_query(self) -> TableData:
|
|
75
|
-
"""Fetch sample data from user query"""
|
|
76
|
-
cols, rows = self.get_col_row(data_frame=self._rdn_sample_from_user_query())
|
|
77
|
-
return TableData(columns=cols, rows=rows)
|
|
78
|
-
|
|
79
|
-
def _rdn_sample_from_user_query(self):
|
|
80
|
-
"""Generate sample from user query"""
|
|
81
|
-
return [df.query(self._profile_sample_query) for df in self.table]
|
|
82
|
-
|
|
83
|
-
def _get_sampled_dataframe(self):
|
|
84
|
-
"""
|
|
85
|
-
returns sampled ometa dataframes
|
|
86
|
-
"""
|
|
87
|
-
random.shuffle(self.table) # we'll shuffle the list of dataframes
|
|
88
|
-
# sampling data based on profiler config (if any)
|
|
89
|
-
if self.profile_sample_type == ProfileSampleType.PERCENTAGE:
|
|
90
|
-
try:
|
|
91
|
-
profile_sample = self.profile_sample / 100
|
|
92
|
-
except TypeError:
|
|
93
|
-
# if the profile sample is not a number or is None
|
|
94
|
-
# we'll set it to 100
|
|
95
|
-
profile_sample = self.profile_sample = 100
|
|
96
|
-
return [
|
|
97
|
-
df.sample(
|
|
98
|
-
frac=profile_sample,
|
|
99
|
-
random_state=random.randint(0, 100),
|
|
100
|
-
replace=True,
|
|
101
|
-
)
|
|
102
|
-
for df in self.table
|
|
103
|
-
]
|
|
104
|
-
|
|
105
|
-
# we'll distribute the sample size equally among the dataframes
|
|
106
|
-
sample_rows_per_chunk: int = math.floor(self.profile_sample / len(self.table))
|
|
107
|
-
num_rows = sum(len(df) for df in self.table)
|
|
108
|
-
|
|
109
|
-
# if we have less rows than the sample size
|
|
110
|
-
# we'll return the whole table
|
|
111
|
-
if sample_rows_per_chunk > num_rows:
|
|
112
|
-
return self.table
|
|
113
|
-
return [
|
|
114
|
-
df.sample(
|
|
115
|
-
n=sample_rows_per_chunk,
|
|
116
|
-
random_state=random.randint(0, 100),
|
|
117
|
-
replace=True,
|
|
118
|
-
)
|
|
119
|
-
for df in self.table
|
|
120
|
-
]
|
|
121
|
-
|
|
122
|
-
def get_col_row(self, data_frame, columns: Optional[List[SQALikeColumn]] = None):
|
|
123
|
-
"""
|
|
124
|
-
Fetches columns and rows from the data_frame
|
|
125
|
-
"""
|
|
126
|
-
if columns:
|
|
127
|
-
cols = [col.name for col in columns]
|
|
128
|
-
else:
|
|
129
|
-
# we'll use the first dataframe to get the columns
|
|
130
|
-
cols = data_frame[0].columns.tolist()
|
|
131
|
-
rows = []
|
|
132
|
-
# Sample Data should not exceed sample limit
|
|
133
|
-
for chunk in data_frame:
|
|
134
|
-
rows.extend(self._fetch_rows(chunk[cols])[: self.sample_limit])
|
|
135
|
-
if len(rows) >= self.sample_limit:
|
|
136
|
-
break
|
|
137
|
-
return cols, rows
|
|
138
|
-
|
|
139
|
-
def random_sample(self, is_sampled: bool = False):
|
|
140
|
-
"""Generate random sample from the table
|
|
141
|
-
|
|
142
|
-
Returns:
|
|
143
|
-
List[DataFrame]
|
|
144
|
-
"""
|
|
145
|
-
if self._profile_sample_query:
|
|
146
|
-
return self._rdn_sample_from_user_query()
|
|
147
|
-
|
|
148
|
-
if self._partition_details:
|
|
149
|
-
self.table = self._partitioned_table()
|
|
150
|
-
|
|
151
|
-
if not self.profile_sample or is_sampled:
|
|
152
|
-
return self.table
|
|
153
|
-
return self._get_sampled_dataframe()
|
|
154
|
-
|
|
155
|
-
def _fetch_rows(self, data_frame):
|
|
156
|
-
return data_frame.dropna().values.tolist()
|
|
157
|
-
|
|
158
|
-
def fetch_sample_data(
|
|
159
|
-
self, columns: Optional[List[SQALikeColumn]] = None
|
|
160
|
-
) -> TableData:
|
|
161
|
-
"""Fetch sample data from the table
|
|
162
|
-
|
|
163
|
-
Returns:
|
|
164
|
-
TableData:
|
|
165
|
-
"""
|
|
166
|
-
if self._profile_sample_query:
|
|
167
|
-
return self._fetch_sample_data_from_user_query()
|
|
168
|
-
|
|
169
|
-
cols, rows = self.get_col_row(data_frame=self.table, columns=columns)
|
|
170
|
-
return TableData(columns=cols, rows=rows)
|