openmetadata-ingestion 1.6.7.0__py3-none-any.whl → 1.7.0.0rc1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of openmetadata-ingestion might be problematic. Click here for more details.
- metadata/automations/execute_runner.py +49 -0
- metadata/automations/extended_runner.py +13 -0
- metadata/automations/runner.py +34 -35
- metadata/data_quality/validations/table/base/tableCustomSQLQuery.py +11 -1
- metadata/examples/workflows/cassandra.yaml +35 -0
- metadata/examples/workflows/cockroach.yaml +24 -0
- metadata/examples/workflows/nifi.yaml +51 -0
- metadata/examples/workflows/opensearch.yaml +20 -0
- 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 +14 -4
- metadata/generated/schema/api/bulkAssets.py +1 -1
- metadata/generated/schema/api/classification/__init__.py +1 -1
- metadata/generated/schema/api/classification/createClassification.py +2 -2
- metadata/generated/schema/api/classification/createTag.py +2 -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/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 +5 -1
- metadata/generated/schema/api/data/createQuery.py +1 -1
- metadata/generated/schema/api/data/createQueryCostRecord.py +35 -0
- 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 +8 -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 +25 -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 +85 -0
- metadata/generated/schema/api/lineage/lineageDirection.py +12 -0
- metadata/generated/schema/api/lineage/nodeInformation.py +19 -0
- metadata/generated/schema/api/lineage/searchLineageRequest.py +45 -0
- metadata/generated/schema/api/lineage/searchLineageResult.py +46 -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/search/__init__.py +3 -0
- metadata/generated/schema/api/search/previewSearchRequest.py +47 -0
- metadata/generated/schema/api/services/__init__.py +1 -1
- metadata/generated/schema/api/services/createApiService.py +9 -2
- metadata/generated/schema/api/services/createDashboardService.py +9 -2
- metadata/generated/schema/api/services/createDatabaseService.py +9 -2
- metadata/generated/schema/api/services/createMessagingService.py +9 -2
- metadata/generated/schema/api/services/createMetadataService.py +9 -2
- metadata/generated/schema/api/services/createMlModelService.py +9 -2
- metadata/generated/schema/api/services/createPipelineService.py +9 -2
- metadata/generated/schema/api/services/createSearchService.py +9 -2
- metadata/generated/schema/api/services/createStorageService.py +9 -2
- metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
- metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
- metadata/generated/schema/api/setOwner.py +1 -1
- metadata/generated/schema/api/teams/__init__.py +1 -1
- metadata/generated/schema/api/teams/createPersona.py +1 -1
- metadata/generated/schema/api/teams/createRole.py +1 -1
- metadata/generated/schema/api/teams/createTeam.py +1 -1
- metadata/generated/schema/api/teams/createUser.py +1 -1
- metadata/generated/schema/api/tests/__init__.py +1 -1
- metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
- metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
- metadata/generated/schema/api/tests/createTestCase.py +1 -1
- metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
- metadata/generated/schema/api/tests/createTestCaseResult.py +1 -1
- metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
- metadata/generated/schema/api/tests/createTestSuite.py +1 -1
- metadata/generated/schema/api/voteRequest.py +1 -1
- metadata/generated/schema/auth/__init__.py +1 -1
- metadata/generated/schema/auth/basicAuth.py +1 -1
- metadata/generated/schema/auth/basicLoginRequest.py +1 -1
- metadata/generated/schema/auth/changePasswordRequest.py +1 -1
- metadata/generated/schema/auth/createPersonalToken.py +1 -1
- metadata/generated/schema/auth/emailRequest.py +1 -1
- metadata/generated/schema/auth/emailVerificationToken.py +1 -1
- metadata/generated/schema/auth/generateToken.py +1 -1
- metadata/generated/schema/auth/jwtAuth.py +1 -1
- metadata/generated/schema/auth/loginRequest.py +1 -1
- metadata/generated/schema/auth/logoutRequest.py +1 -1
- metadata/generated/schema/auth/passwordResetRequest.py +1 -1
- metadata/generated/schema/auth/passwordResetToken.py +1 -1
- metadata/generated/schema/auth/personalAccessToken.py +1 -1
- metadata/generated/schema/auth/refreshToken.py +1 -1
- metadata/generated/schema/auth/registrationRequest.py +1 -1
- metadata/generated/schema/auth/revokePersonalToken.py +1 -1
- metadata/generated/schema/auth/revokeToken.py +1 -1
- metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
- metadata/generated/schema/auth/ssoAuth.py +1 -1
- metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
- metadata/generated/schema/configuration/__init__.py +1 -1
- metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
- metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
- metadata/generated/schema/configuration/authConfig.py +1 -1
- metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
- metadata/generated/schema/configuration/authorizerConfiguration.py +4 -1
- metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
- metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
- metadata/generated/schema/configuration/elasticSearchConfiguration.py +55 -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 +21 -0
- metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
- metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
- metadata/generated/schema/configuration/searchSettings.py +428 -4
- 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 +8 -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 +15 -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 -2
- 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 +14 -1
- metadata/generated/schema/entity/applications/appExtension.py +1 -1
- metadata/generated/schema/entity/applications/appRunRecord.py +23 -4
- metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/applicationConfig.py +9 -3
- 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 +41 -0
- 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 +71 -0
- 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 +33 -0
- 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 +45 -0
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +13 -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/collateAIQualityAgentAppConfig.py +46 -0
- metadata/generated/schema/entity/applications/configuration/internal/collateAITierAgentAppConfig.py +46 -0
- metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +109 -2
- 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/dayOneExperienceAppConfig.py +48 -0
- metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/__init__.py +3 -0
- metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +3 -22
- metadata/generated/schema/entity/applications/configuration/private/internal/__init__.py +3 -0
- metadata/generated/schema/entity/applications/configuration/private/internal/collateAITierAgentAppPrivateConfig.py +24 -0
- metadata/generated/schema/entity/applications/configuration/private/limits.py +33 -0
- 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 +13 -1
- metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +13 -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 +15 -4
- 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 +5 -1
- metadata/generated/schema/entity/data/databaseSchema.py +7 -5
- 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 +14 -1
- metadata/generated/schema/entity/data/query.py +1 -1
- metadata/generated/schema/entity/data/queryCostRecord.py +47 -0
- metadata/generated/schema/entity/data/queryCostSearchResult.py +56 -0
- 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 +3 -1
- metadata/generated/schema/entity/data/table.py +8 -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 +8 -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 +8 -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 +11 -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 +7 -1
- metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +34 -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 +50 -2
- metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +35 -1
- metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/athenaConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +36 -1
- metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/cassandra/__init__.py +3 -0
- metadata/generated/schema/entity/services/connections/database/cassandra/cloudConfig.py +61 -0
- metadata/generated/schema/entity/services/connections/database/cassandraConnection.py +106 -0
- metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/cockroachConnection.py +136 -0
- 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 +26 -1
- metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/databricksConnection.py +37 -2
- 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 +26 -1
- metadata/generated/schema/entity/services/connections/database/db2Connection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +26 -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 +26 -1
- metadata/generated/schema/entity/services/connections/database/dorisConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/druidConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/exasolConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/glueConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/hiveConnection.py +26 -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 +26 -1
- metadata/generated/schema/entity/services/connections/database/impalaConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +42 -2
- metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +32 -2
- metadata/generated/schema/entity/services/connections/database/oracleConnection.py +32 -2
- metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/postgresConnection.py +37 -2
- metadata/generated/schema/entity/services/connections/database/prestoConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +41 -2
- metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +26 -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 +26 -1
- metadata/generated/schema/entity/services/connections/database/sasConnection.py +27 -1
- metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +58 -3
- metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/synapseConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/teradataConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/trinoConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +37 -2
- metadata/generated/schema/entity/services/connections/database/verticaConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +10 -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 +26 -1
- metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +26 -2
- metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +11 -1
- metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +11 -1
- metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +11 -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 +10 -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 +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +11 -1
- metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +10 -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 +10 -1
- metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +37 -29
- 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 +10 -1
- metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/storage/s3Connection.py +10 -1
- metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
- metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
- metadata/generated/schema/entity/services/dashboardService.py +8 -1
- metadata/generated/schema/entity/services/databaseService.py +14 -1
- metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +8 -1
- metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/reverseIngestionResponse.py +47 -0
- metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
- metadata/generated/schema/entity/services/messagingService.py +8 -1
- metadata/generated/schema/entity/services/metadataService.py +8 -1
- metadata/generated/schema/entity/services/mlmodelService.py +8 -1
- metadata/generated/schema/entity/services/pipelineService.py +8 -1
- metadata/generated/schema/entity/services/searchService.py +9 -2
- metadata/generated/schema/entity/services/serviceType.py +1 -1
- metadata/generated/schema/entity/services/storageService.py +8 -1
- metadata/generated/schema/entity/teams/__init__.py +1 -1
- metadata/generated/schema/entity/teams/persona.py +5 -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 +5 -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 +9 -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 +9 -2
- 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 +2 -2
- metadata/generated/schema/governance/workflows/elements/nodeSubType.py +4 -1
- metadata/generated/schema/governance/workflows/elements/nodeType.py +2 -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 +28 -8
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/createAndRunIngestionPipelineTask.py +86 -0
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/runAppTask.py +73 -0
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +27 -6
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +28 -7
- metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +9 -4
- metadata/generated/schema/governance/workflows/elements/nodes/gateway/__init__.py +3 -0
- metadata/generated/schema/governance/workflows/elements/nodes/gateway/parallelGateway.py +30 -0
- metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +9 -4
- metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +24 -7
- metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +8 -4
- metadata/generated/schema/governance/workflows/elements/triggers/noOpTrigger.py +20 -0
- metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +18 -5
- metadata/generated/schema/governance/workflows/workflowDefinition.py +30 -7
- metadata/generated/schema/governance/workflows/workflowInstance.py +11 -8
- metadata/generated/schema/governance/workflows/workflowInstanceState.py +4 -8
- 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 +4 -4
- metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +5 -1
- metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +18 -2
- metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +9 -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 +64 -0
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/__init__.py +3 -0
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/descriptionConfig.py +24 -0
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/ownerConfig.py +28 -0
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/tagsConfig.py +28 -0
- 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 +3 -1
- metadata/generated/schema/monitoring/__init__.py +1 -1
- metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
- metadata/generated/schema/search/__init__.py +3 -0
- metadata/generated/schema/search/searchRequest.py +106 -0
- 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 +42 -22
- metadata/generated/schema/security/credentials/gcpExternalAccount.py +2 -2
- 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 +4 -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/navigationItem.py +38 -0
- metadata/generated/schema/system/ui/page.py +23 -15
- metadata/generated/schema/system/ui/tab.py +36 -0
- metadata/generated/schema/system/ui/uiCustomization.py +45 -0
- 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 +4 -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 +37 -0
- 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 +6 -3
- metadata/generated/schema/type/entityLineage.py +27 -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 +4 -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 +4 -1
- metadata/generated/schema/type/tableUsageCount.py +18 -1
- metadata/generated/schema/type/tagLabel.py +1 -1
- metadata/generated/schema/type/usageDetails.py +1 -1
- metadata/generated/schema/type/usageRequest.py +1 -1
- metadata/generated/schema/type/votes.py +1 -1
- metadata/ingestion/api/topology_runner.py +3 -3
- metadata/ingestion/bulksink/metadata_usage.py +27 -6
- metadata/ingestion/lineage/masker.py +13 -2
- metadata/ingestion/models/custom_pydantic.py +44 -6
- metadata/ingestion/ometa/client.py +20 -0
- metadata/ingestion/ometa/mixins/domain_mixin.py +80 -0
- metadata/ingestion/ometa/mixins/es_mixin.py +42 -2
- metadata/ingestion/ometa/mixins/lineage_mixin.py +7 -7
- metadata/ingestion/ometa/mixins/patch_mixin.py +15 -5
- metadata/ingestion/ometa/mixins/pipeline_mixin.py +18 -0
- metadata/ingestion/ometa/mixins/query_mixin.py +43 -0
- metadata/ingestion/ometa/ometa_api.py +28 -3
- metadata/ingestion/ometa/routes.py +7 -0
- metadata/ingestion/ometa/utils.py +13 -0
- metadata/ingestion/processor/query_parser.py +1 -0
- metadata/ingestion/sink/metadata_rest.py +21 -1
- metadata/ingestion/source/dashboard/dashboard_service.py +9 -1
- metadata/ingestion/source/dashboard/domodashboard/metadata.py +3 -1
- metadata/ingestion/source/dashboard/lightdash/metadata.py +1 -1
- metadata/ingestion/source/dashboard/looker/metadata.py +8 -2
- metadata/ingestion/source/dashboard/metabase/client.py +65 -6
- metadata/ingestion/source/dashboard/metabase/metadata.py +88 -37
- metadata/ingestion/source/dashboard/metabase/models.py +2 -1
- metadata/ingestion/source/dashboard/microstrategy/metadata.py +3 -1
- metadata/ingestion/source/dashboard/mode/metadata.py +16 -9
- metadata/ingestion/source/dashboard/powerbi/client.py +89 -1
- metadata/ingestion/source/dashboard/powerbi/metadata.py +270 -258
- metadata/ingestion/source/dashboard/powerbi/models.py +25 -0
- metadata/ingestion/source/dashboard/qlikcloud/client.py +25 -2
- metadata/ingestion/source/dashboard/qlikcloud/metadata.py +69 -15
- metadata/ingestion/source/dashboard/qlikcloud/models.py +44 -1
- metadata/ingestion/source/dashboard/qliksense/metadata.py +26 -18
- metadata/ingestion/source/dashboard/quicksight/metadata.py +32 -29
- metadata/ingestion/source/dashboard/redash/metadata.py +12 -10
- metadata/ingestion/source/dashboard/sigma/metadata.py +12 -14
- metadata/ingestion/source/dashboard/superset/api_source.py +25 -26
- metadata/ingestion/source/dashboard/superset/db_source.py +22 -20
- metadata/ingestion/source/dashboard/superset/mixin.py +207 -53
- metadata/ingestion/source/dashboard/superset/models.py +3 -0
- metadata/ingestion/source/dashboard/superset/queries.py +7 -4
- metadata/ingestion/source/dashboard/superset/utils.py +36 -0
- metadata/ingestion/source/dashboard/tableau/client.py +56 -1
- metadata/ingestion/source/dashboard/tableau/metadata.py +243 -128
- metadata/ingestion/source/database/bigquery/helper.py +9 -1
- metadata/ingestion/source/database/bigquery/metadata.py +82 -10
- metadata/ingestion/source/database/bigquery/queries.py +2 -1
- metadata/ingestion/source/database/bigquery/query_parser.py +1 -0
- metadata/ingestion/source/database/bigtable/metadata.py +11 -3
- metadata/ingestion/source/database/cassandra/__init__.py +0 -0
- metadata/ingestion/source/database/cassandra/connection.py +138 -0
- metadata/ingestion/source/database/cassandra/helpers.py +100 -0
- metadata/ingestion/source/database/cassandra/metadata.py +138 -0
- metadata/ingestion/source/database/cassandra/queries.py +45 -0
- metadata/ingestion/source/database/cassandra/service_spec.py +10 -0
- metadata/ingestion/source/database/cockroach/__init__.py +0 -0
- metadata/ingestion/source/database/cockroach/connection.py +71 -0
- metadata/ingestion/source/database/cockroach/metadata.py +206 -0
- metadata/ingestion/source/database/cockroach/queries.py +90 -0
- metadata/ingestion/source/database/cockroach/service_spec.py +4 -0
- metadata/ingestion/source/database/common_db_source.py +9 -0
- metadata/ingestion/source/database/common_nosql_source.py +78 -29
- metadata/ingestion/source/database/common_pg_mappings.py +49 -0
- metadata/ingestion/source/database/couchbase/metadata.py +8 -2
- metadata/ingestion/source/database/databricks/metadata.py +8 -0
- metadata/ingestion/source/database/datalake/metadata.py +15 -9
- metadata/ingestion/source/database/db2/service_spec.py +4 -1
- metadata/ingestion/source/database/dbt/dbt_config.py +1 -0
- metadata/ingestion/source/database/dbt/dbt_utils.py +1 -1
- metadata/ingestion/source/database/dbt/metadata.py +5 -1
- metadata/ingestion/source/database/doris/metadata.py +7 -2
- metadata/ingestion/source/database/druid/service_spec.py +5 -1
- metadata/ingestion/source/database/dynamodb/metadata.py +6 -3
- metadata/ingestion/source/database/greenplum/metadata.py +6 -37
- metadata/ingestion/source/database/greenplum/service_spec.py +5 -1
- metadata/ingestion/source/database/hive/metastore_dialects/mysql/dialect.py +35 -13
- metadata/ingestion/source/database/hive/metastore_dialects/postgres/dialect.py +38 -14
- metadata/ingestion/source/database/hive/service_spec.py +5 -1
- metadata/ingestion/source/database/impala/service_spec.py +5 -1
- metadata/ingestion/source/database/life_cycle_query_mixin.py +11 -7
- metadata/ingestion/source/database/lineage_source.py +76 -2
- metadata/ingestion/source/database/mariadb/service_spec.py +9 -1
- metadata/ingestion/source/database/mongodb/metadata.py +8 -3
- metadata/ingestion/source/database/mssql/metadata.py +68 -2
- metadata/ingestion/source/database/mssql/queries.py +43 -0
- metadata/ingestion/source/database/mysql/utils.py +5 -3
- metadata/ingestion/source/database/oracle/connection.py +24 -2
- metadata/ingestion/source/database/oracle/metadata.py +36 -19
- metadata/ingestion/source/database/oracle/models.py +5 -4
- metadata/ingestion/source/database/oracle/queries.py +22 -1
- metadata/ingestion/source/database/pinotdb/service_spec.py +5 -1
- metadata/ingestion/source/database/postgres/metadata.py +32 -56
- metadata/ingestion/source/database/postgres/models.py +1 -0
- metadata/ingestion/source/database/postgres/queries.py +18 -1
- metadata/ingestion/source/database/query_parser_source.py +11 -6
- metadata/ingestion/source/database/sample_data.py +11 -0
- metadata/ingestion/source/database/sample_usage.py +2 -0
- metadata/ingestion/source/database/saphana/lineage.py +1 -1
- metadata/ingestion/source/database/singlestore/service_spec.py +6 -1
- metadata/ingestion/source/database/snowflake/connection.py +6 -0
- metadata/ingestion/source/database/snowflake/constants.py +48 -0
- metadata/ingestion/source/database/snowflake/metadata.py +114 -3
- metadata/ingestion/source/database/snowflake/models.py +3 -3
- metadata/ingestion/source/database/snowflake/queries.py +27 -1
- metadata/ingestion/source/database/snowflake/query_parser.py +2 -0
- metadata/ingestion/source/database/snowflake/utils.py +110 -26
- metadata/ingestion/source/database/sql_column_handler.py +95 -60
- metadata/ingestion/source/database/sqlite/service_spec.py +5 -1
- metadata/ingestion/source/database/teradata/service_spec.py +5 -1
- metadata/ingestion/source/database/trino/lineage.py +95 -0
- metadata/ingestion/source/database/unitycatalog/connection.py +23 -0
- metadata/ingestion/source/database/unitycatalog/lineage.py +2 -0
- metadata/ingestion/source/database/unitycatalog/metadata.py +2 -0
- metadata/ingestion/source/database/usage_source.py +2 -0
- metadata/ingestion/source/messaging/messaging_service.py +2 -0
- metadata/ingestion/source/metadata/alationsink/metadata.py +32 -18
- metadata/ingestion/source/metadata/amundsen/metadata.py +7 -4
- metadata/ingestion/source/metadata/atlas/metadata.py +2 -1
- metadata/ingestion/source/mlmodel/mlmodel_service.py +2 -0
- metadata/ingestion/source/pipeline/airflow/metadata.py +25 -0
- metadata/ingestion/source/pipeline/airflow/models.py +1 -0
- metadata/ingestion/source/pipeline/nifi/client.py +68 -74
- metadata/ingestion/source/pipeline/nifi/connection.py +1 -18
- metadata/ingestion/source/pipeline/openlineage/metadata.py +1 -0
- metadata/ingestion/source/pipeline/pipeline_service.py +121 -2
- metadata/ingestion/source/search/opensearch/connection.py +215 -0
- metadata/ingestion/source/search/opensearch/metadata.py +270 -0
- metadata/ingestion/source/search/opensearch/parser.py +71 -0
- metadata/ingestion/source/search/opensearch/service_spec.py +4 -0
- metadata/ingestion/source/search/search_service.py +2 -0
- metadata/ingestion/source/storage/storage_service.py +2 -0
- metadata/ingestion/stage/table_usage.py +53 -1
- metadata/profiler/interface/sqlalchemy/unity_catalog/sampler_interface.py +3 -4
- metadata/profiler/orm/converter/azuresql/converter.py +39 -0
- metadata/profiler/orm/converter/converter_registry.py +2 -0
- metadata/profiler/orm/functions/length.py +2 -0
- metadata/profiler/orm/functions/median.py +19 -0
- metadata/profiler/orm/functions/modulo.py +1 -0
- metadata/profiler/orm/functions/random_num.py +1 -0
- metadata/profiler/orm/functions/sum.py +1 -0
- metadata/profiler/orm/registry.py +2 -0
- metadata/profiler/processor/core.py +1 -0
- metadata/profiler/processor/metric_filter.py +1 -1
- metadata/profiler/source/database/base/profiler_source.py +1 -0
- metadata/profiler/source/fetcher/fetcher_strategy.py +4 -0
- metadata/sampler/config.py +1 -0
- metadata/sampler/models.py +3 -0
- metadata/sampler/nosql/sampler.py +4 -0
- metadata/sampler/pandas/sampler.py +1 -0
- metadata/sampler/partition.py +9 -2
- metadata/sampler/sampler_interface.py +0 -1
- metadata/sampler/sqlalchemy/azuresql/sampler.py +30 -3
- metadata/sampler/sqlalchemy/mssql/sampler.py +2 -1
- metadata/sampler/sqlalchemy/sampler.py +51 -42
- metadata/sampler/sqlalchemy/snowflake/sampler.py +2 -1
- metadata/sampler/sqlalchemy/trino/sampler.py +9 -8
- metadata/utils/constants.py +1 -0
- metadata/utils/credentials.py +25 -4
- metadata/utils/elasticsearch.py +4 -0
- metadata/utils/helpers.py +91 -0
- metadata/utils/logger.py +9 -0
- metadata/utils/ssl_manager.py +35 -0
- metadata/utils/tag_utils.py +72 -27
- metadata/workflow/classification.py +3 -0
- metadata/workflow/profiler.py +13 -5
- metadata/workflow/workflow_status_mixin.py +6 -0
- {openmetadata_ingestion-1.6.7.0.dist-info → openmetadata_ingestion-1.7.0.0rc1.dist-info}/METADATA +444 -381
- {openmetadata_ingestion-1.6.7.0.dist-info → openmetadata_ingestion-1.7.0.0rc1.dist-info}/RECORD +865 -796
- {openmetadata_ingestion-1.6.7.0.dist-info → openmetadata_ingestion-1.7.0.0rc1.dist-info}/LICENSE +0 -0
- {openmetadata_ingestion-1.6.7.0.dist-info → openmetadata_ingestion-1.7.0.0rc1.dist-info}/WHEEL +0 -0
- {openmetadata_ingestion-1.6.7.0.dist-info → openmetadata_ingestion-1.7.0.0rc1.dist-info}/entry_points.txt +0 -0
- {openmetadata_ingestion-1.6.7.0.dist-info → openmetadata_ingestion-1.7.0.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
9
|
# See the License for the specific language governing permissions and
|
|
10
10
|
# limitations under the License.
|
|
11
|
+
# pylint: disable=too-many-lines
|
|
11
12
|
"""
|
|
12
13
|
Bigquery source module
|
|
13
14
|
"""
|
|
@@ -51,6 +52,9 @@ from metadata.generated.schema.entity.services.ingestionPipelines.status import
|
|
|
51
52
|
from metadata.generated.schema.metadataIngestion.workflow import (
|
|
52
53
|
Source as WorkflowSource,
|
|
53
54
|
)
|
|
55
|
+
from metadata.generated.schema.security.credentials.gcpExternalAccount import (
|
|
56
|
+
GcpExternalAccount,
|
|
57
|
+
)
|
|
54
58
|
from metadata.generated.schema.security.credentials.gcpValues import (
|
|
55
59
|
GcpCredentialsValues,
|
|
56
60
|
)
|
|
@@ -100,6 +104,7 @@ from metadata.utils import fqn
|
|
|
100
104
|
from metadata.utils.credentials import GOOGLE_CREDENTIALS
|
|
101
105
|
from metadata.utils.execution_time_tracker import calculate_execution_time
|
|
102
106
|
from metadata.utils.filters import filter_by_database, filter_by_schema
|
|
107
|
+
from metadata.utils.helpers import retry_with_docker_host
|
|
103
108
|
from metadata.utils.logger import ingestion_logger
|
|
104
109
|
from metadata.utils.sqlalchemy_utils import (
|
|
105
110
|
get_all_table_ddls,
|
|
@@ -165,12 +170,17 @@ def get_columns(bq_schema):
|
|
|
165
170
|
"precision": field.precision,
|
|
166
171
|
"scale": field.scale,
|
|
167
172
|
"max_length": field.max_length,
|
|
168
|
-
"system_data_type":
|
|
169
|
-
|
|
170
|
-
|
|
173
|
+
"system_data_type": (
|
|
174
|
+
_array_sys_data_type_repr(col_type)
|
|
175
|
+
if str(col_type) == "ARRAY"
|
|
176
|
+
else str(col_type)
|
|
177
|
+
),
|
|
171
178
|
"is_complex": is_complex_type(str(col_type)),
|
|
172
179
|
"policy_tags": None,
|
|
173
180
|
}
|
|
181
|
+
if getattr(field, "fields", None):
|
|
182
|
+
# Nested Columns available
|
|
183
|
+
col_obj["children"] = get_columns(field.fields)
|
|
174
184
|
try:
|
|
175
185
|
if field.policy_tags:
|
|
176
186
|
policy_tag_name = field.policy_tags.names[0]
|
|
@@ -226,6 +236,7 @@ class BigquerySource(LifeCycleQueryMixin, CommonDbSourceService, MultiDBSource):
|
|
|
226
236
|
Database metadata from Bigquery Source
|
|
227
237
|
"""
|
|
228
238
|
|
|
239
|
+
@retry_with_docker_host()
|
|
229
240
|
def __init__(self, config, metadata, incremental_configuration: IncrementalConfig):
|
|
230
241
|
# Check if the engine is established before setting project IDs
|
|
231
242
|
# This ensures that we don't try to set project IDs when there is no engine
|
|
@@ -238,7 +249,7 @@ class BigquerySource(LifeCycleQueryMixin, CommonDbSourceService, MultiDBSource):
|
|
|
238
249
|
# Upon invoking the set_project_id method, we retrieve a comprehensive
|
|
239
250
|
# list of all project IDs. Subsequently, after the invokation,
|
|
240
251
|
# we proceed to test the connections for each of these project IDs
|
|
241
|
-
self.project_ids = self.set_project_id()
|
|
252
|
+
self.project_ids = self.set_project_id(self.service_connection)
|
|
242
253
|
self.life_cycle_query = BIGQUERY_LIFE_CYCLE_QUERY
|
|
243
254
|
self.test_connection = self._test_connection
|
|
244
255
|
self.test_connection()
|
|
@@ -271,9 +282,62 @@ class BigquerySource(LifeCycleQueryMixin, CommonDbSourceService, MultiDBSource):
|
|
|
271
282
|
return cls(config, metadata, incremental_config)
|
|
272
283
|
|
|
273
284
|
@staticmethod
|
|
274
|
-
def set_project_id(
|
|
275
|
-
|
|
276
|
-
|
|
285
|
+
def set_project_id(
|
|
286
|
+
service_connection: Optional[BigQueryConnection] = None,
|
|
287
|
+
) -> List[str]:
|
|
288
|
+
"""
|
|
289
|
+
Get the project ID from the service connection or ADC.
|
|
290
|
+
|
|
291
|
+
Args:
|
|
292
|
+
service_connection: Optional BigQuery connection config
|
|
293
|
+
|
|
294
|
+
Returns:
|
|
295
|
+
List of project IDs to scan
|
|
296
|
+
|
|
297
|
+
Raises:
|
|
298
|
+
InvalidSourceException: If unable to get project IDs from either config or ADC
|
|
299
|
+
"""
|
|
300
|
+
try:
|
|
301
|
+
|
|
302
|
+
# TODO: Add support for fetching project ids from resource manager
|
|
303
|
+
# Bigquery resource manager for fetching project ids
|
|
304
|
+
# "google-cloud-resource-manager~=1.14.1",
|
|
305
|
+
# "grpc-google-iam-v1~=0.14.0",
|
|
306
|
+
|
|
307
|
+
# First check if project ID is configured in service connection
|
|
308
|
+
if (
|
|
309
|
+
service_connection
|
|
310
|
+
and hasattr(service_connection, "credentials")
|
|
311
|
+
and hasattr(service_connection.credentials, "gcpConfig")
|
|
312
|
+
):
|
|
313
|
+
gcp_config = service_connection.credentials.gcpConfig
|
|
314
|
+
try:
|
|
315
|
+
# Allow for multiple project IDs in the service connection
|
|
316
|
+
if not isinstance(gcp_config, GcpExternalAccount) and getattr(
|
|
317
|
+
gcp_config, "projectId", None
|
|
318
|
+
):
|
|
319
|
+
if isinstance(gcp_config.projectId.root, list):
|
|
320
|
+
return gcp_config.projectId.root
|
|
321
|
+
return [gcp_config.projectId.root]
|
|
322
|
+
except Exception as exc:
|
|
323
|
+
logger.warning(f"Error getting project ID, falling back: {exc}")
|
|
324
|
+
|
|
325
|
+
# Fallback to ADC default project
|
|
326
|
+
try:
|
|
327
|
+
_, project_id = auth.default()
|
|
328
|
+
if project_id:
|
|
329
|
+
return [project_id] if isinstance(project_id, str) else project_id
|
|
330
|
+
except Exception as exc:
|
|
331
|
+
logger.warning(f"Error getting default project from ADC: {exc}")
|
|
332
|
+
|
|
333
|
+
raise InvalidSourceException(
|
|
334
|
+
"Unable to get project IDs. Either configure project IDs in the connection or "
|
|
335
|
+
"ensure Application Default Credentials are set up correctly."
|
|
336
|
+
)
|
|
337
|
+
|
|
338
|
+
except Exception as exc:
|
|
339
|
+
logger.debug(traceback.format_exc())
|
|
340
|
+
raise InvalidSourceException(f"Error setting BigQuery project IDs: {exc}")
|
|
277
341
|
|
|
278
342
|
def _test_connection(self) -> None:
|
|
279
343
|
for project_id in self.project_ids:
|
|
@@ -367,6 +431,8 @@ class BigquerySource(LifeCycleQueryMixin, CommonDbSourceService, MultiDBSource):
|
|
|
367
431
|
tag_description="Bigquery Dataset Label",
|
|
368
432
|
classification_description="BigQuery Dataset Classification",
|
|
369
433
|
include_tags=self.source_config.includeTags,
|
|
434
|
+
metadata=self.metadata,
|
|
435
|
+
system_tags=True,
|
|
370
436
|
)
|
|
371
437
|
# Fetching policy tags on the column level
|
|
372
438
|
list_project_ids = [self.context.get().database]
|
|
@@ -387,6 +453,8 @@ class BigquerySource(LifeCycleQueryMixin, CommonDbSourceService, MultiDBSource):
|
|
|
387
453
|
tag_description="Bigquery Policy Tag",
|
|
388
454
|
classification_description="BigQuery Policy Classification",
|
|
389
455
|
include_tags=self.source_config.includeTags,
|
|
456
|
+
metadata=self.metadata,
|
|
457
|
+
system_tags=True,
|
|
390
458
|
)
|
|
391
459
|
except Exception as exc:
|
|
392
460
|
yield Either(
|
|
@@ -529,6 +597,8 @@ class BigquerySource(LifeCycleQueryMixin, CommonDbSourceService, MultiDBSource):
|
|
|
529
597
|
tag_description="Bigquery Table Label",
|
|
530
598
|
classification_description="BigQuery Table Classification",
|
|
531
599
|
include_tags=self.source_config.includeTags,
|
|
600
|
+
metadata=self.metadata,
|
|
601
|
+
system_tags=True,
|
|
532
602
|
)
|
|
533
603
|
|
|
534
604
|
def get_tag_labels(self, table_name: str) -> Optional[List[TagLabel]]:
|
|
@@ -751,9 +821,11 @@ class BigquerySource(LifeCycleQueryMixin, CommonDbSourceService, MultiDBSource):
|
|
|
751
821
|
return True, TablePartition(
|
|
752
822
|
columns=[
|
|
753
823
|
PartitionColumnDetails(
|
|
754
|
-
columnName=
|
|
755
|
-
|
|
756
|
-
|
|
824
|
+
columnName=(
|
|
825
|
+
"_PARTITIONTIME"
|
|
826
|
+
if table.time_partitioning.type_ == "HOUR"
|
|
827
|
+
else "_PARTITIONDATE"
|
|
828
|
+
),
|
|
757
829
|
interval=str(table.time_partitioning.type_),
|
|
758
830
|
intervalType=PartitionIntervalTypes.INGESTION_TIME,
|
|
759
831
|
)
|
|
@@ -32,7 +32,8 @@ BIGQUERY_STATEMENT = textwrap.dedent(
|
|
|
32
32
|
end_time,
|
|
33
33
|
query as query_text,
|
|
34
34
|
null as schema_name,
|
|
35
|
-
total_slot_ms as duration
|
|
35
|
+
total_slot_ms as duration,
|
|
36
|
+
(total_bytes_billed / POWER(2, 40)) * {cost_per_tib} as cost
|
|
36
37
|
FROM `region-{region}`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
|
|
37
38
|
WHERE creation_time BETWEEN "{start_time}" AND "{end_time}"
|
|
38
39
|
{filters}
|
|
@@ -36,7 +36,10 @@ from metadata.ingestion.source.database.bigtable.models import Row
|
|
|
36
36
|
from metadata.ingestion.source.database.common_nosql_source import (
|
|
37
37
|
SAMPLE_SIZE as GLOBAL_SAMPLE_SIZE,
|
|
38
38
|
)
|
|
39
|
-
from metadata.ingestion.source.database.common_nosql_source import
|
|
39
|
+
from metadata.ingestion.source.database.common_nosql_source import (
|
|
40
|
+
CommonNoSQLSource,
|
|
41
|
+
TableNameAndType,
|
|
42
|
+
)
|
|
40
43
|
from metadata.ingestion.source.database.multi_db_source import MultiDBSource
|
|
41
44
|
from metadata.utils.logger import ingestion_logger
|
|
42
45
|
|
|
@@ -114,7 +117,9 @@ class BigtableSource(CommonNoSQLSource, MultiDBSource):
|
|
|
114
117
|
)
|
|
115
118
|
raise
|
|
116
119
|
|
|
117
|
-
def
|
|
120
|
+
def query_table_names_and_types(
|
|
121
|
+
self, schema_name: str
|
|
122
|
+
) -> Iterable[TableNameAndType]:
|
|
118
123
|
project_id = self.context.get().database
|
|
119
124
|
try:
|
|
120
125
|
instance = self._get_instance(project_id, schema_name)
|
|
@@ -127,7 +132,10 @@ class BigtableSource(CommonNoSQLSource, MultiDBSource):
|
|
|
127
132
|
[project_id, instance.instance_id, table.table_id],
|
|
128
133
|
table,
|
|
129
134
|
)
|
|
130
|
-
return
|
|
135
|
+
return [
|
|
136
|
+
TableNameAndType(name=table)
|
|
137
|
+
for table in self.tables[project_id][schema_name].keys()
|
|
138
|
+
]
|
|
131
139
|
except Exception as err:
|
|
132
140
|
logger.debug(traceback.format_exc())
|
|
133
141
|
# add context to the error message
|
|
File without changes
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Copyright 2021 Collate
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
# you may not use this file except in compliance with the License.
|
|
4
|
+
# You may obtain a copy of the License at
|
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
7
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
8
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
+
# See the License for the specific language governing permissions and
|
|
10
|
+
# limitations under the License.
|
|
11
|
+
|
|
12
|
+
"""
|
|
13
|
+
Source connection handler
|
|
14
|
+
"""
|
|
15
|
+
from functools import partial
|
|
16
|
+
from typing import Optional
|
|
17
|
+
|
|
18
|
+
from cassandra.auth import PlainTextAuthProvider
|
|
19
|
+
from cassandra.cluster import (
|
|
20
|
+
EXEC_PROFILE_DEFAULT,
|
|
21
|
+
Cluster,
|
|
22
|
+
ExecutionProfile,
|
|
23
|
+
ProtocolVersion,
|
|
24
|
+
)
|
|
25
|
+
from cassandra.cluster import Session as CassandraSession
|
|
26
|
+
from pydantic import BaseModel
|
|
27
|
+
|
|
28
|
+
from metadata.generated.schema.entity.automations.workflow import (
|
|
29
|
+
Workflow as AutomationWorkflow,
|
|
30
|
+
)
|
|
31
|
+
from metadata.generated.schema.entity.services.connections.database.cassandraConnection import (
|
|
32
|
+
CassandraConnection,
|
|
33
|
+
)
|
|
34
|
+
from metadata.generated.schema.entity.services.connections.testConnectionResult import (
|
|
35
|
+
TestConnectionResult,
|
|
36
|
+
)
|
|
37
|
+
from metadata.ingestion.connections.builders import init_empty_connection_arguments
|
|
38
|
+
from metadata.ingestion.connections.test_connections import test_connection_steps
|
|
39
|
+
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
40
|
+
from metadata.ingestion.source.database.cassandra.queries import (
|
|
41
|
+
CASSANDRA_GET_KEYSPACE_MATERIALIZED_VIEWS,
|
|
42
|
+
CASSANDRA_GET_KEYSPACE_TABLES,
|
|
43
|
+
CASSANDRA_GET_KEYSPACES,
|
|
44
|
+
CASSANDRA_GET_RELEASE_VERSION,
|
|
45
|
+
)
|
|
46
|
+
from metadata.utils.constants import THREE_MIN
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def get_connection(connection: CassandraConnection):
|
|
50
|
+
"""
|
|
51
|
+
Create connection
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
cluster_config = {}
|
|
55
|
+
if hasattr(connection.authType, "cloudConfig"):
|
|
56
|
+
cloud_config = connection.authType.cloudConfig
|
|
57
|
+
cluster_cloud_config = {
|
|
58
|
+
"connect_timeout": cloud_config.connectTimeout,
|
|
59
|
+
"use_default_tempdir": True,
|
|
60
|
+
"secure_connect_bundle": cloud_config.secureConnectBundle,
|
|
61
|
+
}
|
|
62
|
+
profile = ExecutionProfile(request_timeout=cloud_config.requestTimeout)
|
|
63
|
+
auth_provider = PlainTextAuthProvider("token", cloud_config.token)
|
|
64
|
+
cluster_config.update(
|
|
65
|
+
{
|
|
66
|
+
"cloud": cluster_cloud_config,
|
|
67
|
+
"auth_provider": auth_provider,
|
|
68
|
+
"execution_profiles": {EXEC_PROFILE_DEFAULT: profile},
|
|
69
|
+
"protocol_version": ProtocolVersion.V4,
|
|
70
|
+
}
|
|
71
|
+
)
|
|
72
|
+
else:
|
|
73
|
+
host, port = connection.hostPort.split(":")
|
|
74
|
+
cluster_config.update({"contact_points": [host], "port": port})
|
|
75
|
+
if connection.username and getattr(connection.authType, "password", None):
|
|
76
|
+
cluster_config["auth_provider"] = PlainTextAuthProvider(
|
|
77
|
+
username=connection.username,
|
|
78
|
+
password=connection.authType.password.get_secret_value(),
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
connection.connectionArguments = (
|
|
82
|
+
connection.connectionArguments or init_empty_connection_arguments()
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
cluster = Cluster(
|
|
86
|
+
**cluster_config,
|
|
87
|
+
ssl_context=connection.connectionArguments.root.get("ssl_context"),
|
|
88
|
+
)
|
|
89
|
+
session = cluster.connect()
|
|
90
|
+
|
|
91
|
+
return session
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def test_connection(
|
|
95
|
+
metadata: OpenMetadata,
|
|
96
|
+
session: CassandraSession,
|
|
97
|
+
service_connection: CassandraConnection,
|
|
98
|
+
automation_workflow: Optional[AutomationWorkflow] = None,
|
|
99
|
+
timeout_seconds: Optional[int] = THREE_MIN,
|
|
100
|
+
) -> TestConnectionResult:
|
|
101
|
+
"""
|
|
102
|
+
Test connection. This can be executed either as part
|
|
103
|
+
of a metadata workflow or during an Automation Workflow
|
|
104
|
+
"""
|
|
105
|
+
|
|
106
|
+
class SchemaHolder(BaseModel):
|
|
107
|
+
schema: Optional[str] = None
|
|
108
|
+
|
|
109
|
+
holder = SchemaHolder()
|
|
110
|
+
|
|
111
|
+
def test_get_release_version(session: CassandraConnection):
|
|
112
|
+
session.execute(CASSANDRA_GET_RELEASE_VERSION)
|
|
113
|
+
|
|
114
|
+
def test_get_schemas(session: CassandraSession, holder_: SchemaHolder):
|
|
115
|
+
for keyspace in session.execute(CASSANDRA_GET_KEYSPACES):
|
|
116
|
+
holder_.schema = keyspace.keyspace_name
|
|
117
|
+
break
|
|
118
|
+
|
|
119
|
+
def test_get_tables(session: CassandraSession, holder_: SchemaHolder):
|
|
120
|
+
session.execute(CASSANDRA_GET_KEYSPACE_TABLES, [holder_.schema])
|
|
121
|
+
|
|
122
|
+
def test_get_views(session: CassandraSession, holder_: SchemaHolder):
|
|
123
|
+
session.execute(CASSANDRA_GET_KEYSPACE_MATERIALIZED_VIEWS, [holder_.schema])
|
|
124
|
+
|
|
125
|
+
test_fn = {
|
|
126
|
+
"CheckAccess": partial(test_get_release_version, session),
|
|
127
|
+
"GetSchemas": partial(test_get_schemas, session, holder),
|
|
128
|
+
"GetTables": partial(test_get_tables, session, holder),
|
|
129
|
+
"GetViews": partial(test_get_views, session, holder),
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return test_connection_steps(
|
|
133
|
+
metadata=metadata,
|
|
134
|
+
test_fn=test_fn,
|
|
135
|
+
service_type=service_connection.type.value,
|
|
136
|
+
automation_workflow=automation_workflow,
|
|
137
|
+
timeout_seconds=timeout_seconds,
|
|
138
|
+
)
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Copyright 2021 Collate
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
# you may not use this file except in compliance with the License.
|
|
4
|
+
# You may obtain a copy of the License at
|
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
7
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
8
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
+
# See the License for the specific language governing permissions and
|
|
10
|
+
# limitations under the License.
|
|
11
|
+
"""
|
|
12
|
+
Cassandra source helpers.
|
|
13
|
+
"""
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
from metadata.generated.schema.entity.data.table import Column, DataType
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class CassandraColumnParser:
|
|
20
|
+
"""
|
|
21
|
+
Responsible for containing the logic to parse a column from Cassandra to OpenMetadata
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
datatype_mapping = {
|
|
25
|
+
"ascii": DataType.STRING,
|
|
26
|
+
"bigint": DataType.BIGINT,
|
|
27
|
+
"blob": DataType.BLOB,
|
|
28
|
+
"boolean": DataType.BOOLEAN,
|
|
29
|
+
"date": DataType.DATE,
|
|
30
|
+
"decimal": DataType.DECIMAL,
|
|
31
|
+
"double": DataType.DOUBLE,
|
|
32
|
+
"duration": DataType.INTERVAL,
|
|
33
|
+
"float": DataType.FLOAT,
|
|
34
|
+
"uuid": DataType.UUID,
|
|
35
|
+
"inet": DataType.INET,
|
|
36
|
+
"int": DataType.INT,
|
|
37
|
+
"list": DataType.ARRAY,
|
|
38
|
+
"map": DataType.MAP,
|
|
39
|
+
"set": DataType.SET,
|
|
40
|
+
"smallint": DataType.SMALLINT,
|
|
41
|
+
"text": DataType.TEXT,
|
|
42
|
+
"time": DataType.TIME,
|
|
43
|
+
"timestamp": DataType.TIMESTAMP,
|
|
44
|
+
"timeuuid": DataType.UUID,
|
|
45
|
+
"tinyint": DataType.TINYINT,
|
|
46
|
+
"tuple": DataType.TUPLE,
|
|
47
|
+
"varint": DataType.STRING,
|
|
48
|
+
"struct": DataType.STRUCT,
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@classmethod
|
|
52
|
+
def parse(cls, field) -> Column:
|
|
53
|
+
"""
|
|
54
|
+
Parses a Cassandra table column into an OpenMetadata column.
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
data_type = None
|
|
58
|
+
array_data_type = None
|
|
59
|
+
raw_data_type = ""
|
|
60
|
+
|
|
61
|
+
for letter in field.type:
|
|
62
|
+
if letter == "<":
|
|
63
|
+
if raw_data_type in ("", "frozen"):
|
|
64
|
+
raw_data_type = ""
|
|
65
|
+
continue
|
|
66
|
+
|
|
67
|
+
if not data_type:
|
|
68
|
+
data_type = cls.datatype_mapping.get(
|
|
69
|
+
raw_data_type.lower(), DataType.UNKNOWN
|
|
70
|
+
)
|
|
71
|
+
elif not array_data_type:
|
|
72
|
+
array_data_type = cls.datatype_mapping.get(
|
|
73
|
+
raw_data_type.lower(), DataType.UNKNOWN
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
raw_data_type = ""
|
|
77
|
+
if data_type != DataType.ARRAY or array_data_type:
|
|
78
|
+
break
|
|
79
|
+
|
|
80
|
+
elif letter == ">":
|
|
81
|
+
if not array_data_type and data_type:
|
|
82
|
+
array_data_type = cls.datatype_mapping.get(
|
|
83
|
+
raw_data_type.lower(), DataType.UNKNOWN
|
|
84
|
+
)
|
|
85
|
+
break
|
|
86
|
+
|
|
87
|
+
else:
|
|
88
|
+
raw_data_type += letter
|
|
89
|
+
|
|
90
|
+
if not data_type:
|
|
91
|
+
data_type = cls.datatype_mapping.get(field.type.lower(), DataType.UNKNOWN)
|
|
92
|
+
|
|
93
|
+
column_def = {
|
|
94
|
+
"name": field.column_name,
|
|
95
|
+
"dataTypeDisplay": field.type,
|
|
96
|
+
"dataType": data_type,
|
|
97
|
+
"arrayDataType": array_data_type,
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return Column(**column_def)
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Copyright 2021 Collate
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
# you may not use this file except in compliance with the License.
|
|
4
|
+
# You may obtain a copy of the License at
|
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
7
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
8
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
+
# See the License for the specific language governing permissions and
|
|
10
|
+
# limitations under the License.
|
|
11
|
+
"""
|
|
12
|
+
Cassandra source methods.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
import traceback
|
|
16
|
+
from typing import Iterable, List, Optional
|
|
17
|
+
|
|
18
|
+
from metadata.generated.schema.entity.data.table import Column, TableType
|
|
19
|
+
from metadata.generated.schema.entity.services.connections.database.cassandraConnection import (
|
|
20
|
+
CassandraConnection,
|
|
21
|
+
)
|
|
22
|
+
from metadata.generated.schema.metadataIngestion.workflow import (
|
|
23
|
+
Source as WorkflowSource,
|
|
24
|
+
)
|
|
25
|
+
from metadata.ingestion.api.steps import InvalidSourceException
|
|
26
|
+
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
27
|
+
from metadata.ingestion.source.database.cassandra.helpers import CassandraColumnParser
|
|
28
|
+
from metadata.ingestion.source.database.cassandra.queries import (
|
|
29
|
+
CASSANDRA_GET_KEYSPACE_MATERIALIZED_VIEWS,
|
|
30
|
+
CASSANDRA_GET_KEYSPACE_TABLES,
|
|
31
|
+
CASSANDRA_GET_KEYSPACES,
|
|
32
|
+
CASSANDRA_GET_TABLE_COLUMNS,
|
|
33
|
+
)
|
|
34
|
+
from metadata.ingestion.source.database.common_nosql_source import (
|
|
35
|
+
CommonNoSQLSource,
|
|
36
|
+
TableNameAndType,
|
|
37
|
+
)
|
|
38
|
+
from metadata.utils.logger import ingestion_logger
|
|
39
|
+
|
|
40
|
+
logger = ingestion_logger()
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class CassandraSource(CommonNoSQLSource):
|
|
44
|
+
"""
|
|
45
|
+
Implements the necessary methods to extract
|
|
46
|
+
Database metadata from Dynamo Source
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
def __init__(self, config: WorkflowSource, metadata: OpenMetadata):
|
|
50
|
+
super().__init__(config, metadata)
|
|
51
|
+
self.cassandra = self.connection_obj
|
|
52
|
+
|
|
53
|
+
@classmethod
|
|
54
|
+
def create(
|
|
55
|
+
cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
|
|
56
|
+
):
|
|
57
|
+
config: WorkflowSource = WorkflowSource.model_validate(config_dict)
|
|
58
|
+
connection: CassandraConnection = config.serviceConnection.root.config
|
|
59
|
+
if not isinstance(connection, CassandraConnection):
|
|
60
|
+
raise InvalidSourceException(
|
|
61
|
+
f"Expected CassandraConnection, but got {connection}"
|
|
62
|
+
)
|
|
63
|
+
return cls(config, metadata)
|
|
64
|
+
|
|
65
|
+
def get_schema_name_list(self) -> List[str]:
|
|
66
|
+
"""
|
|
67
|
+
Method to get list of schema names available within NoSQL db
|
|
68
|
+
need to be overridden by sources
|
|
69
|
+
"""
|
|
70
|
+
schema_names = []
|
|
71
|
+
try:
|
|
72
|
+
schema_names = [
|
|
73
|
+
row.keyspace_name
|
|
74
|
+
for row in self.cassandra.execute(CASSANDRA_GET_KEYSPACES)
|
|
75
|
+
]
|
|
76
|
+
except Exception as exp:
|
|
77
|
+
logger.debug(f"Failed to list keyspace names: {exp}")
|
|
78
|
+
logger.debug(traceback.format_exc())
|
|
79
|
+
|
|
80
|
+
return schema_names
|
|
81
|
+
|
|
82
|
+
def query_table_names_and_types(
|
|
83
|
+
self, schema_name: str
|
|
84
|
+
) -> Iterable[TableNameAndType]:
|
|
85
|
+
"""
|
|
86
|
+
Method to get list of table names available within schema db
|
|
87
|
+
need to be overridden by sources
|
|
88
|
+
"""
|
|
89
|
+
tables = []
|
|
90
|
+
try:
|
|
91
|
+
tables = [
|
|
92
|
+
TableNameAndType(name=row.table_name)
|
|
93
|
+
for row in self.cassandra.execute(
|
|
94
|
+
CASSANDRA_GET_KEYSPACE_TABLES, [schema_name]
|
|
95
|
+
)
|
|
96
|
+
]
|
|
97
|
+
except Exception as exp:
|
|
98
|
+
logger.debug(
|
|
99
|
+
f"Failed to list table names for schema [{schema_name}]: {exp}"
|
|
100
|
+
)
|
|
101
|
+
logger.debug(traceback.format_exc())
|
|
102
|
+
|
|
103
|
+
return tables
|
|
104
|
+
|
|
105
|
+
def query_view_names_and_types(
|
|
106
|
+
self, schema_name: str
|
|
107
|
+
) -> Iterable[TableNameAndType]:
|
|
108
|
+
"""
|
|
109
|
+
Method to get list of materialized view names available within schema db
|
|
110
|
+
need to be overridden by sources
|
|
111
|
+
"""
|
|
112
|
+
materialized_views = []
|
|
113
|
+
try:
|
|
114
|
+
materialized_views = [
|
|
115
|
+
TableNameAndType(name=row.view_name, type_=TableType.MaterializedView)
|
|
116
|
+
for row in self.cassandra.execute(
|
|
117
|
+
CASSANDRA_GET_KEYSPACE_MATERIALIZED_VIEWS, [schema_name]
|
|
118
|
+
)
|
|
119
|
+
]
|
|
120
|
+
except Exception as exp:
|
|
121
|
+
logger.debug(
|
|
122
|
+
f"Failed to list materialized view names for schema [{schema_name}]: {exp}"
|
|
123
|
+
)
|
|
124
|
+
logger.debug(traceback.format_exc())
|
|
125
|
+
|
|
126
|
+
return materialized_views
|
|
127
|
+
|
|
128
|
+
def get_table_columns(self, schema_name: str, table_name: str) -> List[Column]:
|
|
129
|
+
try:
|
|
130
|
+
data = self.cassandra.execute(
|
|
131
|
+
CASSANDRA_GET_TABLE_COLUMNS, [schema_name, table_name]
|
|
132
|
+
)
|
|
133
|
+
return [CassandraColumnParser.parse(field=field) for field in data]
|
|
134
|
+
except Exception as opf:
|
|
135
|
+
logger.debug(f"Failed to read table [{table_name}]: {opf}")
|
|
136
|
+
logger.debug(traceback.format_exc())
|
|
137
|
+
|
|
138
|
+
return []
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Copyright 2021 Collate
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
# you may not use this file except in compliance with the License.
|
|
4
|
+
# You may obtain a copy of the License at
|
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
7
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
8
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
+
# See the License for the specific language governing permissions and
|
|
10
|
+
# limitations under the License.
|
|
11
|
+
"""
|
|
12
|
+
SQL Queries used during ingestion
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
import textwrap
|
|
16
|
+
|
|
17
|
+
CASSANDRA_GET_RELEASE_VERSION = textwrap.dedent(
|
|
18
|
+
"""
|
|
19
|
+
SELECT release_version FROM system.local;
|
|
20
|
+
"""
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
CASSANDRA_GET_KEYSPACES = textwrap.dedent(
|
|
24
|
+
"""
|
|
25
|
+
SELECT * FROM system_schema.keyspaces
|
|
26
|
+
"""
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
CASSANDRA_GET_KEYSPACE_TABLES = textwrap.dedent(
|
|
30
|
+
"""
|
|
31
|
+
SELECT * FROM system_schema.tables WHERE keyspace_name = %s
|
|
32
|
+
"""
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
CASSANDRA_GET_KEYSPACE_MATERIALIZED_VIEWS = textwrap.dedent(
|
|
36
|
+
"""
|
|
37
|
+
SELECT * FROM system_schema.views WHERE keyspace_name = %s
|
|
38
|
+
"""
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
CASSANDRA_GET_TABLE_COLUMNS = textwrap.dedent(
|
|
42
|
+
"""
|
|
43
|
+
SELECT * FROM system_schema.columns WHERE keyspace_name = %s AND table_name = %s
|
|
44
|
+
"""
|
|
45
|
+
)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from metadata.ingestion.source.database.cassandra.metadata import CassandraSource
|
|
2
|
+
from metadata.profiler.interface.nosql.profiler_interface import NoSQLProfilerInterface
|
|
3
|
+
from metadata.sampler.nosql.sampler import NoSQLSampler
|
|
4
|
+
from metadata.utils.service_spec.default import DefaultDatabaseSpec
|
|
5
|
+
|
|
6
|
+
ServiceSpec = DefaultDatabaseSpec(
|
|
7
|
+
metadata_source_class=CassandraSource,
|
|
8
|
+
profiler_class=NoSQLProfilerInterface,
|
|
9
|
+
sampler_class=NoSQLSampler,
|
|
10
|
+
)
|
|
File without changes
|