openmetadata-ingestion 1.7.5.0__py3-none-any.whl → 1.8.0.0__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/helpers/login_user.py +22 -0
- metadata/__init__.py +31 -0
- metadata/automations/runner.py +24 -14
- metadata/data_quality/processor/test_case_runner.py +2 -11
- metadata/data_quality/source/test_suite.py +3 -1
- metadata/data_quality/validations/table/pandas/tableRowInsertedCountToBeBetween.py +17 -2
- 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 +3 -16
- metadata/generated/schema/api/addTagToAssetsRequest.py +1 -10
- 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 +6 -2
- metadata/generated/schema/api/classification/createTag.py +6 -2
- 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/createDataContract.py +66 -0
- 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/createQueryCostRecord.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/data/updateColumn.py +49 -0
- 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/lineage/esLineageData.py +1 -1
- metadata/generated/schema/api/lineage/lineageDirection.py +1 -1
- metadata/generated/schema/api/lineage/nodeInformation.py +1 -1
- metadata/generated/schema/api/lineage/searchLineageRequest.py +1 -1
- metadata/generated/schema/api/lineage/searchLineageResult.py +1 -1
- metadata/generated/schema/api/mcp/__init__.py +3 -0
- metadata/generated/schema/api/mcp/mcpToolDefinition.py +54 -0
- 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/scim/__init__.py +3 -0
- metadata/generated/schema/api/scim/scimGroup.py +52 -0
- metadata/generated/schema/api/scim/scimPatchOp.py +32 -0
- metadata/generated/schema/api/scim/scimUser.py +83 -0
- metadata/generated/schema/api/search/__init__.py +1 -1
- metadata/generated/schema/api/search/previewSearchRequest.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 +8 -1
- metadata/generated/schema/api/teams/createUser.py +11 -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 +9 -6
- 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/validateGlossaryTagsRequest.py +31 -0
- 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 +2 -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/supportToken.py +35 -0
- 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/openMetadataBaseUrlConfiguration.py +1 -1
- metadata/generated/schema/configuration/opertionalConfiguration.py +1 -1
- metadata/generated/schema/configuration/opsConfig.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/configuration/workflowSettings.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 +3 -2
- 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/addCustomProperties.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addDataProductAction.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/addTestCaseAction.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/removeCustomPropertiesAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDataProductAction.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/removeTestCaseAction.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 +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/autoPilotAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/collateAIQualityAgentAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/collateAITierAgentAppConfig.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/dataRetentionConfiguration.py +9 -1
- metadata/generated/schema/entity/applications/configuration/internal/helloPipelinesConfiguration.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +9 -1
- metadata/generated/schema/entity/applications/configuration/private/__init__.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/configuration/private/internal/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/internal/collateAITierAgentAppPrivateConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/limits.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 +7 -4
- metadata/generated/schema/entity/classification/tag.py +6 -3
- 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/dataContract.py +180 -0
- 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/queryCostRecord.py +1 -1
- metadata/generated/schema/entity/data/queryCostSearchResult.py +1 -1
- metadata/generated/schema/entity/data/report.py +1 -1
- metadata/generated/schema/entity/data/searchIndex.py +1 -1
- metadata/generated/schema/entity/data/storedProcedure.py +1 -1
- metadata/generated/schema/entity/data/table.py +5 -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 +5 -1
- metadata/generated/schema/entity/domains/domain.py +5 -1
- metadata/generated/schema/entity/events/__init__.py +1 -1
- metadata/generated/schema/entity/events/webhook.py +7 -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 +6 -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 +1 -1
- 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 +5 -1
- metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/cassandra/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/cassandra/cloudConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/cassandraConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/cockroachConnection.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 +1 -1
- metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
- 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 +9 -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 +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/matillion/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/matillion/matillionETL.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/nifi/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/nifi/basicAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/nifi/clientCertificateAuth.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/ssisConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/wherescapeConnection.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 +1 -1
- metadata/generated/schema/entity/services/databaseService.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/reverseIngestionResponse.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 +8 -1
- metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
- metadata/generated/schema/entity/teams/user.py +11 -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/createAndRunIngestionPipelineTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/runAppTask.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/gateway/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/gateway/parallelGateway.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/noOpTrigger.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +1 -1
- metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
- metadata/generated/schema/governance/workflows/workflowInstance.py +1 -1
- metadata/generated/schema/governance/workflows/workflowInstanceState.py +1 -1
- metadata/generated/schema/jobs/__init__.py +1 -1
- metadata/generated/schema/jobs/backgroundJob.py +12 -3
- metadata/generated/schema/jobs/enumCleanupArgs.py +1 -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 +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +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/reverseIngestionPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/descriptionConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/ownerConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/tagsConfig.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 +1 -1
- metadata/generated/schema/metadataIngestion/workflow.py +1 -1
- metadata/generated/schema/monitoring/__init__.py +1 -1
- metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
- metadata/generated/schema/scim/__init__.py +3 -0
- metadata/generated/schema/scim/scimConfiguration.py +32 -0
- metadata/generated/schema/search/__init__.py +1 -1
- metadata/generated/schema/search/aggregationRequest.py +1 -1
- metadata/generated/schema/search/searchRequest.py +8 -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 +2 -1
- metadata/generated/schema/system/__init__.py +1 -1
- metadata/generated/schema/system/entityError.py +1 -1
- metadata/generated/schema/system/eventPublisherJob.py +8 -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/navigationItem.py +1 -1
- metadata/generated/schema/system/ui/page.py +1 -1
- metadata/generated/schema/system/ui/tab.py +1 -1
- metadata/generated/schema/system/ui/uiCustomization.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/changeSummaryMap.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/great_expectations/action.py +4 -8
- metadata/great_expectations/action1xx.py +395 -0
- metadata/ingestion/connections/builders.py +14 -4
- metadata/ingestion/connections/connection.py +63 -0
- metadata/ingestion/connections/query_logger.py +115 -0
- metadata/ingestion/connections/test_connections.py +1 -1
- metadata/ingestion/ometa/mixins/tests_mixin.py +3 -5
- metadata/ingestion/ometa/routes.py +2 -0
- metadata/ingestion/sink/metadata_rest.py +54 -11
- metadata/ingestion/source/api/api_service.py +2 -7
- metadata/ingestion/source/connections.py +80 -14
- metadata/ingestion/source/connections_utils.py +32 -0
- metadata/ingestion/source/dashboard/dashboard_service.py +2 -7
- metadata/ingestion/source/dashboard/powerbi/metadata.py +32 -20
- metadata/ingestion/source/dashboard/superset/connection.py +8 -8
- metadata/ingestion/source/dashboard/superset/queries.py +1 -1
- metadata/ingestion/source/dashboard/tableau/models.py +12 -2
- metadata/ingestion/source/database/bigquery/connection.py +13 -9
- metadata/ingestion/source/database/bigquery/helper.py +11 -9
- metadata/ingestion/source/database/bigquery/metadata.py +102 -13
- metadata/ingestion/source/database/bigquery/profiler/system.py +1 -1
- metadata/ingestion/source/database/bigquery/queries.py +15 -3
- metadata/ingestion/source/database/common_db_source.py +2 -4
- metadata/ingestion/source/database/database_service.py +2 -7
- metadata/ingestion/source/database/datalake/metadata.py +1 -1
- metadata/ingestion/source/database/dbt/metadata.py +0 -5
- metadata/ingestion/source/database/mysql/connection.py +52 -45
- metadata/ingestion/source/database/mysql/service_spec.py +2 -0
- metadata/ingestion/source/database/query_parser_source.py +2 -7
- metadata/ingestion/source/database/redshift/connection.py +1 -1
- metadata/ingestion/source/database/sample_data.py +1 -1
- metadata/ingestion/source/database/saphana/lineage.py +2 -7
- metadata/ingestion/source/database/sas/metadata.py +2 -7
- metadata/ingestion/source/database/trino/profiler/system_tables_profiler.py +26 -17
- metadata/ingestion/source/database/unitycatalog/connection.py +33 -0
- metadata/ingestion/source/database/unitycatalog/lineage.py +2 -7
- metadata/ingestion/source/database/unitycatalog/metadata.py +126 -13
- metadata/ingestion/source/database/unitycatalog/queries.py +19 -0
- metadata/ingestion/source/messaging/messaging_service.py +2 -7
- metadata/ingestion/source/metadata/alationsink/metadata.py +2 -7
- metadata/ingestion/source/metadata/amundsen/metadata.py +2 -7
- metadata/ingestion/source/metadata/atlas/metadata.py +2 -7
- metadata/ingestion/source/mlmodel/mlmodel_service.py +2 -7
- metadata/ingestion/source/pipeline/airflow/connection.py +4 -6
- metadata/ingestion/source/pipeline/nifi/metadata.py +133 -3
- metadata/ingestion/source/pipeline/pipeline_service.py +20 -7
- metadata/ingestion/source/search/search_service.py +2 -7
- metadata/ingestion/source/storage/storage_service.py +2 -7
- metadata/profiler/interface/sqlalchemy/bigquery/profiler_interface.py +3 -3
- metadata/profiler/interface/sqlalchemy/profiler_interface.py +1 -0
- metadata/profiler/metrics/static/not_regexp_match_count.py +4 -3
- metadata/profiler/metrics/static/regexp_match_count.py +3 -2
- metadata/profiler/orm/functions/length.py +1 -0
- metadata/profiler/orm/functions/md5.py +9 -0
- metadata/profiler/orm/functions/modulo.py +1 -0
- metadata/profiler/orm/functions/random_num.py +4 -0
- metadata/profiler/orm/functions/regexp.py +40 -0
- metadata/profiler/orm/functions/table_metric_computer.py +34 -8
- metadata/profiler/orm/registry.py +1 -0
- metadata/profiler/processor/core.py +2 -2
- metadata/profiler/processor/default.py +29 -28
- metadata/profiler/processor/metric_filter.py +16 -3
- metadata/profiler/processor/models.py +14 -4
- metadata/profiler/source/database/base/profiler_resolver.py +35 -0
- metadata/profiler/source/database/base/profiler_source.py +45 -30
- metadata/profiler/source/profiler_source_interface.py +8 -13
- metadata/sampler/sampler_interface.py +15 -10
- metadata/sampler/sqlalchemy/bigquery/sampler.py +7 -0
- metadata/utils/dependency_injector/dependency_injector.py +403 -0
- metadata/utils/service_spec/service_spec.py +66 -10
- metadata/workflow/profiler.py +2 -7
- {openmetadata_ingestion-1.7.5.0.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/METADATA +513 -502
- {openmetadata_ingestion-1.7.5.0.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/RECORD +788 -765
- {openmetadata_ingestion-1.7.5.0.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/LICENSE +0 -0
- {openmetadata_ingestion-1.7.5.0.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/WHEEL +0 -0
- {openmetadata_ingestion-1.7.5.0.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/entry_points.txt +0 -0
- {openmetadata_ingestion-1.7.5.0.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/top_level.txt +0 -0
|
@@ -12,13 +12,14 @@
|
|
|
12
12
|
Nifi source to extract metadata
|
|
13
13
|
"""
|
|
14
14
|
import traceback
|
|
15
|
-
from
|
|
15
|
+
from collections import defaultdict
|
|
16
|
+
from typing import Dict, Iterable, List, Optional
|
|
16
17
|
|
|
17
18
|
from pydantic import BaseModel, ValidationError
|
|
18
19
|
|
|
19
20
|
from metadata.generated.schema.api.data.createPipeline import CreatePipelineRequest
|
|
20
21
|
from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
|
|
21
|
-
from metadata.generated.schema.entity.data.pipeline import Task
|
|
22
|
+
from metadata.generated.schema.entity.data.pipeline import Pipeline, Task
|
|
22
23
|
from metadata.generated.schema.entity.services.connections.pipeline.nifiConnection import (
|
|
23
24
|
NifiConnection,
|
|
24
25
|
)
|
|
@@ -30,6 +31,9 @@ from metadata.generated.schema.type.basic import (
|
|
|
30
31
|
FullyQualifiedEntityName,
|
|
31
32
|
SourceUrl,
|
|
32
33
|
)
|
|
34
|
+
from metadata.generated.schema.type.entityLineage import EntitiesEdge, LineageDetails
|
|
35
|
+
from metadata.generated.schema.type.entityLineage import Source as LineageSource
|
|
36
|
+
from metadata.generated.schema.type.entityReference import EntityReference
|
|
33
37
|
from metadata.ingestion.api.models import Either
|
|
34
38
|
from metadata.ingestion.api.steps import InvalidSourceException
|
|
35
39
|
from metadata.ingestion.models.pipeline_status import OMetaPipelineStatus
|
|
@@ -43,6 +47,7 @@ logger = ingestion_logger()
|
|
|
43
47
|
|
|
44
48
|
PROCESS_GROUP_FLOW = "processGroupFlow"
|
|
45
49
|
BREADCRUMB = "breadcrumb"
|
|
50
|
+
PARENT_BREADCRUMB = "parentBreadcrumb"
|
|
46
51
|
|
|
47
52
|
|
|
48
53
|
class NifiProcessor(BaseModel):
|
|
@@ -77,6 +82,7 @@ class NifiPipelineDetails(BaseModel):
|
|
|
77
82
|
uri: str
|
|
78
83
|
processors: List[NifiProcessor]
|
|
79
84
|
connections: List[NifiProcessorConnections]
|
|
85
|
+
parent_pipeline_id: Optional[str] = None
|
|
80
86
|
|
|
81
87
|
|
|
82
88
|
class NifiSource(PipelineServiceSource):
|
|
@@ -85,6 +91,11 @@ class NifiSource(PipelineServiceSource):
|
|
|
85
91
|
Pipeline metadata from Airflow's metadata db
|
|
86
92
|
"""
|
|
87
93
|
|
|
94
|
+
def __init__(self, config: WorkflowSource, metadata: OpenMetadata):
|
|
95
|
+
super().__init__(config, metadata)
|
|
96
|
+
self.pipeline_parents_mapping: Dict[str, List[str]] = defaultdict(list)
|
|
97
|
+
self.process_group_connections: List[NifiProcessorConnections] = []
|
|
98
|
+
|
|
88
99
|
@classmethod
|
|
89
100
|
def create(
|
|
90
101
|
cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
|
|
@@ -220,7 +231,7 @@ class NifiSource(PipelineServiceSource):
|
|
|
220
231
|
"""Get List of all pipelines"""
|
|
221
232
|
for process_group in self.connection.list_process_groups():
|
|
222
233
|
try:
|
|
223
|
-
|
|
234
|
+
nifi_pipeline_details = NifiPipelineDetails(
|
|
224
235
|
id_=process_group[PROCESS_GROUP_FLOW].get("id"),
|
|
225
236
|
name=process_group[PROCESS_GROUP_FLOW][BREADCRUMB][BREADCRUMB].get(
|
|
226
237
|
"name"
|
|
@@ -232,7 +243,18 @@ class NifiSource(PipelineServiceSource):
|
|
|
232
243
|
connections=self._get_connections_from_process_group(
|
|
233
244
|
process_group=process_group
|
|
234
245
|
),
|
|
246
|
+
parent_pipeline_id=process_group[PROCESS_GROUP_FLOW][BREADCRUMB]
|
|
247
|
+
.get(PARENT_BREADCRUMB, {})
|
|
248
|
+
.get("id"),
|
|
249
|
+
)
|
|
250
|
+
if nifi_pipeline_details.parent_pipeline_id:
|
|
251
|
+
self.pipeline_parents_mapping[nifi_pipeline_details.id_].append(
|
|
252
|
+
nifi_pipeline_details.parent_pipeline_id
|
|
253
|
+
)
|
|
254
|
+
self.process_group_connections.extend(
|
|
255
|
+
self.get_process_group_connections(process_group)
|
|
235
256
|
)
|
|
257
|
+
yield nifi_pipeline_details
|
|
236
258
|
except (ValueError, KeyError, ValidationError) as err:
|
|
237
259
|
logger.debug(traceback.format_exc())
|
|
238
260
|
logger.warning(
|
|
@@ -244,5 +266,113 @@ class NifiSource(PipelineServiceSource):
|
|
|
244
266
|
f"Wild error encountered when trying to get pipelines from Process Group {process_group} - {err}."
|
|
245
267
|
)
|
|
246
268
|
|
|
269
|
+
def get_process_group_connections(
|
|
270
|
+
self, process_group: dict
|
|
271
|
+
) -> List[NifiProcessorConnections]:
|
|
272
|
+
"""Get all connections for a process group"""
|
|
273
|
+
connections_list = (
|
|
274
|
+
process_group.get(PROCESS_GROUP_FLOW).get("flow").get("connections")
|
|
275
|
+
)
|
|
276
|
+
connections = []
|
|
277
|
+
|
|
278
|
+
for connection in connections_list:
|
|
279
|
+
try:
|
|
280
|
+
source = connection.get("component", {}).get("source", {})
|
|
281
|
+
destination = connection.get("component", {}).get("destination", {})
|
|
282
|
+
if (
|
|
283
|
+
source.get("type") == "OUTPUT_PORT"
|
|
284
|
+
and destination.get("type") == "INPUT_PORT"
|
|
285
|
+
and source.get("groupId") != destination.get("groupId")
|
|
286
|
+
):
|
|
287
|
+
connections.append(
|
|
288
|
+
NifiProcessorConnections(
|
|
289
|
+
id_=connection.get("id"),
|
|
290
|
+
source_id=source.get("groupId"),
|
|
291
|
+
destination_id=destination.get("groupId"),
|
|
292
|
+
)
|
|
293
|
+
)
|
|
294
|
+
except Exception as err:
|
|
295
|
+
logger.debug(traceback.format_exc())
|
|
296
|
+
logger.warning(
|
|
297
|
+
f"Wild error encountered when trying to get process group connections from \
|
|
298
|
+
{process_group[PROCESS_GROUP_FLOW][BREADCRUMB][BREADCRUMB].get('name')} - {err}."
|
|
299
|
+
)
|
|
300
|
+
return connections
|
|
301
|
+
|
|
302
|
+
def yield_pipeline_bulk_lineage_details(
|
|
303
|
+
self,
|
|
304
|
+
) -> Iterable[Either[AddLineageRequest]]:
|
|
305
|
+
"""
|
|
306
|
+
Process the pipeline bulk lineage details
|
|
307
|
+
"""
|
|
308
|
+
# Process the lineage between parent and child pipelines
|
|
309
|
+
for pipeline_id, parent_pipeline_ids in self.pipeline_parents_mapping.items():
|
|
310
|
+
to_entity = self.metadata.get_by_name(
|
|
311
|
+
entity=Pipeline,
|
|
312
|
+
fqn=f"{self.context.get().pipeline_service}.{pipeline_id}",
|
|
313
|
+
)
|
|
314
|
+
if not to_entity:
|
|
315
|
+
logger.warning(
|
|
316
|
+
f"Pipeline {pipeline_id} not found in metadata, skipping lineage"
|
|
317
|
+
)
|
|
318
|
+
continue
|
|
319
|
+
for parent_pipeline_id in parent_pipeline_ids:
|
|
320
|
+
from_entity = self.metadata.get_by_name(
|
|
321
|
+
entity=Pipeline,
|
|
322
|
+
fqn=f"{self.context.get().pipeline_service}.{parent_pipeline_id}",
|
|
323
|
+
)
|
|
324
|
+
if not from_entity:
|
|
325
|
+
logger.warning(
|
|
326
|
+
f"Parent Pipeline {parent_pipeline_id} not found in metadata, skipping lineage"
|
|
327
|
+
)
|
|
328
|
+
continue
|
|
329
|
+
yield Either(
|
|
330
|
+
right=AddLineageRequest(
|
|
331
|
+
edge=EntitiesEdge(
|
|
332
|
+
fromEntity=EntityReference(
|
|
333
|
+
id=from_entity.id, type="pipeline"
|
|
334
|
+
),
|
|
335
|
+
toEntity=EntityReference(id=to_entity.id, type="pipeline"),
|
|
336
|
+
lineageDetails=LineageDetails(
|
|
337
|
+
source=LineageSource.PipelineLineage
|
|
338
|
+
),
|
|
339
|
+
)
|
|
340
|
+
)
|
|
341
|
+
)
|
|
342
|
+
|
|
343
|
+
# Process the lineage between connected pipelines
|
|
344
|
+
for connection in self.process_group_connections:
|
|
345
|
+
from_entity = self.metadata.get_by_name(
|
|
346
|
+
entity=Pipeline,
|
|
347
|
+
fqn=f"{self.context.get().pipeline_service}.{connection.source_id}",
|
|
348
|
+
)
|
|
349
|
+
if not from_entity:
|
|
350
|
+
logger.warning(
|
|
351
|
+
f"Pipeline {connection.source_id} not found in metadata, skipping lineage"
|
|
352
|
+
)
|
|
353
|
+
continue
|
|
354
|
+
|
|
355
|
+
to_entity = self.metadata.get_by_name(
|
|
356
|
+
entity=Pipeline,
|
|
357
|
+
fqn=f"{self.context.get().pipeline_service}.{connection.destination_id}",
|
|
358
|
+
)
|
|
359
|
+
if not to_entity:
|
|
360
|
+
logger.warning(
|
|
361
|
+
f"Pipeline {connection.destination_id} not found in metadata, skipping lineage"
|
|
362
|
+
)
|
|
363
|
+
continue
|
|
364
|
+
|
|
365
|
+
yield Either(
|
|
366
|
+
right=AddLineageRequest(
|
|
367
|
+
edge=EntitiesEdge(
|
|
368
|
+
fromEntity=EntityReference(id=from_entity.id, type="pipeline"),
|
|
369
|
+
toEntity=EntityReference(id=to_entity.id, type="pipeline"),
|
|
370
|
+
lineageDetails=LineageDetails(
|
|
371
|
+
source=LineageSource.PipelineLineage
|
|
372
|
+
),
|
|
373
|
+
)
|
|
374
|
+
)
|
|
375
|
+
)
|
|
376
|
+
|
|
247
377
|
def get_pipeline_name(self, pipeline_details: NifiPipelineDetails) -> str:
|
|
248
378
|
return pipeline_details.name
|
|
@@ -41,9 +41,6 @@ from metadata.ingestion.api.delete import delete_entity_from_source
|
|
|
41
41
|
from metadata.ingestion.api.models import Either
|
|
42
42
|
from metadata.ingestion.api.steps import Source
|
|
43
43
|
from metadata.ingestion.api.topology_runner import TopologyRunnerMixin
|
|
44
|
-
from metadata.ingestion.connections.test_connections import (
|
|
45
|
-
raise_test_connection_exception,
|
|
46
|
-
)
|
|
47
44
|
from metadata.ingestion.models.delete_entity import DeleteEntity
|
|
48
45
|
from metadata.ingestion.models.ometa_classification import OMetaTagAndClassification
|
|
49
46
|
from metadata.ingestion.models.ometa_lineage import OMetaLineageRequest
|
|
@@ -55,7 +52,7 @@ from metadata.ingestion.models.topology import (
|
|
|
55
52
|
TopologyNode,
|
|
56
53
|
)
|
|
57
54
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
58
|
-
from metadata.ingestion.source.connections import get_connection,
|
|
55
|
+
from metadata.ingestion.source.connections import get_connection, test_connection_common
|
|
59
56
|
from metadata.ingestion.source.pipeline.openlineage.models import TableDetails
|
|
60
57
|
from metadata.ingestion.source.pipeline.openlineage.utils import FQNNotFoundException
|
|
61
58
|
from metadata.utils import fqn
|
|
@@ -137,6 +134,7 @@ class PipelineServiceTopology(ServiceTopology):
|
|
|
137
134
|
nullable=True,
|
|
138
135
|
),
|
|
139
136
|
],
|
|
137
|
+
post_process=["process_pipeline_bulk_lineage"],
|
|
140
138
|
)
|
|
141
139
|
|
|
142
140
|
|
|
@@ -316,6 +314,23 @@ class PipelineServiceSource(TopologyRunnerMixin, Source, ABC):
|
|
|
316
314
|
else:
|
|
317
315
|
yield lineage
|
|
318
316
|
|
|
317
|
+
def yield_pipeline_bulk_lineage_details(self) -> Iterable[AddLineageRequest]:
|
|
318
|
+
"""Method to yield the bulk pipeline lineage details"""
|
|
319
|
+
|
|
320
|
+
def process_pipeline_bulk_lineage(self) -> Iterable[AddLineageRequest]:
|
|
321
|
+
"""Method to process the bulk pipeline lineage"""
|
|
322
|
+
if self.source_config.includeLineage:
|
|
323
|
+
for lineage in self.yield_pipeline_bulk_lineage_details() or []:
|
|
324
|
+
if lineage.right is not None:
|
|
325
|
+
yield Either(
|
|
326
|
+
right=OMetaLineageRequest(
|
|
327
|
+
lineage_request=lineage.right,
|
|
328
|
+
override_lineage=self.source_config.overrideLineage,
|
|
329
|
+
)
|
|
330
|
+
)
|
|
331
|
+
else:
|
|
332
|
+
yield lineage
|
|
333
|
+
|
|
319
334
|
def _get_table_fqn_from_om(self, table_details: TableDetails) -> Optional[str]:
|
|
320
335
|
"""
|
|
321
336
|
Based on partial schema and table names look for matching table object in open metadata.
|
|
@@ -373,11 +388,9 @@ class PipelineServiceSource(TopologyRunnerMixin, Source, ABC):
|
|
|
373
388
|
yield pipeline_detail
|
|
374
389
|
|
|
375
390
|
def test_connection(self) -> None:
|
|
376
|
-
|
|
377
|
-
result = test_connection_fn(
|
|
391
|
+
test_connection_common(
|
|
378
392
|
self.metadata, self.connection_obj, self.service_connection
|
|
379
393
|
)
|
|
380
|
-
raise_test_connection_exception(result)
|
|
381
394
|
|
|
382
395
|
def register_record(self, pipeline_request: CreatePipelineRequest) -> None:
|
|
383
396
|
"""Mark the pipeline record as scanned and update the pipeline_source_state"""
|
|
@@ -41,9 +41,6 @@ from metadata.ingestion.api.delete import delete_entity_from_source
|
|
|
41
41
|
from metadata.ingestion.api.models import Either
|
|
42
42
|
from metadata.ingestion.api.steps import Source
|
|
43
43
|
from metadata.ingestion.api.topology_runner import TopologyRunnerMixin
|
|
44
|
-
from metadata.ingestion.connections.test_connections import (
|
|
45
|
-
raise_test_connection_exception,
|
|
46
|
-
)
|
|
47
44
|
from metadata.ingestion.models.delete_entity import DeleteEntity
|
|
48
45
|
from metadata.ingestion.models.search_index_data import OMetaIndexSampleData
|
|
49
46
|
from metadata.ingestion.models.topology import (
|
|
@@ -53,7 +50,7 @@ from metadata.ingestion.models.topology import (
|
|
|
53
50
|
TopologyNode,
|
|
54
51
|
)
|
|
55
52
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
56
|
-
from metadata.ingestion.source.connections import get_connection,
|
|
53
|
+
from metadata.ingestion.source.connections import get_connection, test_connection_common
|
|
57
54
|
from metadata.utils import fqn
|
|
58
55
|
from metadata.utils.filters import filter_by_search_index
|
|
59
56
|
from metadata.utils.helpers import retry_with_docker_host
|
|
@@ -239,11 +236,9 @@ class SearchServiceSource(TopologyRunnerMixin, Source, ABC):
|
|
|
239
236
|
"""Nothing to prepare by default"""
|
|
240
237
|
|
|
241
238
|
def test_connection(self) -> None:
|
|
242
|
-
|
|
243
|
-
result = test_connection_fn(
|
|
239
|
+
test_connection_common(
|
|
244
240
|
self.metadata, self.connection_obj, self.service_connection
|
|
245
241
|
)
|
|
246
|
-
raise_test_connection_exception(result)
|
|
247
242
|
|
|
248
243
|
def mark_search_indexes_as_deleted(self) -> Iterable[Either[DeleteEntity]]:
|
|
249
244
|
"""Method to mark the search index as deleted"""
|
|
@@ -40,9 +40,6 @@ from metadata.ingestion.api.delete import delete_entity_from_source
|
|
|
40
40
|
from metadata.ingestion.api.models import Either
|
|
41
41
|
from metadata.ingestion.api.steps import Source
|
|
42
42
|
from metadata.ingestion.api.topology_runner import TopologyRunnerMixin
|
|
43
|
-
from metadata.ingestion.connections.test_connections import (
|
|
44
|
-
raise_test_connection_exception,
|
|
45
|
-
)
|
|
46
43
|
from metadata.ingestion.models.delete_entity import DeleteEntity
|
|
47
44
|
from metadata.ingestion.models.ometa_classification import OMetaTagAndClassification
|
|
48
45
|
from metadata.ingestion.models.topology import (
|
|
@@ -52,7 +49,7 @@ from metadata.ingestion.models.topology import (
|
|
|
52
49
|
TopologyNode,
|
|
53
50
|
)
|
|
54
51
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
55
|
-
from metadata.ingestion.source.connections import get_connection,
|
|
52
|
+
from metadata.ingestion.source.connections import get_connection, test_connection_common
|
|
56
53
|
from metadata.ingestion.source.database.glue.models import Column
|
|
57
54
|
from metadata.readers.dataframe.models import DatalakeTableSchemaWrapper
|
|
58
55
|
from metadata.readers.dataframe.reader_factory import SupportedTypes
|
|
@@ -240,11 +237,9 @@ class StorageServiceSource(TopologyRunnerMixin, Source, ABC):
|
|
|
240
237
|
self.container_source_state.add(container_fqn)
|
|
241
238
|
|
|
242
239
|
def test_connection(self) -> None:
|
|
243
|
-
|
|
244
|
-
result = test_connection_fn(
|
|
240
|
+
test_connection_common(
|
|
245
241
|
self.metadata, self.connection_obj, self.service_connection
|
|
246
242
|
)
|
|
247
|
-
raise_test_connection_exception(result)
|
|
248
243
|
|
|
249
244
|
def mark_containers_as_deleted(self) -> Iterable[Either[DeleteEntity]]:
|
|
250
245
|
"""Method to mark the containers as deleted"""
|
|
@@ -29,7 +29,7 @@ class BigQueryProfilerInterface(SQAProfilerInterface):
|
|
|
29
29
|
from sqlalchemy_bigquery import STRUCT
|
|
30
30
|
|
|
31
31
|
columns_list = []
|
|
32
|
-
for key, value in columns
|
|
32
|
+
for key, value in columns:
|
|
33
33
|
if not isinstance(value, STRUCT):
|
|
34
34
|
col = Column(f"{parent}.{key}", value)
|
|
35
35
|
# pylint: disable=protected-access
|
|
@@ -38,7 +38,7 @@ class BigQueryProfilerInterface(SQAProfilerInterface):
|
|
|
38
38
|
columns_list.append(col)
|
|
39
39
|
else:
|
|
40
40
|
col = self._get_struct_columns(
|
|
41
|
-
value.__dict__.get("
|
|
41
|
+
value.__dict__.get("_STRUCT_fields"), f"{parent}.{key}"
|
|
42
42
|
)
|
|
43
43
|
columns_list.extend(col)
|
|
44
44
|
return columns_list
|
|
@@ -53,7 +53,7 @@ class BigQueryProfilerInterface(SQAProfilerInterface):
|
|
|
53
53
|
if isinstance(column.type, STRUCT):
|
|
54
54
|
columns.extend(
|
|
55
55
|
self._get_struct_columns(
|
|
56
|
-
column.type.__dict__.get("
|
|
56
|
+
column.type.__dict__.get("_STRUCT_fields"), column.name
|
|
57
57
|
)
|
|
58
58
|
)
|
|
59
59
|
else:
|
|
@@ -461,6 +461,7 @@ class SQAProfilerInterface(ProfilerInterface, SQAInterfaceMixin):
|
|
|
461
461
|
)
|
|
462
462
|
logger.error(error)
|
|
463
463
|
self.status.failed_profiler(error, traceback.format_exc())
|
|
464
|
+
break
|
|
464
465
|
|
|
465
466
|
# If we've exhausted all retries without success, return a tuple of None values
|
|
466
467
|
return None, None, None
|
|
@@ -18,6 +18,7 @@ from sqlalchemy import case, column, not_
|
|
|
18
18
|
|
|
19
19
|
from metadata.generated.schema.configuration.profilerConfiguration import MetricType
|
|
20
20
|
from metadata.profiler.metrics.core import StaticMetric, _label
|
|
21
|
+
from metadata.profiler.orm.functions.regexp import RegexpMatchFn
|
|
21
22
|
from metadata.profiler.orm.functions.sum import SumFn
|
|
22
23
|
from metadata.profiler.orm.registry import is_concatenable
|
|
23
24
|
|
|
@@ -58,9 +59,9 @@ class NotRegexCount(StaticMetric):
|
|
|
58
59
|
[
|
|
59
60
|
(
|
|
60
61
|
not_(
|
|
61
|
-
|
|
62
|
-
self.expression
|
|
63
|
-
)
|
|
62
|
+
RegexpMatchFn(
|
|
63
|
+
column(self.col.name, self.col.type), self.expression
|
|
64
|
+
),
|
|
64
65
|
),
|
|
65
66
|
0,
|
|
66
67
|
)
|
|
@@ -18,6 +18,7 @@ from sqlalchemy import case, column
|
|
|
18
18
|
|
|
19
19
|
from metadata.generated.schema.configuration.profilerConfiguration import MetricType
|
|
20
20
|
from metadata.profiler.metrics.core import StaticMetric, _label
|
|
21
|
+
from metadata.profiler.orm.functions.regexp import RegexpMatchFn
|
|
21
22
|
from metadata.profiler.orm.functions.sum import SumFn
|
|
22
23
|
from metadata.profiler.orm.registry import is_concatenable
|
|
23
24
|
|
|
@@ -57,8 +58,8 @@ class RegexCount(StaticMetric):
|
|
|
57
58
|
case(
|
|
58
59
|
[
|
|
59
60
|
(
|
|
60
|
-
|
|
61
|
-
self.expression
|
|
61
|
+
RegexpMatchFn(
|
|
62
|
+
column(self.col.name, self.col.type), self.expression
|
|
62
63
|
),
|
|
63
64
|
1,
|
|
64
65
|
)
|
|
@@ -52,6 +52,7 @@ def _(element, compiler, **kw):
|
|
|
52
52
|
@compiles(LenFn, Dialects.Hana)
|
|
53
53
|
@compiles(LenFn, Dialects.Druid)
|
|
54
54
|
@compiles(LenFn, Dialects.Doris)
|
|
55
|
+
@compiles(LenFn, Dialects.Teradata)
|
|
55
56
|
def _(element, compiler, **kw):
|
|
56
57
|
return "LENGTH(%s)" % compiler.process(element.clauses, **kw)
|
|
57
58
|
|
|
@@ -40,3 +40,12 @@ def _(element, compiler, **kw):
|
|
|
40
40
|
@compiles(MD5, PythonDialects.BigQuery.value)
|
|
41
41
|
def _(element, compiler, **kw):
|
|
42
42
|
return f"TO_HEX(MD5(CAST({compiler.process(element.clauses, **kw)} AS STRING)))"
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
@compiles(MD5, PythonDialects.Teradata.value)
|
|
46
|
+
def _(element, compiler, **kw):
|
|
47
|
+
# There is no MD5 in Teradata or any other hashes
|
|
48
|
+
# But we can use UDF function hash_md5 published by Teradata Community
|
|
49
|
+
return (
|
|
50
|
+
f"HASH_MD5(CAST({compiler.process(element.clauses, **kw)} AS VARCHAR(32000)))"
|
|
51
|
+
)
|
|
@@ -61,6 +61,7 @@ def _(element, compiler, **kw):
|
|
|
61
61
|
@compiles(ModuloFn, Dialects.Vertica)
|
|
62
62
|
@compiles(ModuloFn, Dialects.Hana)
|
|
63
63
|
@compiles(ModuloFn, Dialects.Cockroach)
|
|
64
|
+
@compiles(ModuloFn, Dialects.Teradata)
|
|
64
65
|
def _(element, compiler, **kw):
|
|
65
66
|
"""Modulo function for specific dialect"""
|
|
66
67
|
value, base = validate_and_compile(element, compiler, **kw)
|
|
@@ -98,10 +98,14 @@ def _(*_, **__):
|
|
|
98
98
|
|
|
99
99
|
|
|
100
100
|
@compiles(RandomNumFn, Dialects.Snowflake)
|
|
101
|
+
@compiles(RandomNumFn, Dialects.Teradata)
|
|
101
102
|
def _(*_, **__):
|
|
102
103
|
"""We use FROM <table> SAMPLE BERNOULLI (n) for sampling
|
|
103
104
|
in snowflake. We'll return 0 to make sure we get all the rows
|
|
104
105
|
from the already sampled results when executing row::MOD(0, 100) < profile_sample.
|
|
106
|
+
|
|
107
|
+
Teradata RANDOM(0,100) function can't be used inside ORDER BY clause. That's why
|
|
108
|
+
use the same trick.
|
|
105
109
|
"""
|
|
106
110
|
return "0"
|
|
107
111
|
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Copyright 2025 Collate
|
|
2
|
+
# Licensed under the Collate Community License, Version 1.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
|
+
# https://github.com/open-metadata/OpenMetadata/blob/main/ingestion/LICENSE
|
|
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
|
+
"""Define a regexp match function."""
|
|
13
|
+
|
|
14
|
+
from sqlalchemy.ext.compiler import compiles
|
|
15
|
+
from sqlalchemy.sql.functions import GenericFunction
|
|
16
|
+
|
|
17
|
+
from metadata.profiler.metrics.core import CACHE
|
|
18
|
+
from metadata.profiler.orm.registry import Dialects
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class RegexpMatchFn(GenericFunction):
|
|
22
|
+
name = "regexp_match"
|
|
23
|
+
inherit_cache = CACHE
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@compiles(RegexpMatchFn)
|
|
27
|
+
def _(element, compiler, **kw):
|
|
28
|
+
"""Base function for regexp_match"""
|
|
29
|
+
column, pattern = element.clauses
|
|
30
|
+
fn = column.regexp_match(pattern)
|
|
31
|
+
return compiler.process(fn, **kw)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
@compiles(RegexpMatchFn, Dialects.Databricks)
|
|
35
|
+
def _(element, compiler, **kw):
|
|
36
|
+
"""Databricks function for regexp_match"""
|
|
37
|
+
column, pattern = element.clauses
|
|
38
|
+
compiled_column = compiler.process(column, **kw)
|
|
39
|
+
compiled_pattern = compiler.process(pattern, **kw)
|
|
40
|
+
return f"REGEXP_LIKE({compiled_column}, {compiled_pattern})"
|
|
@@ -16,7 +16,7 @@ Run profiler metrics on the table
|
|
|
16
16
|
|
|
17
17
|
import traceback
|
|
18
18
|
from abc import ABC, abstractmethod
|
|
19
|
-
from typing import Callable, List, Optional, Tuple
|
|
19
|
+
from typing import Callable, List, Optional, Tuple, Type
|
|
20
20
|
|
|
21
21
|
from sqlalchemy import Column, MetaData, Table, func, inspect, literal, select
|
|
22
22
|
from sqlalchemy.sql.expression import ColumnOperators, and_, cte
|
|
@@ -27,13 +27,29 @@ from metadata.generated.schema.entity.data.table import TableType
|
|
|
27
27
|
from metadata.profiler.metrics.registry import Metrics
|
|
28
28
|
from metadata.profiler.orm.registry import Dialects
|
|
29
29
|
from metadata.profiler.processor.runner import QueryRunner
|
|
30
|
+
from metadata.profiler.registry import MetricRegistry
|
|
31
|
+
from metadata.utils.dependency_injector.dependency_injector import (
|
|
32
|
+
DependencyNotFoundError,
|
|
33
|
+
Inject,
|
|
34
|
+
inject,
|
|
35
|
+
)
|
|
30
36
|
from metadata.utils.logger import profiler_interface_registry_logger
|
|
31
37
|
|
|
32
38
|
logger = profiler_interface_registry_logger()
|
|
33
39
|
|
|
40
|
+
|
|
41
|
+
@inject
|
|
42
|
+
def get_row_count_metric(metrics: Inject[Type[MetricRegistry]] = None):
|
|
43
|
+
if metrics is None:
|
|
44
|
+
raise DependencyNotFoundError(
|
|
45
|
+
"MetricRegistry dependency not found. Please ensure the MetricRegistry is properly registered."
|
|
46
|
+
)
|
|
47
|
+
return metrics.ROW_COUNT().name()
|
|
48
|
+
|
|
49
|
+
|
|
34
50
|
COLUMN_COUNT = "columnCount"
|
|
35
51
|
COLUMN_NAMES = "columnNames"
|
|
36
|
-
ROW_COUNT =
|
|
52
|
+
ROW_COUNT = get_row_count_metric()
|
|
37
53
|
SIZE_IN_BYTES = "sizeInBytes"
|
|
38
54
|
CREATE_DATETIME = "createDateTime"
|
|
39
55
|
|
|
@@ -336,12 +352,16 @@ class BigQueryTableMetricComputer(BaseTableMetricComputer):
|
|
|
336
352
|
Column("dataset_id") == self.schema_name,
|
|
337
353
|
Column("table_id") == self.table_name,
|
|
338
354
|
]
|
|
355
|
+
schema = (
|
|
356
|
+
self.schema_name.startswith(
|
|
357
|
+
f"{self.conn_config.credentials.gcpConfig.projectId.root}."
|
|
358
|
+
)
|
|
359
|
+
and self.schema_name
|
|
360
|
+
or f"{self.conn_config.credentials.gcpConfig.projectId.root}.{self.schema_name}"
|
|
361
|
+
)
|
|
339
362
|
query = self._build_query(
|
|
340
363
|
columns,
|
|
341
|
-
self._build_table(
|
|
342
|
-
"__TABLES__",
|
|
343
|
-
f"{self.conn_config.credentials.gcpConfig.projectId.root}.{self.schema_name}",
|
|
344
|
-
),
|
|
364
|
+
self._build_table("__TABLES__", schema),
|
|
345
365
|
where_clause,
|
|
346
366
|
)
|
|
347
367
|
res = self.runner._session.execute(query).first()
|
|
@@ -358,9 +378,15 @@ class BigQueryTableMetricComputer(BaseTableMetricComputer):
|
|
|
358
378
|
class MySQLTableMetricComputer(BaseTableMetricComputer):
|
|
359
379
|
"""MySQL Table Metric Computer"""
|
|
360
380
|
|
|
361
|
-
|
|
381
|
+
@inject
|
|
382
|
+
def compute(self, metrics: Inject[Type[MetricRegistry]] = None):
|
|
362
383
|
"""compute table metrics for mysql"""
|
|
363
384
|
|
|
385
|
+
if metrics is None:
|
|
386
|
+
raise DependencyNotFoundError(
|
|
387
|
+
"MetricRegistry dependency not found. Please ensure the MetricRegistry is properly registered."
|
|
388
|
+
)
|
|
389
|
+
|
|
364
390
|
columns = [
|
|
365
391
|
Column("TABLE_ROWS").label(ROW_COUNT),
|
|
366
392
|
(Column("data_length") + Column("index_length")).label(SIZE_IN_BYTES),
|
|
@@ -386,7 +412,7 @@ class MySQLTableMetricComputer(BaseTableMetricComputer):
|
|
|
386
412
|
res = res._asdict()
|
|
387
413
|
# innodb row count is an estimate we need to patch the row count with COUNT(*)
|
|
388
414
|
# https://dev.mysql.com/doc/refman/8.3/en/information-schema-innodb-tablestats-table.html
|
|
389
|
-
row_count = self.runner.select_first_from_table(
|
|
415
|
+
row_count = self.runner.select_first_from_table(metrics.ROW_COUNT().fn())
|
|
390
416
|
res.update({ROW_COUNT: row_count.rowCount})
|
|
391
417
|
return res
|
|
392
418
|
|
|
@@ -16,7 +16,7 @@ from __future__ import annotations
|
|
|
16
16
|
|
|
17
17
|
import traceback
|
|
18
18
|
from datetime import datetime, timezone
|
|
19
|
-
from typing import Any, Dict, Generic, List, Optional, Set, Tuple, Type
|
|
19
|
+
from typing import Any, Dict, Generic, List, Optional, Set, Tuple, Type, cast
|
|
20
20
|
|
|
21
21
|
from pydantic import ValidationError
|
|
22
22
|
from sqlalchemy import Column
|
|
@@ -94,7 +94,7 @@ class Profiler(Generic[TMetric]):
|
|
|
94
94
|
:param profile_sample: % of rows to use for sampling column metrics
|
|
95
95
|
"""
|
|
96
96
|
self.global_profiler_configuration: Optional[ProfilerConfiguration] = (
|
|
97
|
-
global_profiler_configuration.config_value
|
|
97
|
+
cast(ProfilerConfiguration, global_profiler_configuration.config_value)
|
|
98
98
|
if global_profiler_configuration
|
|
99
99
|
else None
|
|
100
100
|
)
|