openmetadata-ingestion 1.6.3.2.dev1__py3-none-any.whl → 1.6.4.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.
- 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 +1 -1
- metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
- metadata/generated/schema/api/data/createTable.py +1 -1
- metadata/generated/schema/api/data/createTableProfile.py +1 -1
- metadata/generated/schema/api/data/createTopic.py +1 -1
- metadata/generated/schema/api/data/loadGlossary.py +1 -1
- metadata/generated/schema/api/data/restoreEntity.py +1 -1
- metadata/generated/schema/api/dataInsight/__init__.py +1 -1
- metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
- metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
- metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
- metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
- metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
- metadata/generated/schema/api/docStore/__init__.py +1 -1
- metadata/generated/schema/api/docStore/createDocument.py +1 -1
- metadata/generated/schema/api/domains/__init__.py +1 -1
- metadata/generated/schema/api/domains/createDataProduct.py +1 -1
- metadata/generated/schema/api/domains/createDomain.py +1 -1
- metadata/generated/schema/api/feed/__init__.py +1 -1
- metadata/generated/schema/api/feed/closeTask.py +1 -1
- metadata/generated/schema/api/feed/createPost.py +1 -1
- metadata/generated/schema/api/feed/createSuggestion.py +1 -1
- metadata/generated/schema/api/feed/createThread.py +1 -1
- metadata/generated/schema/api/feed/resolveTask.py +1 -1
- metadata/generated/schema/api/feed/threadCount.py +1 -1
- metadata/generated/schema/api/governance/__init__.py +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 +2 -4
- 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 -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 +1 -1
- metadata/generated/schema/entity/applications/appExtension.py +1 -1
- metadata/generated/schema/entity/applications/appRunRecord.py +3 -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/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/removeCustomPropertiesAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +10 -2
- 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 +23 -3
- 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/dataInsightsAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataRetentionConfiguration.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 +1 -1
- metadata/generated/schema/entity/data/storedProcedure.py +1 -1
- metadata/generated/schema/entity/data/table.py +2 -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 +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 +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 +9 -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 +9 -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 +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 +3 -0
- metadata/generated/schema/entity/services/connections/pipeline/matillion/matillionETL.py +39 -0
- metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +4 -25
- metadata/generated/schema/entity/services/connections/pipeline/nifi/__init__.py +3 -0
- metadata/generated/schema/entity/services/connections/pipeline/nifi/basicAuth.py +40 -0
- metadata/generated/schema/entity/services/connections/pipeline/nifi/clientCertificateAuth.py +38 -0
- metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +3 -2
- 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 +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 +7 -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 +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 +1 -1
- 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 +9 -1
- metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
- metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +2 -2
- 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/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 +1 -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 +20 -20
- 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 +8 -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/lineage/masker.py +1 -1
- metadata/ingestion/lineage/models.py +1 -2
- metadata/ingestion/lineage/parser.py +2 -2
- metadata/ingestion/lineage/sql_lineage.py +111 -5
- metadata/ingestion/ometa/mixins/query_mixin.py +2 -0
- metadata/ingestion/ometa/routes.py +4 -0
- metadata/ingestion/source/api/rest/metadata.py +33 -24
- metadata/ingestion/source/dashboard/looker/metadata.py +115 -13
- metadata/ingestion/source/dashboard/powerbi/client.py +150 -35
- metadata/ingestion/source/database/bigquery/metadata.py +39 -0
- metadata/ingestion/source/database/databricks/connection.py +8 -3
- metadata/ingestion/source/database/databricks/lineage.py +12 -24
- metadata/ingestion/source/database/databricks/queries.py +24 -0
- metadata/ingestion/source/database/databricks/query_parser.py +11 -15
- metadata/ingestion/source/database/databricks/usage.py +7 -37
- metadata/ingestion/source/database/db2/connection.py +1 -1
- metadata/ingestion/source/database/db2/service_spec.py +1 -4
- metadata/ingestion/source/database/dbt/metadata.py +3 -1
- metadata/ingestion/source/database/druid/service_spec.py +1 -5
- metadata/ingestion/source/database/greenplum/service_spec.py +1 -5
- metadata/ingestion/source/database/hive/service_spec.py +1 -5
- metadata/ingestion/source/database/impala/service_spec.py +1 -5
- metadata/ingestion/source/database/lineage_source.py +12 -1
- metadata/ingestion/source/database/mariadb/service_spec.py +1 -9
- metadata/ingestion/source/database/pinotdb/service_spec.py +1 -5
- metadata/ingestion/source/database/postgres/usage.py +15 -0
- metadata/ingestion/source/database/query_parser_source.py +1 -0
- metadata/ingestion/source/database/redshift/metadata.py +31 -11
- metadata/ingestion/source/database/redshift/queries.py +5 -0
- metadata/ingestion/source/database/singlestore/service_spec.py +1 -6
- metadata/ingestion/source/database/snowflake/connection.py +10 -2
- metadata/ingestion/source/database/snowflake/lineage.py +3 -0
- metadata/ingestion/source/database/snowflake/metadata.py +3 -0
- metadata/ingestion/source/database/snowflake/queries.py +8 -8
- metadata/ingestion/source/database/snowflake/query_parser.py +1 -0
- metadata/ingestion/source/database/sqlite/service_spec.py +1 -5
- metadata/ingestion/source/database/teradata/service_spec.py +1 -5
- metadata/ingestion/source/database/trino/connection.py +13 -0
- metadata/ingestion/source/database/unitycatalog/lineage.py +56 -32
- metadata/ingestion/source/database/unitycatalog/query_parser.py +7 -0
- metadata/ingestion/source/database/unitycatalog/service_spec.py +4 -0
- metadata/ingestion/source/database/unitycatalog/usage.py +41 -2
- metadata/ingestion/source/database/usage_source.py +1 -1
- metadata/ingestion/source/pipeline/nifi/connection.py +4 -2
- metadata/profiler/interface/sqlalchemy/unity_catalog/sampler_interface.py +29 -0
- metadata/profiler/source/fetcher/config.py +4 -0
- metadata/profiler/source/fetcher/fetcher_strategy.py +19 -2
- metadata/sampler/sampler_interface.py +0 -3
- metadata/sampler/sqlalchemy/bigquery/sampler.py +1 -2
- metadata/sampler/sqlalchemy/sampler.py +22 -9
- {openmetadata_ingestion-1.6.3.2.dev1.dist-info → openmetadata_ingestion-1.6.4.0.dist-info}/METADATA +388 -369
- {openmetadata_ingestion-1.6.3.2.dev1.dist-info → openmetadata_ingestion-1.6.4.0.dist-info}/RECORD +699 -693
- {openmetadata_ingestion-1.6.3.2.dev1.dist-info → openmetadata_ingestion-1.6.4.0.dist-info}/LICENSE +0 -0
- {openmetadata_ingestion-1.6.3.2.dev1.dist-info → openmetadata_ingestion-1.6.4.0.dist-info}/WHEEL +0 -0
- {openmetadata_ingestion-1.6.3.2.dev1.dist-info → openmetadata_ingestion-1.6.4.0.dist-info}/entry_points.txt +0 -0
- {openmetadata_ingestion-1.6.3.2.dev1.dist-info → openmetadata_ingestion-1.6.4.0.dist-info}/top_level.txt +0 -0
|
@@ -92,6 +92,7 @@ from metadata.generated.schema.api.services.createStorageService import (
|
|
|
92
92
|
from metadata.generated.schema.api.services.ingestionPipelines.createIngestionPipeline import (
|
|
93
93
|
CreateIngestionPipelineRequest,
|
|
94
94
|
)
|
|
95
|
+
from metadata.generated.schema.api.teams.createPersona import CreatePersonaRequest
|
|
95
96
|
from metadata.generated.schema.api.teams.createRole import CreateRoleRequest
|
|
96
97
|
from metadata.generated.schema.api.teams.createTeam import CreateTeamRequest
|
|
97
98
|
from metadata.generated.schema.api.teams.createUser import CreateUserRequest
|
|
@@ -157,6 +158,7 @@ from metadata.generated.schema.entity.services.mlmodelService import MlModelServ
|
|
|
157
158
|
from metadata.generated.schema.entity.services.pipelineService import PipelineService
|
|
158
159
|
from metadata.generated.schema.entity.services.searchService import SearchService
|
|
159
160
|
from metadata.generated.schema.entity.services.storageService import StorageService
|
|
161
|
+
from metadata.generated.schema.entity.teams.persona import Persona
|
|
160
162
|
from metadata.generated.schema.entity.teams.role import Role
|
|
161
163
|
from metadata.generated.schema.entity.teams.team import Team
|
|
162
164
|
from metadata.generated.schema.entity.teams.user import AuthenticationMechanism, User
|
|
@@ -217,6 +219,8 @@ ROUTES = {
|
|
|
217
219
|
CreateTeamRequest.__name__: "/teams",
|
|
218
220
|
User.__name__: "/users",
|
|
219
221
|
CreateUserRequest.__name__: "/users",
|
|
222
|
+
Persona.__name__: "/personas",
|
|
223
|
+
CreatePersonaRequest.__name__: "/personas",
|
|
220
224
|
AuthenticationMechanism.__name__: "/users/auth-mechanism",
|
|
221
225
|
Bot.__name__: "/bots",
|
|
222
226
|
CreateBot.__name__: "/bots",
|
|
@@ -171,7 +171,7 @@ class RestSource(ApiServiceSource):
|
|
|
171
171
|
break
|
|
172
172
|
return filtered_paths
|
|
173
173
|
except Exception as err:
|
|
174
|
-
logger.
|
|
174
|
+
logger.warning(
|
|
175
175
|
f"Error while filtering endpoints for collection {collection.name.root}"
|
|
176
176
|
)
|
|
177
177
|
return None
|
|
@@ -184,7 +184,7 @@ class RestSource(ApiServiceSource):
|
|
|
184
184
|
endpoint.name = f"{path} - {method_type}"
|
|
185
185
|
return endpoint
|
|
186
186
|
except Exception as err:
|
|
187
|
-
logger.
|
|
187
|
+
logger.warning(f"Error while parsing endpoint data: {err}")
|
|
188
188
|
return None
|
|
189
189
|
|
|
190
190
|
def _generate_collection_url(self, collection_name: str) -> Optional[AnyUrl]:
|
|
@@ -195,7 +195,7 @@ class RestSource(ApiServiceSource):
|
|
|
195
195
|
f"{self.config.serviceConnection.root.config.openAPISchemaURL}#tag/{collection_name}"
|
|
196
196
|
)
|
|
197
197
|
except Exception as err:
|
|
198
|
-
logger.
|
|
198
|
+
logger.warning(f"Error while generating collection url: {err}")
|
|
199
199
|
return None
|
|
200
200
|
|
|
201
201
|
def _generate_endpoint_url(self, endpoint_name: str) -> AnyUrl:
|
|
@@ -203,15 +203,14 @@ class RestSource(ApiServiceSource):
|
|
|
203
203
|
base_url = self.config.serviceConnection.root.config.openAPISchemaURL
|
|
204
204
|
if endpoint_name:
|
|
205
205
|
return AnyUrl(f"{base_url}#operation/{endpoint_name}")
|
|
206
|
-
|
|
207
|
-
return AnyUrl(base_url)
|
|
206
|
+
return AnyUrl(base_url)
|
|
208
207
|
|
|
209
208
|
def _get_api_request_method(self, method_type: str) -> Optional[str]:
|
|
210
209
|
"""fetch endpoint request method"""
|
|
211
210
|
try:
|
|
212
211
|
return ApiRequestMethod[method_type.upper()]
|
|
213
212
|
except KeyError as err:
|
|
214
|
-
logger.
|
|
213
|
+
logger.warning(f"Keyerror while fetching request method: {err}")
|
|
215
214
|
return None
|
|
216
215
|
|
|
217
216
|
def _get_request_schema(self, info: dict) -> Optional[APISchema]:
|
|
@@ -227,9 +226,9 @@ class RestSource(ApiServiceSource):
|
|
|
227
226
|
if not schema_ref:
|
|
228
227
|
logger.debug("No request schema found for the endpoint")
|
|
229
228
|
return None
|
|
230
|
-
return self.
|
|
229
|
+
return APISchema(schemaFields=self.process_schema_fields(schema_ref))
|
|
231
230
|
except Exception as err:
|
|
232
|
-
logger.
|
|
231
|
+
logger.warning(f"Error while parsing request schema: {err}")
|
|
233
232
|
return None
|
|
234
233
|
|
|
235
234
|
def _get_response_schema(self, info: dict) -> Optional[APISchema]:
|
|
@@ -246,33 +245,43 @@ class RestSource(ApiServiceSource):
|
|
|
246
245
|
if not schema_ref:
|
|
247
246
|
logger.debug("No response schema found for the endpoint")
|
|
248
247
|
return None
|
|
249
|
-
return self.
|
|
248
|
+
return APISchema(schemaFields=self.process_schema_fields(schema_ref))
|
|
250
249
|
except Exception as err:
|
|
251
|
-
logger.
|
|
250
|
+
logger.warning(f"Error while parsing response schema: {err}")
|
|
252
251
|
return None
|
|
253
252
|
|
|
254
|
-
def
|
|
255
|
-
"""process schema"""
|
|
253
|
+
def process_schema_fields(self, schema_ref: str) -> Optional[List[FieldModel]]:
|
|
256
254
|
try:
|
|
257
|
-
|
|
255
|
+
schema_name = schema_ref.split("/")[-1]
|
|
258
256
|
schema_fields = (
|
|
259
|
-
self.json_response.get("components").get("schemas").get(
|
|
257
|
+
self.json_response.get("components").get("schemas").get(schema_name)
|
|
260
258
|
)
|
|
261
259
|
|
|
262
260
|
fetched_fields = []
|
|
263
261
|
for key, val in schema_fields.get("properties", {}).items():
|
|
264
262
|
dtype = val.get("type")
|
|
265
|
-
if
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
FieldModel(
|
|
269
|
-
name=key,
|
|
270
|
-
dataType=DataTypeTopic[dtype.upper()]
|
|
263
|
+
if dtype:
|
|
264
|
+
parsed_dtype = (
|
|
265
|
+
DataTypeTopic[dtype.upper()]
|
|
271
266
|
if dtype.upper() in DataTypeTopic.__members__
|
|
272
|
-
else DataTypeTopic.UNKNOWN
|
|
267
|
+
else DataTypeTopic.UNKNOWN
|
|
273
268
|
)
|
|
274
|
-
|
|
275
|
-
|
|
269
|
+
fetched_fields.append(FieldModel(name=key, dataType=parsed_dtype))
|
|
270
|
+
else:
|
|
271
|
+
# If type of field is not defined then check for sub-schema
|
|
272
|
+
# Check if it's `object` type field
|
|
273
|
+
# check infinite recrusrion by comparing with parent(schema_ref)
|
|
274
|
+
object_children = None
|
|
275
|
+
if val.get("$ref") and val.get("$ref") != schema_ref:
|
|
276
|
+
object_children = self.process_schema_fields(val.get("$ref"))
|
|
277
|
+
fetched_fields.append(
|
|
278
|
+
FieldModel(
|
|
279
|
+
name=key,
|
|
280
|
+
dataType=DataTypeTopic.UNKNOWN,
|
|
281
|
+
children=object_children,
|
|
282
|
+
)
|
|
283
|
+
)
|
|
284
|
+
return fetched_fields
|
|
276
285
|
except Exception as err:
|
|
277
|
-
logger.
|
|
286
|
+
logger.warning(f"Error while processing schema fields: {err}")
|
|
278
287
|
return None
|
|
@@ -21,6 +21,7 @@ Notes:
|
|
|
21
21
|
"""
|
|
22
22
|
import copy
|
|
23
23
|
import os
|
|
24
|
+
import re
|
|
24
25
|
import traceback
|
|
25
26
|
from datetime import datetime
|
|
26
27
|
from pathlib import Path
|
|
@@ -39,6 +40,7 @@ from typing import (
|
|
|
39
40
|
|
|
40
41
|
import giturlparse
|
|
41
42
|
import lkml
|
|
43
|
+
import networkx as nx
|
|
42
44
|
from liquid import Template
|
|
43
45
|
from looker_sdk.sdk.api40.methods import Looker40SDK
|
|
44
46
|
from looker_sdk.sdk.api40.models import Dashboard as LookerDashboard
|
|
@@ -134,6 +136,10 @@ logger = ingestion_logger()
|
|
|
134
136
|
LIST_DASHBOARD_FIELDS = ["id", "title"]
|
|
135
137
|
IMPORTED_PROJECTS_DIR = "imported_projects"
|
|
136
138
|
|
|
139
|
+
# we need to find the derived references in the SQL query using regex
|
|
140
|
+
# https://cloud.google.com/looker/docs/derived-tables#referencing_derived_tables_in_other_derived_tables
|
|
141
|
+
DERIVED_REFERENCES = r"\${([\w\s\d_.]+)\.SQL_TABLE_NAME}"
|
|
142
|
+
|
|
137
143
|
# Here we can update the fields to get further information, such as:
|
|
138
144
|
# created_at, updated_at, last_updater_id, deleted_at, deleter_id, favorite_count, last_viewed_at
|
|
139
145
|
GET_DASHBOARD_FIELDS = [
|
|
@@ -165,6 +171,13 @@ def build_datamodel_name(model_name: str, explore_name: str) -> str:
|
|
|
165
171
|
return clean_dashboard_name(model_name + "_" + explore_name)
|
|
166
172
|
|
|
167
173
|
|
|
174
|
+
def find_derived_references(sql_query: str) -> List[str]:
|
|
175
|
+
if sql_query is None:
|
|
176
|
+
return []
|
|
177
|
+
matches = re.findall(DERIVED_REFERENCES, sql_query)
|
|
178
|
+
return matches
|
|
179
|
+
|
|
180
|
+
|
|
168
181
|
class LookerSource(DashboardServiceSource):
|
|
169
182
|
"""
|
|
170
183
|
Looker Source Class.
|
|
@@ -172,6 +185,8 @@ class LookerSource(DashboardServiceSource):
|
|
|
172
185
|
Its client uses Looker 40 from the SDK: client = looker_sdk.init40()
|
|
173
186
|
"""
|
|
174
187
|
|
|
188
|
+
# pylint: disable=too-many-instance-attributes
|
|
189
|
+
|
|
175
190
|
config: WorkflowSource
|
|
176
191
|
metadata: OpenMetadata
|
|
177
192
|
client: Looker40SDK
|
|
@@ -192,6 +207,10 @@ class LookerSource(DashboardServiceSource):
|
|
|
192
207
|
self._main__lookml_manifest: Optional[LookMLManifest] = None
|
|
193
208
|
self._view_data_model: Optional[DashboardDataModel] = None
|
|
194
209
|
|
|
210
|
+
self._parsed_views: Optional[Dict[str, str]] = {}
|
|
211
|
+
self._unparsed_views: Optional[Dict[str, str]] = {}
|
|
212
|
+
self._derived_dependencies = nx.DiGraph()
|
|
213
|
+
|
|
195
214
|
self._added_lineage: Optional[Dict] = {}
|
|
196
215
|
|
|
197
216
|
@classmethod
|
|
@@ -557,6 +576,68 @@ class LookerSource(DashboardServiceSource):
|
|
|
557
576
|
)
|
|
558
577
|
)
|
|
559
578
|
|
|
579
|
+
def replace_derived_references(self, sql_query):
|
|
580
|
+
"""
|
|
581
|
+
Replace all derived references with the parsed views sql query
|
|
582
|
+
will replace the derived references in the SQL query using regex
|
|
583
|
+
for e.g. It will replace ${view_name.SQL_TABLE_NAME} with the parsed view query for view_name
|
|
584
|
+
https://cloud.google.com/looker/docs/derived-tables#referencing_derived_tables_in_other_derived_tables
|
|
585
|
+
"""
|
|
586
|
+
try:
|
|
587
|
+
sql_query = re.sub(
|
|
588
|
+
DERIVED_REFERENCES,
|
|
589
|
+
# from `${view_name.SQL_TABLE_NAME}` we want the `view_name`.
|
|
590
|
+
# match.group(1) will give us the `view_name`
|
|
591
|
+
lambda match: f"({self._parsed_views.get(match.group(1), match.group(0))})",
|
|
592
|
+
sql_query,
|
|
593
|
+
)
|
|
594
|
+
except Exception as e:
|
|
595
|
+
logger.warning(
|
|
596
|
+
f"Something went wrong while replacing derived view references: {e}"
|
|
597
|
+
)
|
|
598
|
+
return sql_query
|
|
599
|
+
|
|
600
|
+
def build_lineage_for_unparsed_views(self) -> Iterable[Either[AddLineageRequest]]:
|
|
601
|
+
"""
|
|
602
|
+
build lineage by parsing the unparsed views containing derived references
|
|
603
|
+
"""
|
|
604
|
+
try:
|
|
605
|
+
# Doing a reversed topological sort to process the views in the right order
|
|
606
|
+
for view_name in reversed(
|
|
607
|
+
list(nx.topological_sort(self._derived_dependencies))
|
|
608
|
+
):
|
|
609
|
+
if view_name in self._parsed_views:
|
|
610
|
+
# Skip if already processed
|
|
611
|
+
continue
|
|
612
|
+
sql_query = self.replace_derived_references(
|
|
613
|
+
self._unparsed_views[view_name]
|
|
614
|
+
)
|
|
615
|
+
if view_references := find_derived_references(sql_query):
|
|
616
|
+
# There are still derived references in the view query
|
|
617
|
+
logger.debug(
|
|
618
|
+
f"Views {view_references} not found for {view_name}. Skipping."
|
|
619
|
+
)
|
|
620
|
+
continue
|
|
621
|
+
self._parsed_views[view_name] = sql_query
|
|
622
|
+
del self._unparsed_views[view_name]
|
|
623
|
+
yield from self._build_lineage_for_view(view_name, sql_query)
|
|
624
|
+
|
|
625
|
+
except Exception as err:
|
|
626
|
+
yield Either(
|
|
627
|
+
left=StackTraceError(
|
|
628
|
+
name="parse_unparsed_views",
|
|
629
|
+
error=f"Error parsing unparsed views: {err}",
|
|
630
|
+
stackTrace=traceback.format_exc(),
|
|
631
|
+
)
|
|
632
|
+
)
|
|
633
|
+
|
|
634
|
+
def _add_dependency_edge(self, view_name: str, view_references: List[str]):
|
|
635
|
+
"""
|
|
636
|
+
Add a dependency edge between the view and the derived reference
|
|
637
|
+
"""
|
|
638
|
+
for dependent_view_name in view_references:
|
|
639
|
+
self._derived_dependencies.add_edge(view_name, dependent_view_name)
|
|
640
|
+
|
|
560
641
|
def add_view_lineage(
|
|
561
642
|
self, view: LookMlView, explore: LookmlModelExplore
|
|
562
643
|
) -> Iterable[Either[AddLineageRequest]]:
|
|
@@ -589,6 +670,7 @@ class LookerSource(DashboardServiceSource):
|
|
|
589
670
|
for db_service_name in db_service_names or []:
|
|
590
671
|
dialect = self._get_db_dialect(db_service_name)
|
|
591
672
|
source_table_name = self._clean_table_name(sql_table_name, dialect)
|
|
673
|
+
self._parsed_views[view.name] = source_table_name
|
|
592
674
|
|
|
593
675
|
# View to the source is only there if we are informing the dbServiceNames
|
|
594
676
|
yield self.build_lineage_request(
|
|
@@ -601,20 +683,19 @@ class LookerSource(DashboardServiceSource):
|
|
|
601
683
|
sql_query = view.derived_table.sql
|
|
602
684
|
if not sql_query:
|
|
603
685
|
return
|
|
686
|
+
if find_derived_references(sql_query):
|
|
687
|
+
sql_query = self.replace_derived_references(sql_query)
|
|
688
|
+
# If we still have derived references, we cannot process the view
|
|
689
|
+
if view_references := find_derived_references(sql_query):
|
|
690
|
+
self._add_dependency_edge(view.name, view_references)
|
|
691
|
+
logger.warning(
|
|
692
|
+
f"Not all references are replaced for view [{view.name}]. Parsing it later."
|
|
693
|
+
)
|
|
694
|
+
return
|
|
604
695
|
logger.debug(f"Processing view [{view.name}] with SQL: \n[{sql_query}]")
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
self._get_db_dialect(db_service_name),
|
|
609
|
-
timeout_seconds=30,
|
|
610
|
-
)
|
|
611
|
-
if lineage_parser.source_tables:
|
|
612
|
-
for from_table_name in lineage_parser.source_tables:
|
|
613
|
-
yield self.build_lineage_request(
|
|
614
|
-
source=str(from_table_name),
|
|
615
|
-
db_service_name=db_service_name,
|
|
616
|
-
to_entity=self._view_data_model,
|
|
617
|
-
)
|
|
696
|
+
yield from self._build_lineage_for_view(view.name, sql_query)
|
|
697
|
+
if self._unparsed_views:
|
|
698
|
+
self.build_lineage_for_unparsed_views()
|
|
618
699
|
|
|
619
700
|
except Exception as err:
|
|
620
701
|
yield Either(
|
|
@@ -625,6 +706,27 @@ class LookerSource(DashboardServiceSource):
|
|
|
625
706
|
)
|
|
626
707
|
)
|
|
627
708
|
|
|
709
|
+
def _build_lineage_for_view(
|
|
710
|
+
self, view_name: str, sql_query: str
|
|
711
|
+
) -> Iterable[Either[AddLineageRequest]]:
|
|
712
|
+
"""
|
|
713
|
+
Parse the SQL query and build lineage for the view.
|
|
714
|
+
"""
|
|
715
|
+
for db_service_name in self.get_db_service_names() or []:
|
|
716
|
+
lineage_parser = LineageParser(
|
|
717
|
+
sql_query,
|
|
718
|
+
self._get_db_dialect(db_service_name),
|
|
719
|
+
timeout_seconds=30,
|
|
720
|
+
)
|
|
721
|
+
if lineage_parser.source_tables:
|
|
722
|
+
self._parsed_views[view_name] = sql_query
|
|
723
|
+
for from_table_name in lineage_parser.source_tables:
|
|
724
|
+
yield self.build_lineage_request(
|
|
725
|
+
source=str(from_table_name),
|
|
726
|
+
db_service_name=db_service_name,
|
|
727
|
+
to_entity=self._view_data_model,
|
|
728
|
+
)
|
|
729
|
+
|
|
628
730
|
def _get_db_dialect(self, db_service_name) -> Dialect:
|
|
629
731
|
db_service = self.metadata.get_by_name(DatabaseService, db_service_name)
|
|
630
732
|
return ConnectionTypeDialectMapper.dialect_of(
|
|
@@ -47,7 +47,10 @@ from metadata.utils.logger import utils_logger
|
|
|
47
47
|
|
|
48
48
|
logger = utils_logger()
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
GETGROUPS_DEFAULT_PARAMS = {"$top": "1", "$skip": "0"}
|
|
51
|
+
API_RESPONSE_MESSAGE_KEY = "message"
|
|
52
|
+
AUTH_TOKEN_MAX_RETRIES = 5
|
|
53
|
+
AUTH_TOKEN_RETRY_WAIT = 120
|
|
51
54
|
# Similar inner methods with mode client. That's fine.
|
|
52
55
|
# pylint: disable=duplicate-code
|
|
53
56
|
class PowerBiApiClient:
|
|
@@ -59,6 +62,9 @@ class PowerBiApiClient:
|
|
|
59
62
|
|
|
60
63
|
def __init__(self, config: PowerBIConnection):
|
|
61
64
|
self.config = config
|
|
65
|
+
self.pagination_entity_per_page = min(
|
|
66
|
+
100, self.config.pagination_entity_per_page
|
|
67
|
+
)
|
|
62
68
|
self.msal_client = msal.ConfidentialClientApplication(
|
|
63
69
|
client_id=self.config.clientId,
|
|
64
70
|
client_credential=self.config.clientSecret.get_secret_value(),
|
|
@@ -82,42 +88,84 @@ class PowerBiApiClient:
|
|
|
82
88
|
"""
|
|
83
89
|
logger.info("Generating PowerBi access token")
|
|
84
90
|
|
|
85
|
-
response_data = self.
|
|
86
|
-
scopes=self.config.scope, account=None
|
|
87
|
-
)
|
|
88
|
-
|
|
91
|
+
response_data = self.get_auth_token_from_cache()
|
|
89
92
|
if not response_data:
|
|
90
93
|
logger.info("Token does not exist in the cache. Getting a new token.")
|
|
91
|
-
response_data = self.
|
|
92
|
-
|
|
93
|
-
)
|
|
94
|
+
response_data = self.generate_new_auth_token()
|
|
95
|
+
response_data = response_data or {}
|
|
94
96
|
auth_response = PowerBiToken(**response_data)
|
|
95
97
|
if not auth_response.access_token:
|
|
96
98
|
raise InvalidSourceException(
|
|
97
|
-
"Failed to generate the PowerBi access token. Please check provided config"
|
|
99
|
+
f"Failed to generate the PowerBi access token. Please check provided config {response_data}"
|
|
98
100
|
)
|
|
99
101
|
|
|
100
102
|
logger.info("PowerBi Access Token generated successfully")
|
|
101
103
|
return auth_response.access_token, auth_response.expires_in
|
|
102
104
|
|
|
105
|
+
def generate_new_auth_token(self) -> Optional[dict]:
|
|
106
|
+
"""generate new auth token"""
|
|
107
|
+
retry = AUTH_TOKEN_MAX_RETRIES
|
|
108
|
+
while retry:
|
|
109
|
+
try:
|
|
110
|
+
response_data = self.msal_client.acquire_token_for_client(
|
|
111
|
+
scopes=self.config.scope
|
|
112
|
+
)
|
|
113
|
+
return response_data
|
|
114
|
+
except Exception as exc:
|
|
115
|
+
logger.debug(traceback.format_exc())
|
|
116
|
+
logger.warning(f"Error generating new auth token: {exc}")
|
|
117
|
+
# wait for time and retry
|
|
118
|
+
retry -= 1
|
|
119
|
+
if retry:
|
|
120
|
+
logger.warning(
|
|
121
|
+
f"Error generating new token: {exc}, "
|
|
122
|
+
f"sleep {AUTH_TOKEN_RETRY_WAIT} seconds retrying {retry} more times.."
|
|
123
|
+
)
|
|
124
|
+
sleep(AUTH_TOKEN_RETRY_WAIT)
|
|
125
|
+
else:
|
|
126
|
+
logger.warning(
|
|
127
|
+
"Could not generate new token after maximum retries, "
|
|
128
|
+
"Please check provided configs"
|
|
129
|
+
)
|
|
130
|
+
return None
|
|
131
|
+
|
|
132
|
+
def get_auth_token_from_cache(self) -> Optional[dict]:
|
|
133
|
+
"""fetch auth token from cache"""
|
|
134
|
+
retry = AUTH_TOKEN_MAX_RETRIES
|
|
135
|
+
while retry:
|
|
136
|
+
try:
|
|
137
|
+
response_data = self.msal_client.acquire_token_silent(
|
|
138
|
+
scopes=self.config.scope, account=None
|
|
139
|
+
)
|
|
140
|
+
return response_data
|
|
141
|
+
except Exception as exc:
|
|
142
|
+
logger.debug(traceback.format_exc())
|
|
143
|
+
logger.warning(f"Error getting token from cache: {exc}")
|
|
144
|
+
retry -= 1
|
|
145
|
+
if retry:
|
|
146
|
+
logger.warning(
|
|
147
|
+
f"Error getting token from cache: {exc}, "
|
|
148
|
+
f"sleep {AUTH_TOKEN_RETRY_WAIT} seconds retrying {retry} more times.."
|
|
149
|
+
)
|
|
150
|
+
sleep(AUTH_TOKEN_RETRY_WAIT)
|
|
151
|
+
else:
|
|
152
|
+
logger.warning(
|
|
153
|
+
"Could not get token from cache after maximum retries, "
|
|
154
|
+
"Please check provided configs"
|
|
155
|
+
)
|
|
156
|
+
return None
|
|
157
|
+
|
|
103
158
|
def fetch_dashboards(self) -> Optional[List[PowerBIDashboard]]:
|
|
104
159
|
"""Get dashboards method
|
|
105
160
|
Returns:
|
|
106
161
|
List[PowerBIDashboard]
|
|
107
162
|
"""
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
return self.fetch_all_org_dashboards(group_id=group.id)
|
|
115
|
-
|
|
116
|
-
except Exception as exc: # pylint: disable=broad-except
|
|
117
|
-
logger.debug(traceback.format_exc())
|
|
118
|
-
logger.warning(f"Error fetching dashboards: {exc}")
|
|
119
|
-
|
|
120
|
-
return None
|
|
163
|
+
if self.config.useAdminApis:
|
|
164
|
+
response_data = self.client.get("/myorg/admin/dashboards")
|
|
165
|
+
response = DashboardsResponse(**response_data)
|
|
166
|
+
return response.value
|
|
167
|
+
group = self.fetch_all_workspaces()[0]
|
|
168
|
+
return self.fetch_all_org_dashboards(group_id=group.id)
|
|
121
169
|
|
|
122
170
|
def fetch_all_org_dashboards(
|
|
123
171
|
self, group_id: str
|
|
@@ -205,6 +253,7 @@ class PowerBiApiClient:
|
|
|
205
253
|
|
|
206
254
|
return None
|
|
207
255
|
|
|
256
|
+
# pylint: disable=too-many-branches,too-many-statements
|
|
208
257
|
def fetch_all_workspaces(self) -> Optional[List[Group]]:
|
|
209
258
|
"""Method to fetch all powerbi workspace details
|
|
210
259
|
Returns:
|
|
@@ -213,28 +262,94 @@ class PowerBiApiClient:
|
|
|
213
262
|
try:
|
|
214
263
|
admin = "admin/" if self.config.useAdminApis else ""
|
|
215
264
|
api_url = f"/myorg/{admin}groups"
|
|
216
|
-
entities_per_page = self.
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
response =
|
|
220
|
-
|
|
265
|
+
entities_per_page = self.pagination_entity_per_page
|
|
266
|
+
failed_indexes = []
|
|
267
|
+
params_data = GETGROUPS_DEFAULT_PARAMS
|
|
268
|
+
response = self.client.get(api_url, data=params_data)
|
|
269
|
+
if (
|
|
270
|
+
not response
|
|
271
|
+
or API_RESPONSE_MESSAGE_KEY in response
|
|
272
|
+
or len(response) != len(GroupsResponse.__annotations__)
|
|
273
|
+
):
|
|
274
|
+
logger.warning("Error fetching workspaces between results: (0, 1)")
|
|
275
|
+
if response and response.get(API_RESPONSE_MESSAGE_KEY):
|
|
276
|
+
logger.warning(
|
|
277
|
+
"Error message from API response: "
|
|
278
|
+
f"{str(response.get(API_RESPONSE_MESSAGE_KEY))}"
|
|
279
|
+
)
|
|
280
|
+
failed_indexes.append(params_data)
|
|
281
|
+
count = 0
|
|
282
|
+
else:
|
|
283
|
+
try:
|
|
284
|
+
response = GroupsResponse(**response)
|
|
285
|
+
count = response.odata_count
|
|
286
|
+
except Exception as exc:
|
|
287
|
+
logger.warning(f"Error processing GetGroups response: {exc}")
|
|
288
|
+
count = 0
|
|
221
289
|
indexes = math.ceil(count / entities_per_page)
|
|
222
|
-
|
|
223
290
|
workspaces = []
|
|
224
291
|
for index in range(indexes):
|
|
225
292
|
params_data = {
|
|
226
293
|
"$top": str(entities_per_page),
|
|
227
294
|
"$skip": str(index * entities_per_page),
|
|
228
295
|
}
|
|
229
|
-
|
|
230
|
-
if
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
296
|
+
response = self.client.get(api_url, data=params_data)
|
|
297
|
+
if (
|
|
298
|
+
not response
|
|
299
|
+
or API_RESPONSE_MESSAGE_KEY in response
|
|
300
|
+
or len(response) != len(GroupsResponse.__annotations__)
|
|
301
|
+
):
|
|
302
|
+
index_range = (
|
|
303
|
+
int(params_data.get("$skip")),
|
|
304
|
+
int(params_data.get("$skip")) + int(params_data.get("$top")),
|
|
305
|
+
)
|
|
306
|
+
logger.warning(
|
|
307
|
+
f"Error fetching workspaces between results: {str(index_range)}"
|
|
234
308
|
)
|
|
309
|
+
if response and response.get(API_RESPONSE_MESSAGE_KEY):
|
|
310
|
+
logger.warning(
|
|
311
|
+
"Error message from API response: "
|
|
312
|
+
f"{str(response.get(API_RESPONSE_MESSAGE_KEY))}"
|
|
313
|
+
)
|
|
314
|
+
failed_indexes.append(params_data)
|
|
235
315
|
continue
|
|
236
|
-
|
|
237
|
-
|
|
316
|
+
try:
|
|
317
|
+
response = GroupsResponse(**response)
|
|
318
|
+
workspaces.extend(response.value)
|
|
319
|
+
except Exception as exc:
|
|
320
|
+
logger.warning(f"Error processing GetGroups response: {exc}")
|
|
321
|
+
|
|
322
|
+
if failed_indexes:
|
|
323
|
+
logger.info(
|
|
324
|
+
"Retrying one more time on failed indexes to get workspaces"
|
|
325
|
+
)
|
|
326
|
+
for params_data in failed_indexes:
|
|
327
|
+
response = self.client.get(api_url, data=params_data)
|
|
328
|
+
if (
|
|
329
|
+
not response
|
|
330
|
+
or API_RESPONSE_MESSAGE_KEY in response
|
|
331
|
+
or len(response) != len(GroupsResponse.__annotations__)
|
|
332
|
+
):
|
|
333
|
+
index_range = (
|
|
334
|
+
int(params_data.get("$skip")),
|
|
335
|
+
int(params_data.get("$skip"))
|
|
336
|
+
+ int(params_data.get("$top")),
|
|
337
|
+
)
|
|
338
|
+
logger.warning(
|
|
339
|
+
f"Workspaces between results {str(index_range)} "
|
|
340
|
+
"could not be fetched on multiple attempts"
|
|
341
|
+
)
|
|
342
|
+
if response and response.get(API_RESPONSE_MESSAGE_KEY):
|
|
343
|
+
logger.warning(
|
|
344
|
+
"Error message from API response: "
|
|
345
|
+
f"{str(response.get(API_RESPONSE_MESSAGE_KEY))}"
|
|
346
|
+
)
|
|
347
|
+
continue
|
|
348
|
+
try:
|
|
349
|
+
response = GroupsResponse(**response)
|
|
350
|
+
workspaces.extend(response.value)
|
|
351
|
+
except Exception as exc:
|
|
352
|
+
logger.warning(f"Error processing GetGroups response: {exc}")
|
|
238
353
|
return workspaces
|
|
239
354
|
except Exception as exc: # pylint: disable=broad-except
|
|
240
355
|
logger.debug(traceback.format_exc())
|
|
@@ -34,9 +34,11 @@ from metadata.generated.schema.entity.data.database import Database
|
|
|
34
34
|
from metadata.generated.schema.entity.data.databaseSchema import DatabaseSchema
|
|
35
35
|
from metadata.generated.schema.entity.data.storedProcedure import StoredProcedureCode
|
|
36
36
|
from metadata.generated.schema.entity.data.table import (
|
|
37
|
+
ConstraintType,
|
|
37
38
|
PartitionColumnDetails,
|
|
38
39
|
PartitionIntervalTypes,
|
|
39
40
|
Table,
|
|
41
|
+
TableConstraint,
|
|
40
42
|
TablePartition,
|
|
41
43
|
TableType,
|
|
42
44
|
)
|
|
@@ -96,6 +98,7 @@ from metadata.ingestion.source.database.life_cycle_query_mixin import (
|
|
|
96
98
|
from metadata.ingestion.source.database.multi_db_source import MultiDBSource
|
|
97
99
|
from metadata.utils import fqn
|
|
98
100
|
from metadata.utils.credentials import GOOGLE_CREDENTIALS
|
|
101
|
+
from metadata.utils.execution_time_tracker import calculate_execution_time
|
|
99
102
|
from metadata.utils.filters import filter_by_database, filter_by_schema
|
|
100
103
|
from metadata.utils.logger import ingestion_logger
|
|
101
104
|
from metadata.utils.sqlalchemy_utils import (
|
|
@@ -657,6 +660,42 @@ class BigquerySource(LifeCycleQueryMixin, CommonDbSourceService, MultiDBSource):
|
|
|
657
660
|
)
|
|
658
661
|
return None
|
|
659
662
|
|
|
663
|
+
@calculate_execution_time()
|
|
664
|
+
def update_table_constraints(
|
|
665
|
+
self,
|
|
666
|
+
table_name,
|
|
667
|
+
schema_name,
|
|
668
|
+
db_name,
|
|
669
|
+
table_constraints,
|
|
670
|
+
foreign_columns,
|
|
671
|
+
columns,
|
|
672
|
+
) -> List[TableConstraint]:
|
|
673
|
+
"""
|
|
674
|
+
From topology.
|
|
675
|
+
process the table constraints of all tables
|
|
676
|
+
"""
|
|
677
|
+
table_constraints = super().update_table_constraints(
|
|
678
|
+
table_name,
|
|
679
|
+
schema_name,
|
|
680
|
+
db_name,
|
|
681
|
+
table_constraints,
|
|
682
|
+
foreign_columns,
|
|
683
|
+
columns,
|
|
684
|
+
)
|
|
685
|
+
try:
|
|
686
|
+
table = self.client.get_table(fqn._build(db_name, schema_name, table_name))
|
|
687
|
+
if hasattr(table, "clustering_fields") and table.clustering_fields:
|
|
688
|
+
table_constraints.append(
|
|
689
|
+
TableConstraint(
|
|
690
|
+
constraintType=ConstraintType.CLUSTER_KEY,
|
|
691
|
+
columns=table.clustering_fields,
|
|
692
|
+
)
|
|
693
|
+
)
|
|
694
|
+
except Exception as exc:
|
|
695
|
+
logger.warning(f"Error getting clustering fields for {table_name}: {exc}")
|
|
696
|
+
logger.debug(traceback.format_exc())
|
|
697
|
+
return table_constraints
|
|
698
|
+
|
|
660
699
|
def get_table_partition_details(
|
|
661
700
|
self, table_name: str, schema_name: str, inspector: Inspector
|
|
662
701
|
) -> Tuple[bool, Optional[TablePartition]]:
|
|
@@ -38,9 +38,9 @@ from metadata.ingestion.connections.test_connections import (
|
|
|
38
38
|
test_connection_steps,
|
|
39
39
|
)
|
|
40
40
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
41
|
-
from metadata.ingestion.source.database.databricks.client import DatabricksClient
|
|
42
41
|
from metadata.ingestion.source.database.databricks.queries import (
|
|
43
42
|
DATABRICKS_GET_CATALOGS,
|
|
43
|
+
DATABRICKS_SQL_STATEMENT_TEST,
|
|
44
44
|
)
|
|
45
45
|
from metadata.utils.constants import THREE_MIN
|
|
46
46
|
from metadata.utils.logger import ingestion_logger
|
|
@@ -81,7 +81,6 @@ def test_connection(
|
|
|
81
81
|
Test connection. This can be executed either as part
|
|
82
82
|
of a metadata workflow or during an Automation Workflow
|
|
83
83
|
"""
|
|
84
|
-
client = DatabricksClient(service_connection)
|
|
85
84
|
|
|
86
85
|
def test_database_query(engine: Engine, statement: str):
|
|
87
86
|
"""
|
|
@@ -106,7 +105,13 @@ def test_connection(
|
|
|
106
105
|
engine=connection,
|
|
107
106
|
statement=DATABRICKS_GET_CATALOGS,
|
|
108
107
|
),
|
|
109
|
-
"GetQueries":
|
|
108
|
+
"GetQueries": partial(
|
|
109
|
+
test_database_query,
|
|
110
|
+
engine=connection,
|
|
111
|
+
statement=DATABRICKS_SQL_STATEMENT_TEST.format(
|
|
112
|
+
query_history=service_connection.queryHistoryTable
|
|
113
|
+
),
|
|
114
|
+
),
|
|
110
115
|
}
|
|
111
116
|
|
|
112
117
|
return test_connection_steps(
|