openmetadata-ingestion 1.8.7.2__py3-none-any.whl → 1.8.8.1__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/createDataContract.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/createQueryCostRecord.py +1 -1
- metadata/generated/schema/api/data/createSearchIndex.py +1 -1
- metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
- metadata/generated/schema/api/data/createTable.py +1 -1
- metadata/generated/schema/api/data/createTableProfile.py +1 -1
- metadata/generated/schema/api/data/createTopic.py +1 -1
- metadata/generated/schema/api/data/loadGlossary.py +1 -1
- metadata/generated/schema/api/data/restoreEntity.py +1 -1
- metadata/generated/schema/api/data/updateColumn.py +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/lineage/esLineageData.py +1 -1
- metadata/generated/schema/api/lineage/lineageDirection.py +1 -1
- metadata/generated/schema/api/lineage/nodeInformation.py +1 -1
- metadata/generated/schema/api/lineage/searchLineageRequest.py +1 -1
- metadata/generated/schema/api/lineage/searchLineageResult.py +1 -1
- metadata/generated/schema/api/mcp/__init__.py +1 -1
- metadata/generated/schema/api/mcp/mcpToolDefinition.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/scim/__init__.py +1 -1
- metadata/generated/schema/api/scim/scimGroup.py +1 -1
- metadata/generated/schema/api/scim/scimPatchOp.py +1 -1
- metadata/generated/schema/api/scim/scimUser.py +1 -1
- metadata/generated/schema/api/search/__init__.py +1 -1
- metadata/generated/schema/api/search/previewSearchRequest.py +1 -1
- metadata/generated/schema/api/services/__init__.py +1 -1
- metadata/generated/schema/api/services/createApiService.py +1 -1
- metadata/generated/schema/api/services/createDashboardService.py +1 -1
- metadata/generated/schema/api/services/createDatabaseService.py +1 -1
- metadata/generated/schema/api/services/createMessagingService.py +1 -1
- metadata/generated/schema/api/services/createMetadataService.py +1 -1
- metadata/generated/schema/api/services/createMlModelService.py +1 -1
- metadata/generated/schema/api/services/createPipelineService.py +1 -1
- metadata/generated/schema/api/services/createSearchService.py +1 -1
- metadata/generated/schema/api/services/createStorageService.py +1 -1
- metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
- metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
- metadata/generated/schema/api/setOwner.py +1 -1
- metadata/generated/schema/api/teams/__init__.py +1 -1
- metadata/generated/schema/api/teams/createPersona.py +1 -1
- metadata/generated/schema/api/teams/createRole.py +1 -1
- metadata/generated/schema/api/teams/createTeam.py +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/validateGlossaryTagsRequest.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/supportToken.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/openMetadataBaseUrlConfiguration.py +1 -1
- metadata/generated/schema/configuration/opertionalConfiguration.py +1 -1
- metadata/generated/schema/configuration/opsConfig.py +1 -1
- metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
- metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
- metadata/generated/schema/configuration/searchSettings.py +1 -1
- metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
- metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
- metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
- metadata/generated/schema/configuration/themeConfiguration.py +1 -1
- metadata/generated/schema/configuration/uiThemePreference.py +1 -1
- metadata/generated/schema/configuration/workflowSettings.py +1 -1
- metadata/generated/schema/dataInsight/__init__.py +1 -1
- metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
- metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
- metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -1
- metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
- metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
- metadata/generated/schema/dataInsight/custom/lineChart.py +1 -1
- metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
- metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
- metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
- metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
- metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
- metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
- metadata/generated/schema/dataInsight/type/__init__.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
- metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
- metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
- metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
- metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
- metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
- metadata/generated/schema/email/__init__.py +1 -1
- metadata/generated/schema/email/emailRequest.py +1 -1
- metadata/generated/schema/email/emailTemplate.py +1 -1
- metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
- metadata/generated/schema/email/smtpSettings.py +1 -1
- metadata/generated/schema/email/templateValidationReponse.py +1 -1
- metadata/generated/schema/entity/__init__.py +1 -1
- metadata/generated/schema/entity/applications/__init__.py +1 -1
- metadata/generated/schema/entity/applications/app.py +1 -1
- metadata/generated/schema/entity/applications/appExtension.py +1 -1
- metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
- metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addCustomProperties.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addDataProductAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addTestCaseAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +20 -2
- metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/propagationStopConfig.py +44 -0
- metadata/generated/schema/entity/applications/configuration/external/automator/removeCustomPropertiesAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDataProductAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTestCaseAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/autoPilotAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/collateAIQualityAgentAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/collateAITierAgentAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataRetentionConfiguration.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/helloPipelinesConfiguration.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/internal/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/internal/collateAITierAgentAppPrivateConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/limits.py +1 -1
- metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
- metadata/generated/schema/entity/applications/jobStatus.py +1 -1
- metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
- metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
- metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
- metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
- metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
- metadata/generated/schema/entity/automations/__init__.py +1 -1
- metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
- metadata/generated/schema/entity/automations/workflow.py +1 -1
- metadata/generated/schema/entity/bot.py +1 -1
- metadata/generated/schema/entity/classification/__init__.py +1 -1
- metadata/generated/schema/entity/classification/classification.py +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/dataContract.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/queryCostRecord.py +1 -1
- metadata/generated/schema/entity/data/queryCostSearchResult.py +1 -1
- metadata/generated/schema/entity/data/report.py +1 -1
- metadata/generated/schema/entity/data/searchIndex.py +1 -1
- metadata/generated/schema/entity/data/storedProcedure.py +1 -1
- metadata/generated/schema/entity/data/table.py +4 -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/dashboard/thoughtSpotConnection.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/cassandra/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/cassandra/cloudConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/cassandraConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/cockroachConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
- metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/exasolConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/ssasConnection.py +47 -0
- metadata/generated/schema/entity/services/connections/database/synapseConnection.py +27 -2
- 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 +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/matillion/matillionETL.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/nifi/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/nifi/basicAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/nifi/clientCertificateAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/ssisConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/wherescapeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
- metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
- metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
- metadata/generated/schema/entity/services/dashboardService.py +1 -1
- metadata/generated/schema/entity/services/databaseService.py +4 -1
- metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/reverseIngestionResponse.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
- metadata/generated/schema/entity/services/messagingService.py +1 -1
- metadata/generated/schema/entity/services/metadataService.py +1 -1
- metadata/generated/schema/entity/services/mlmodelService.py +1 -1
- metadata/generated/schema/entity/services/pipelineService.py +1 -1
- metadata/generated/schema/entity/services/searchService.py +1 -1
- metadata/generated/schema/entity/services/serviceType.py +1 -1
- metadata/generated/schema/entity/services/storageService.py +1 -1
- metadata/generated/schema/entity/teams/__init__.py +1 -1
- metadata/generated/schema/entity/teams/persona.py +1 -1
- metadata/generated/schema/entity/teams/role.py +1 -1
- metadata/generated/schema/entity/teams/team.py +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/createAndRunIngestionPipelineTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/runAppTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/gateway/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/gateway/parallelGateway.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/noOpTrigger.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +1 -1
- metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
- metadata/generated/schema/governance/workflows/workflowInstance.py +1 -1
- metadata/generated/schema/governance/workflows/workflowInstanceState.py +1 -1
- metadata/generated/schema/jobs/__init__.py +1 -1
- metadata/generated/schema/jobs/backgroundJob.py +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 +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
- metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/reverseIngestionPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/descriptionConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/ownerConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/tagsConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
- metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/workflow.py +1 -1
- metadata/generated/schema/monitoring/__init__.py +1 -1
- metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
- metadata/generated/schema/scim/__init__.py +1 -1
- metadata/generated/schema/scim/scimConfiguration.py +1 -1
- metadata/generated/schema/search/__init__.py +1 -1
- metadata/generated/schema/search/aggregationRequest.py +1 -1
- metadata/generated/schema/search/searchRequest.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/navigationItem.py +1 -1
- metadata/generated/schema/system/ui/page.py +1 -1
- metadata/generated/schema/system/ui/tab.py +1 -1
- metadata/generated/schema/system/ui/uiCustomization.py +1 -1
- metadata/generated/schema/system/validationResponse.py +1 -1
- metadata/generated/schema/tests/__init__.py +1 -1
- metadata/generated/schema/tests/assigned.py +1 -1
- metadata/generated/schema/tests/basic.py +1 -1
- metadata/generated/schema/tests/customMetric.py +1 -1
- metadata/generated/schema/tests/dataQualityReport.py +1 -1
- metadata/generated/schema/tests/resolved.py +1 -1
- metadata/generated/schema/tests/testCase.py +1 -1
- metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
- metadata/generated/schema/tests/testDefinition.py +1 -1
- metadata/generated/schema/tests/testSuite.py +1 -1
- metadata/generated/schema/type/__init__.py +1 -1
- metadata/generated/schema/type/apiSchema.py +1 -1
- metadata/generated/schema/type/assetCertification.py +1 -1
- metadata/generated/schema/type/auditLog.py +1 -1
- metadata/generated/schema/type/basic.py +1 -1
- metadata/generated/schema/type/bulkOperationResult.py +1 -1
- metadata/generated/schema/type/changeEvent.py +1 -1
- metadata/generated/schema/type/changeEventType.py +1 -1
- metadata/generated/schema/type/changeSummaryMap.py +1 -1
- metadata/generated/schema/type/collectionDescriptor.py +1 -1
- metadata/generated/schema/type/csvDocumentation.py +1 -1
- metadata/generated/schema/type/csvErrorType.py +1 -1
- metadata/generated/schema/type/csvFile.py +1 -1
- metadata/generated/schema/type/csvImportResult.py +1 -1
- metadata/generated/schema/type/customProperties/__init__.py +1 -1
- metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
- metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
- metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
- metadata/generated/schema/type/customProperty.py +1 -1
- metadata/generated/schema/type/dailyCount.py +1 -1
- metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
- metadata/generated/schema/type/entityHierarchy.py +1 -1
- metadata/generated/schema/type/entityHistory.py +1 -1
- metadata/generated/schema/type/entityLineage.py +1 -1
- metadata/generated/schema/type/entityReference.py +1 -1
- metadata/generated/schema/type/entityReferenceList.py +1 -1
- metadata/generated/schema/type/entityRelationship.py +1 -1
- metadata/generated/schema/type/entityUsage.py +1 -1
- metadata/generated/schema/type/filterPattern.py +1 -1
- metadata/generated/schema/type/function.py +1 -1
- metadata/generated/schema/type/include.py +1 -1
- metadata/generated/schema/type/jdbcConnection.py +1 -1
- metadata/generated/schema/type/lifeCycle.py +1 -1
- metadata/generated/schema/type/paging.py +1 -1
- metadata/generated/schema/type/profile.py +1 -1
- metadata/generated/schema/type/queryParserData.py +1 -1
- metadata/generated/schema/type/reaction.py +1 -1
- metadata/generated/schema/type/schedule.py +1 -1
- metadata/generated/schema/type/schema.py +1 -1
- metadata/generated/schema/type/tableQuery.py +1 -1
- metadata/generated/schema/type/tableUsageCount.py +1 -1
- metadata/generated/schema/type/tagLabel.py +1 -1
- metadata/generated/schema/type/usageDetails.py +1 -1
- metadata/generated/schema/type/usageRequest.py +1 -1
- metadata/generated/schema/type/votes.py +1 -1
- metadata/ingestion/source/dashboard/tableau/client.py +11 -0
- metadata/ingestion/source/dashboard/tableau/connection.py +38 -9
- metadata/ingestion/source/dashboard/tableau/metadata.py +1 -1
- metadata/ingestion/source/database/athena/metadata.py +25 -2
- metadata/ingestion/source/database/athena/utils.py +63 -6
- metadata/ingestion/source/database/column_type_parser.py +7 -2
- metadata/ingestion/source/database/databricks/connection.py +36 -8
- metadata/ingestion/source/database/glue/metadata.py +76 -1
- metadata/ingestion/source/database/unitycatalog/connection.py +10 -28
- metadata/ingestion/source/database/unitycatalog/metadata.py +5 -4
- metadata/ingestion/source/database/unitycatalog/queries.py +1 -37
- metadata/ingestion/source/database/unitycatalog/query_parser.py +0 -4
- metadata/ingestion/source/database/unitycatalog/usage.py +35 -21
- metadata/profiler/interface/sqlalchemy/databricks/profiler_interface.py +6 -0
- metadata/profiler/interface/sqlalchemy/profiler_interface.py +5 -1
- metadata/readers/dataframe/base.py +2 -0
- metadata/readers/dataframe/parquet.py +202 -15
- metadata/sampler/sqlalchemy/sampler.py +60 -64
- metadata/sampler/sqlalchemy/snowflake/sampler.py +2 -1
- {openmetadata_ingestion-1.8.7.2.dist-info → openmetadata_ingestion-1.8.8.1.dist-info}/METADATA +519 -519
- {openmetadata_ingestion-1.8.7.2.dist-info → openmetadata_ingestion-1.8.8.1.dist-info}/RECORD +733 -731
- {openmetadata_ingestion-1.8.7.2.dist-info → openmetadata_ingestion-1.8.8.1.dist-info}/LICENSE +0 -0
- {openmetadata_ingestion-1.8.7.2.dist-info → openmetadata_ingestion-1.8.8.1.dist-info}/WHEEL +0 -0
- {openmetadata_ingestion-1.8.7.2.dist-info → openmetadata_ingestion-1.8.8.1.dist-info}/entry_points.txt +0 -0
- {openmetadata_ingestion-1.8.7.2.dist-info → openmetadata_ingestion-1.8.8.1.dist-info}/top_level.txt +0 -0
|
@@ -17,7 +17,6 @@ from typing import Optional
|
|
|
17
17
|
|
|
18
18
|
from databricks.sdk import WorkspaceClient
|
|
19
19
|
from sqlalchemy.engine import Engine
|
|
20
|
-
from sqlalchemy.exc import DatabaseError
|
|
21
20
|
|
|
22
21
|
from metadata.generated.schema.entity.automations.workflow import (
|
|
23
22
|
Workflow as AutomationWorkflow,
|
|
@@ -35,13 +34,13 @@ from metadata.ingestion.connections.builders import (
|
|
|
35
34
|
)
|
|
36
35
|
from metadata.ingestion.connections.test_connections import test_connection_steps
|
|
37
36
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
37
|
+
from metadata.ingestion.source.database.unitycatalog.client import UnityCatalogClient
|
|
38
38
|
from metadata.ingestion.source.database.unitycatalog.models import DatabricksTable
|
|
39
39
|
from metadata.ingestion.source.database.unitycatalog.queries import (
|
|
40
40
|
UNITY_CATALOG_GET_ALL_SCHEMA_TAGS,
|
|
41
41
|
UNITY_CATALOG_GET_ALL_TABLE_COLUMNS_TAGS,
|
|
42
42
|
UNITY_CATALOG_GET_ALL_TABLE_TAGS,
|
|
43
43
|
UNITY_CATALOG_GET_CATALOGS_TAGS,
|
|
44
|
-
UNITY_CATALOG_SQL_STATEMENT_TEST,
|
|
45
44
|
)
|
|
46
45
|
from metadata.utils.constants import THREE_MIN
|
|
47
46
|
from metadata.utils.db_utils import get_host_from_host_port
|
|
@@ -94,33 +93,20 @@ def test_connection(
|
|
|
94
93
|
Test connection. This can be executed either as part
|
|
95
94
|
of a metadata workflow or during an Automation Workflow
|
|
96
95
|
"""
|
|
96
|
+
client = UnityCatalogClient(service_connection)
|
|
97
97
|
table_obj = DatabricksTable()
|
|
98
|
-
engine = get_sqlalchemy_connection(service_connection)
|
|
99
|
-
|
|
100
|
-
def test_database_query(engine: Engine, statement: str):
|
|
101
|
-
"""
|
|
102
|
-
Method used to execute the given query and fetch a result
|
|
103
|
-
to test if user has access to the tables specified
|
|
104
|
-
in the sql statement
|
|
105
|
-
"""
|
|
106
|
-
try:
|
|
107
|
-
connection = engine.connect()
|
|
108
|
-
connection.execute(statement).fetchone()
|
|
109
|
-
except DatabaseError as soe:
|
|
110
|
-
logger.debug(f"Failed to fetch catalogs due to: {soe}")
|
|
111
98
|
|
|
112
99
|
def get_catalogs(connection: WorkspaceClient, table_obj: DatabricksTable):
|
|
113
100
|
for catalog in connection.catalogs.list():
|
|
114
|
-
|
|
115
|
-
|
|
101
|
+
if catalog.name != "__databricks_internal":
|
|
102
|
+
table_obj.catalog_name = catalog.name
|
|
103
|
+
return
|
|
116
104
|
|
|
117
105
|
def get_schemas(connection: WorkspaceClient, table_obj: DatabricksTable):
|
|
118
|
-
for
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
table_obj.catalog_name = catalog.name
|
|
123
|
-
return
|
|
106
|
+
for schema in connection.schemas.list(catalog_name=table_obj.catalog_name):
|
|
107
|
+
if schema.name:
|
|
108
|
+
table_obj.schema_name = schema.name
|
|
109
|
+
return
|
|
124
110
|
|
|
125
111
|
def get_tables(connection: WorkspaceClient, table_obj: DatabricksTable):
|
|
126
112
|
if table_obj.catalog_name and table_obj.schema_name:
|
|
@@ -162,11 +148,7 @@ def test_connection(
|
|
|
162
148
|
"GetSchemas": partial(get_schemas, connection, table_obj),
|
|
163
149
|
"GetTables": partial(get_tables, connection, table_obj),
|
|
164
150
|
"GetViews": partial(get_tables, connection, table_obj),
|
|
165
|
-
"GetQueries":
|
|
166
|
-
test_database_query,
|
|
167
|
-
engine=engine,
|
|
168
|
-
statement=UNITY_CATALOG_SQL_STATEMENT_TEST,
|
|
169
|
-
),
|
|
151
|
+
"GetQueries": client.test_query_api_access,
|
|
170
152
|
"GetTags": partial(get_tags, service_connection, table_obj),
|
|
171
153
|
}
|
|
172
154
|
|
|
@@ -92,7 +92,7 @@ logger = ingestion_logger()
|
|
|
92
92
|
UNITY_CATALOG_TAG = "UNITY CATALOG TAG"
|
|
93
93
|
UNITY_CATALOG_TAG_CLASSIFICATION = "UNITY CATALOG TAG CLASSIFICATION"
|
|
94
94
|
|
|
95
|
-
|
|
95
|
+
# pylint: disable=protected-access
|
|
96
96
|
class UnitycatalogSource(
|
|
97
97
|
ExternalTableLineageMixin, DatabaseServiceSource, MultiDBSource
|
|
98
98
|
):
|
|
@@ -306,6 +306,8 @@ class UnitycatalogSource(
|
|
|
306
306
|
if table.table_type:
|
|
307
307
|
if table.table_type.value.lower() == TableType.View.value.lower():
|
|
308
308
|
table_type: TableType = TableType.View
|
|
309
|
+
if table.table_type.value.lower() == "materialized_view":
|
|
310
|
+
table_type: TableType = TableType.MaterializedView
|
|
309
311
|
elif (
|
|
310
312
|
table.table_type.value.lower()
|
|
311
313
|
== TableType.External.value.lower()
|
|
@@ -427,7 +429,6 @@ class UnitycatalogSource(
|
|
|
427
429
|
)
|
|
428
430
|
if referred_table_fqn:
|
|
429
431
|
for parent_column in column.parent_columns:
|
|
430
|
-
# pylint: disable=protected-access
|
|
431
432
|
col_fqn = fqn._build(referred_table_fqn, parent_column, quote=False)
|
|
432
433
|
if col_fqn:
|
|
433
434
|
referred_column_fqns.append(FullyQualifiedEntityName(col_fqn))
|
|
@@ -563,7 +564,7 @@ class UnitycatalogSource(
|
|
|
563
564
|
yield from get_ometa_tag_and_classification(
|
|
564
565
|
tag_fqn=FullyQualifiedEntityName(
|
|
565
566
|
fqn._build(*tag_fqn_builder(tag))
|
|
566
|
-
),
|
|
567
|
+
),
|
|
567
568
|
tags=[tag.tag_value],
|
|
568
569
|
classification_name=tag.tag_name,
|
|
569
570
|
tag_description=UNITY_CATALOG_TAG,
|
|
@@ -617,7 +618,7 @@ class UnitycatalogSource(
|
|
|
617
618
|
yield from get_ometa_tag_and_classification(
|
|
618
619
|
tag_fqn=FullyQualifiedEntityName(
|
|
619
620
|
fqn._build(*tag_fqn_builder(tag))
|
|
620
|
-
),
|
|
621
|
+
),
|
|
621
622
|
tags=[tag.tag_value],
|
|
622
623
|
classification_name=tag.tag_name,
|
|
623
624
|
tag_description=UNITY_CATALOG_TAG,
|
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
# Copyright 2025 Collate
|
|
2
|
-
# Licensed under the Collate Community License, Version 1.0 (the "License");
|
|
3
|
-
# you may not use this file except in compliance with the License.
|
|
4
|
-
# You may obtain a copy of the License at
|
|
5
|
-
# https://github.com/open-metadata/OpenMetadata/blob/main/ingestion/LICENSE
|
|
6
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
7
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
8
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
-
# See the License for the specific language governing permissions and
|
|
10
|
-
# limitations under the License.
|
|
11
1
|
"""
|
|
12
|
-
SQL
|
|
2
|
+
SQL queries for Unity Catalog
|
|
13
3
|
"""
|
|
14
4
|
|
|
15
|
-
import textwrap
|
|
16
|
-
|
|
17
5
|
UNITY_CATALOG_GET_CATALOGS_TAGS = """
|
|
18
6
|
SELECT * FROM `{database}`.information_schema.catalog_tags;
|
|
19
7
|
"""
|
|
@@ -29,27 +17,3 @@ SELECT * FROM `{database}`.information_schema.table_tags WHERE schema_name = '{s
|
|
|
29
17
|
UNITY_CATALOG_GET_ALL_TABLE_COLUMNS_TAGS = """
|
|
30
18
|
SELECT * FROM `{database}`.information_schema.column_tags WHERE schema_name = '{schema}';
|
|
31
19
|
"""
|
|
32
|
-
|
|
33
|
-
UNITY_CATALOG_SQL_STATEMENT = textwrap.dedent(
|
|
34
|
-
"""
|
|
35
|
-
SELECT
|
|
36
|
-
statement_type AS query_type,
|
|
37
|
-
statement_text AS query_text,
|
|
38
|
-
executed_by AS user_name,
|
|
39
|
-
start_time AS start_time,
|
|
40
|
-
null AS database_name,
|
|
41
|
-
null AS schema_name,
|
|
42
|
-
end_time AS end_time,
|
|
43
|
-
total_duration_ms/1000 AS duration
|
|
44
|
-
from system.query.history
|
|
45
|
-
WHERE statement_text NOT LIKE '/* {{"app": "OpenMetadata", %%}} */%%'
|
|
46
|
-
AND statement_text NOT LIKE '/* {{"app": "dbt", %%}} */%%'
|
|
47
|
-
AND start_time between to_timestamp('{start_time}') and to_timestamp('{end_time}')
|
|
48
|
-
{filters}
|
|
49
|
-
LIMIT {result_limit}
|
|
50
|
-
"""
|
|
51
|
-
)
|
|
52
|
-
|
|
53
|
-
UNITY_CATALOG_SQL_STATEMENT_TEST = """
|
|
54
|
-
SELECT statement_text from system.query.history LIMIT 1
|
|
55
|
-
"""
|
|
@@ -27,9 +27,6 @@ from metadata.ingestion.source.database.databricks.query_parser import (
|
|
|
27
27
|
)
|
|
28
28
|
from metadata.ingestion.source.database.query_parser_source import QueryParserSource
|
|
29
29
|
from metadata.ingestion.source.database.unitycatalog.client import UnityCatalogClient
|
|
30
|
-
from metadata.ingestion.source.database.unitycatalog.connection import (
|
|
31
|
-
get_sqlalchemy_connection,
|
|
32
|
-
)
|
|
33
30
|
from metadata.utils.logger import ingestion_logger
|
|
34
31
|
|
|
35
32
|
logger = ingestion_logger()
|
|
@@ -58,7 +55,6 @@ class UnityCatalogQueryParserSource(
|
|
|
58
55
|
def __init__(self, config: WorkflowSource, metadata: OpenMetadata):
|
|
59
56
|
self._init_super(config=config, metadata=metadata)
|
|
60
57
|
self.client = UnityCatalogClient(self.service_connection)
|
|
61
|
-
self.sql_client = get_sqlalchemy_connection(self.service_connection)
|
|
62
58
|
|
|
63
59
|
@classmethod
|
|
64
60
|
def create(
|
|
@@ -11,10 +11,12 @@
|
|
|
11
11
|
"""
|
|
12
12
|
unity catalog usage module
|
|
13
13
|
"""
|
|
14
|
+
import traceback
|
|
15
|
+
from datetime import datetime
|
|
16
|
+
from typing import Iterable
|
|
14
17
|
|
|
15
|
-
from metadata.
|
|
16
|
-
|
|
17
|
-
)
|
|
18
|
+
from metadata.generated.schema.type.basic import DateTime
|
|
19
|
+
from metadata.generated.schema.type.tableQuery import TableQueries, TableQuery
|
|
18
20
|
from metadata.ingestion.source.database.unitycatalog.query_parser import (
|
|
19
21
|
UnityCatalogQueryParserSource,
|
|
20
22
|
)
|
|
@@ -33,24 +35,36 @@ class UnitycatalogUsageSource(UnityCatalogQueryParserSource, UsageSource):
|
|
|
33
35
|
the same API for fetching Usage Queries
|
|
34
36
|
"""
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
filters = """
|
|
39
|
-
AND statement_type NOT IN ('SHOW', 'DESCRIBE', 'USE')
|
|
40
|
-
"""
|
|
41
|
-
|
|
42
|
-
def get_engine(self):
|
|
43
|
-
yield self.sql_client
|
|
44
|
-
|
|
45
|
-
def get_sql_statement(self, start_time, end_time):
|
|
38
|
+
def yield_table_queries(self) -> Iterable[TableQuery]:
|
|
46
39
|
"""
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
Override if we have specific parameters
|
|
40
|
+
Method to yield TableQueries
|
|
50
41
|
"""
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
result_limit=self.source_config.resultLimit,
|
|
42
|
+
queries = []
|
|
43
|
+
data = self.client.list_query_history(
|
|
44
|
+
start_date=self.start,
|
|
45
|
+
end_date=self.end,
|
|
56
46
|
)
|
|
47
|
+
for row in data or []:
|
|
48
|
+
try:
|
|
49
|
+
if self.client.is_query_valid(row):
|
|
50
|
+
queries.append(
|
|
51
|
+
TableQuery(
|
|
52
|
+
dialect=self.dialect.value,
|
|
53
|
+
query=row.get("query_text"),
|
|
54
|
+
userName=row.get("user_name"),
|
|
55
|
+
startTime=str(row.get("query_start_time_ms")),
|
|
56
|
+
endTime=str(row.get("execution_end_time_ms")),
|
|
57
|
+
analysisDate=DateTime(datetime.now()),
|
|
58
|
+
serviceName=self.config.serviceName,
|
|
59
|
+
duration=row.get("duration")
|
|
60
|
+
if row.get("duration")
|
|
61
|
+
else None,
|
|
62
|
+
)
|
|
63
|
+
)
|
|
64
|
+
except Exception as err:
|
|
65
|
+
logger.debug(traceback.format_exc())
|
|
66
|
+
logger.warning(
|
|
67
|
+
f"Failed to process query {row.get('query_text')} due to: {err}"
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
yield TableQueries(queries=queries)
|
|
@@ -23,6 +23,7 @@ from metadata.generated.schema.entity.data.table import (
|
|
|
23
23
|
ColumnName,
|
|
24
24
|
DataType,
|
|
25
25
|
SystemProfile,
|
|
26
|
+
TableType,
|
|
26
27
|
)
|
|
27
28
|
from metadata.generated.schema.entity.services.databaseService import (
|
|
28
29
|
DatabaseServiceType,
|
|
@@ -51,6 +52,11 @@ class DatabricksProfilerInterface(SQAProfilerInterface):
|
|
|
51
52
|
*args,
|
|
52
53
|
**kwargs,
|
|
53
54
|
) -> List[SystemProfile]:
|
|
55
|
+
if self.table_entity.tableType in (TableType.View, TableType.MaterializedView):
|
|
56
|
+
logger.debug(
|
|
57
|
+
f"Skipping {metrics.name()} metric for view {runner.table_name}"
|
|
58
|
+
)
|
|
59
|
+
return []
|
|
54
60
|
logger.debug(f"Computing {metrics.name()} metric for {runner.table_name}")
|
|
55
61
|
self.system_metrics_class = cast(
|
|
56
62
|
Type[DatabricksSystemMetricsComputer], self.system_metrics_class
|
|
@@ -16,6 +16,7 @@ supporting sqlalchemy abstraction layer
|
|
|
16
16
|
"""
|
|
17
17
|
|
|
18
18
|
import concurrent.futures
|
|
19
|
+
import gc
|
|
19
20
|
import math
|
|
20
21
|
import threading
|
|
21
22
|
import time
|
|
@@ -26,7 +27,7 @@ from typing import Any, Dict, List, Optional, Type, Union
|
|
|
26
27
|
|
|
27
28
|
from sqlalchemy import Column, inspect, text
|
|
28
29
|
from sqlalchemy.exc import DBAPIError, ProgrammingError, ResourceClosedError
|
|
29
|
-
from sqlalchemy.orm import
|
|
30
|
+
from sqlalchemy.orm import scoped_session
|
|
30
31
|
|
|
31
32
|
from metadata.generated.schema.entity.data.table import (
|
|
32
33
|
CustomMetricProfile,
|
|
@@ -461,6 +462,9 @@ class SQAProfilerInterface(ProfilerInterface, SQAInterfaceMixin):
|
|
|
461
462
|
logger.error(error)
|
|
462
463
|
self.status.failed_profiler(error, traceback.format_exc())
|
|
463
464
|
break
|
|
465
|
+
finally:
|
|
466
|
+
# Force garbage collection to help with memory management
|
|
467
|
+
gc.collect()
|
|
464
468
|
|
|
465
469
|
# If we've exhausted all retries without success, return a tuple of None values
|
|
466
470
|
return None, None, None
|
|
@@ -22,6 +22,8 @@ from metadata.readers.file.config_source_factory import get_reader
|
|
|
22
22
|
from metadata.readers.models import ConfigSource
|
|
23
23
|
from metadata.utils.logger import ingestion_logger
|
|
24
24
|
|
|
25
|
+
MAX_FILE_SIZE_FOR_PREVIEW = 50 * 1024 * 1024 # 50MB
|
|
26
|
+
|
|
25
27
|
logger = ingestion_logger()
|
|
26
28
|
|
|
27
29
|
|
|
@@ -14,6 +14,8 @@ Generic Delimiter-Separated-Values implementation
|
|
|
14
14
|
"""
|
|
15
15
|
from functools import singledispatchmethod
|
|
16
16
|
|
|
17
|
+
from pyarrow.parquet import ParquetFile
|
|
18
|
+
|
|
17
19
|
from metadata.generated.schema.entity.services.connections.database.datalake.azureConfig import (
|
|
18
20
|
AzureConfig,
|
|
19
21
|
)
|
|
@@ -26,11 +28,18 @@ from metadata.generated.schema.entity.services.connections.database.datalake.s3C
|
|
|
26
28
|
from metadata.generated.schema.entity.services.connections.database.datalakeConnection import (
|
|
27
29
|
LocalConfig,
|
|
28
30
|
)
|
|
29
|
-
from metadata.readers.dataframe.base import
|
|
31
|
+
from metadata.readers.dataframe.base import (
|
|
32
|
+
MAX_FILE_SIZE_FOR_PREVIEW,
|
|
33
|
+
DataFrameReader,
|
|
34
|
+
FileFormatException,
|
|
35
|
+
)
|
|
30
36
|
from metadata.readers.dataframe.common import dataframe_to_chunks
|
|
31
37
|
from metadata.readers.dataframe.models import DatalakeColumnWrapper
|
|
32
38
|
from metadata.readers.file.adls import AZURE_PATH, return_azure_storage_options
|
|
33
39
|
from metadata.readers.models import ConfigSource
|
|
40
|
+
from metadata.utils.logger import ingestion_logger
|
|
41
|
+
|
|
42
|
+
logger = ingestion_logger()
|
|
34
43
|
|
|
35
44
|
|
|
36
45
|
class ParquetDataFrameReader(DataFrameReader):
|
|
@@ -39,6 +48,90 @@ class ParquetDataFrameReader(DataFrameReader):
|
|
|
39
48
|
from any source based on its init client.
|
|
40
49
|
"""
|
|
41
50
|
|
|
51
|
+
def _read_parquet_in_batches(
|
|
52
|
+
self, parquet_file: ParquetFile, batch_size: int = 10000
|
|
53
|
+
):
|
|
54
|
+
"""
|
|
55
|
+
Read a large parquet file in batches to avoid memory issues.
|
|
56
|
+
Includes multiple fallback strategies for older PyArrow versions.
|
|
57
|
+
|
|
58
|
+
Args:
|
|
59
|
+
parquet_file: PyArrow ParquetFile or similar object
|
|
60
|
+
batch_size: Number of rows to read per batch
|
|
61
|
+
|
|
62
|
+
Returns:
|
|
63
|
+
List of DataFrame chunks
|
|
64
|
+
"""
|
|
65
|
+
chunks = []
|
|
66
|
+
batch_count = 0
|
|
67
|
+
|
|
68
|
+
try:
|
|
69
|
+
# Method 1: iter_batches (PyArrow >= 3.0 - preferred)
|
|
70
|
+
if hasattr(parquet_file, "iter_batches"):
|
|
71
|
+
logger.info(
|
|
72
|
+
"Reading large parquet file in batches to avoid memory issues"
|
|
73
|
+
)
|
|
74
|
+
for batch in parquet_file.iter_batches(batch_size=batch_size):
|
|
75
|
+
df_batch = batch.to_pandas()
|
|
76
|
+
if not df_batch.empty:
|
|
77
|
+
chunks.extend(dataframe_to_chunks(df_batch))
|
|
78
|
+
batch_count += 1
|
|
79
|
+
|
|
80
|
+
logger.info(
|
|
81
|
+
f"Successfully processed {batch_count} batches from large parquet file"
|
|
82
|
+
)
|
|
83
|
+
return chunks
|
|
84
|
+
|
|
85
|
+
# Method 2: Row group reading (PyArrow >= 0.15.0)
|
|
86
|
+
elif hasattr(parquet_file, "num_row_groups") and hasattr(
|
|
87
|
+
parquet_file, "read_row_group"
|
|
88
|
+
):
|
|
89
|
+
logger.warning(
|
|
90
|
+
"iter_batches not available, using row group reading as fallback"
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
for i in range(parquet_file.num_row_groups):
|
|
94
|
+
try:
|
|
95
|
+
row_group_table = parquet_file.read_row_group(i)
|
|
96
|
+
df_chunk = row_group_table.to_pandas()
|
|
97
|
+
if not df_chunk.empty:
|
|
98
|
+
# Further chunk if row group is still too large
|
|
99
|
+
if len(df_chunk) > batch_size:
|
|
100
|
+
chunks.extend(dataframe_to_chunks(df_chunk))
|
|
101
|
+
else:
|
|
102
|
+
chunks.append(df_chunk)
|
|
103
|
+
batch_count += 1
|
|
104
|
+
except Exception as row_exc:
|
|
105
|
+
logger.warning(f"Failed to read row group {i}: {row_exc}")
|
|
106
|
+
continue
|
|
107
|
+
|
|
108
|
+
if chunks:
|
|
109
|
+
logger.info(
|
|
110
|
+
f"Successfully processed {batch_count} row groups from large parquet file"
|
|
111
|
+
)
|
|
112
|
+
return chunks
|
|
113
|
+
|
|
114
|
+
# Method 3: Regular reading (final fallback)
|
|
115
|
+
logger.warning(
|
|
116
|
+
"No chunking methods available, falling back to regular reading"
|
|
117
|
+
)
|
|
118
|
+
df = parquet_file.read().to_pandas()
|
|
119
|
+
chunks.extend(dataframe_to_chunks(df))
|
|
120
|
+
|
|
121
|
+
except Exception as exc:
|
|
122
|
+
# If all chunking fails, try regular reading as final fallback
|
|
123
|
+
logger.warning(
|
|
124
|
+
f"Batched reading failed: {exc}. Falling back to regular reading - this may cause memory issues for large files"
|
|
125
|
+
)
|
|
126
|
+
try:
|
|
127
|
+
df = parquet_file.read().to_pandas()
|
|
128
|
+
chunks.extend(dataframe_to_chunks(df))
|
|
129
|
+
except Exception as fallback_exc:
|
|
130
|
+
logger.error(f"Failed to read parquet file: {fallback_exc}")
|
|
131
|
+
raise fallback_exc
|
|
132
|
+
|
|
133
|
+
return chunks
|
|
134
|
+
|
|
42
135
|
@singledispatchmethod
|
|
43
136
|
def _read_parquet_dispatch(
|
|
44
137
|
self, config_source: ConfigSource, key: str, bucket_name: str
|
|
@@ -48,24 +141,46 @@ class ParquetDataFrameReader(DataFrameReader):
|
|
|
48
141
|
@_read_parquet_dispatch.register
|
|
49
142
|
def _(self, _: GCSConfig, key: str, bucket_name: str) -> DatalakeColumnWrapper:
|
|
50
143
|
"""
|
|
51
|
-
Read the
|
|
144
|
+
Read the Parquet file from the gcs bucket and return a dataframe
|
|
52
145
|
"""
|
|
53
146
|
# pylint: disable=import-outside-toplevel
|
|
54
147
|
from gcsfs import GCSFileSystem
|
|
55
|
-
from pyarrow.parquet import ParquetFile
|
|
56
148
|
|
|
57
149
|
gcs = GCSFileSystem()
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
150
|
+
file_path = f"gs://{bucket_name}/{key}"
|
|
151
|
+
|
|
152
|
+
# Check file size to determine reading strategy
|
|
153
|
+
try:
|
|
154
|
+
file_info = gcs.info(file_path)
|
|
155
|
+
file_size = file_info.get("size", 0)
|
|
156
|
+
|
|
157
|
+
file = gcs.open(file_path)
|
|
158
|
+
parquet_file = ParquetFile(file)
|
|
159
|
+
|
|
160
|
+
if self._should_use_chunking(file_size):
|
|
161
|
+
# Use batched reading for large files
|
|
162
|
+
return self._read_parquet_in_batches(parquet_file)
|
|
163
|
+
else:
|
|
164
|
+
# Use regular reading for smaller files
|
|
165
|
+
dataframe_response = parquet_file.read().to_pandas(
|
|
166
|
+
split_blocks=True, self_destruct=True
|
|
167
|
+
)
|
|
168
|
+
return dataframe_to_chunks(dataframe_response)
|
|
169
|
+
|
|
170
|
+
except Exception:
|
|
171
|
+
# Fallback to regular reading if size check fails
|
|
172
|
+
file = gcs.open(file_path)
|
|
173
|
+
parquet_file = ParquetFile(file)
|
|
174
|
+
dataframe_response = parquet_file.read().to_pandas(
|
|
175
|
+
split_blocks=True, self_destruct=True
|
|
176
|
+
)
|
|
177
|
+
return dataframe_to_chunks(dataframe_response)
|
|
63
178
|
|
|
64
179
|
@_read_parquet_dispatch.register
|
|
65
180
|
def _(self, _: S3Config, key: str, bucket_name: str) -> DatalakeColumnWrapper:
|
|
66
181
|
# pylint: disable=import-outside-toplevel
|
|
67
182
|
from pyarrow.fs import S3FileSystem
|
|
68
|
-
from pyarrow.parquet import ParquetDataset
|
|
183
|
+
from pyarrow.parquet import ParquetDataset, ParquetFile
|
|
69
184
|
|
|
70
185
|
client_kwargs = {
|
|
71
186
|
"endpoint_override": (
|
|
@@ -90,13 +205,40 @@ class ParquetDataFrameReader(DataFrameReader):
|
|
|
90
205
|
s3_fs = S3FileSystem(**client_kwargs)
|
|
91
206
|
|
|
92
207
|
bucket_uri = f"{bucket_name}/{key}"
|
|
93
|
-
dataset = ParquetDataset(bucket_uri, filesystem=s3_fs)
|
|
94
208
|
|
|
95
|
-
|
|
209
|
+
# Check file size to determine reading strategy
|
|
210
|
+
try:
|
|
211
|
+
file_info = s3_fs.get_file_info(bucket_uri)
|
|
212
|
+
file_size = file_info.size if hasattr(file_info, "size") else 0
|
|
213
|
+
|
|
214
|
+
if self._should_use_chunking(file_size):
|
|
215
|
+
# Use ParquetFile for batched reading of large files
|
|
216
|
+
logger.info(
|
|
217
|
+
f"Large parquet file detected ({file_size} bytes > {MAX_FILE_SIZE_FOR_PREVIEW} bytes). "
|
|
218
|
+
f"Using batched reading for file: {bucket_uri}"
|
|
219
|
+
)
|
|
220
|
+
parquet_file = ParquetFile(bucket_uri, filesystem=s3_fs)
|
|
221
|
+
return self._read_parquet_in_batches(parquet_file)
|
|
222
|
+
else:
|
|
223
|
+
# Use ParquetDataset for regular reading of smaller files
|
|
224
|
+
logger.debug(
|
|
225
|
+
f"Reading small parquet file ({file_size} bytes): {bucket_uri}"
|
|
226
|
+
)
|
|
227
|
+
dataset = ParquetDataset(bucket_uri, filesystem=s3_fs)
|
|
228
|
+
return dataframe_to_chunks(dataset.read_pandas().to_pandas())
|
|
229
|
+
|
|
230
|
+
except Exception as exc:
|
|
231
|
+
# Fallback to regular reading if size check fails
|
|
232
|
+
logger.warning(
|
|
233
|
+
f"Could not determine file size for {bucket_uri}: {exc}. Using regular reading"
|
|
234
|
+
)
|
|
235
|
+
dataset = ParquetDataset(bucket_uri, filesystem=s3_fs)
|
|
236
|
+
return dataframe_to_chunks(dataset.read_pandas().to_pandas())
|
|
96
237
|
|
|
97
238
|
@_read_parquet_dispatch.register
|
|
98
239
|
def _(self, _: AzureConfig, key: str, bucket_name: str) -> DatalakeColumnWrapper:
|
|
99
240
|
import pandas as pd # pylint: disable=import-outside-toplevel
|
|
241
|
+
import pyarrow.fs as fs
|
|
100
242
|
|
|
101
243
|
storage_options = return_azure_storage_options(self.config_source)
|
|
102
244
|
account_url = AZURE_PATH.format(
|
|
@@ -104,8 +246,33 @@ class ParquetDataFrameReader(DataFrameReader):
|
|
|
104
246
|
account_name=self.config_source.securityConfig.accountName,
|
|
105
247
|
key=key,
|
|
106
248
|
)
|
|
107
|
-
|
|
108
|
-
|
|
249
|
+
|
|
250
|
+
# Check file size to determine reading strategy
|
|
251
|
+
try:
|
|
252
|
+
# Try to get file size from Azure
|
|
253
|
+
azure_fs = fs.SubTreeFileSystem(
|
|
254
|
+
account_url, fs.AzureFileSystem(**storage_options)
|
|
255
|
+
)
|
|
256
|
+
file_info = azure_fs.get_file_info("/")
|
|
257
|
+
file_size = file_info.size if hasattr(file_info, "size") else 0
|
|
258
|
+
|
|
259
|
+
if self._should_use_chunking(file_size):
|
|
260
|
+
# Use PyArrow ParquetFile for batched reading of large files
|
|
261
|
+
parquet_file = ParquetFile(
|
|
262
|
+
account_url, filesystem=fs.AzureFileSystem(**storage_options)
|
|
263
|
+
)
|
|
264
|
+
return self._read_parquet_in_batches(parquet_file)
|
|
265
|
+
else:
|
|
266
|
+
# Use pandas for regular reading of smaller files
|
|
267
|
+
dataframe = pd.read_parquet(
|
|
268
|
+
account_url, storage_options=storage_options
|
|
269
|
+
)
|
|
270
|
+
return dataframe_to_chunks(dataframe)
|
|
271
|
+
|
|
272
|
+
except Exception:
|
|
273
|
+
# Fallback to regular pandas reading if size check or batching fails
|
|
274
|
+
dataframe = pd.read_parquet(account_url, storage_options=storage_options)
|
|
275
|
+
return dataframe_to_chunks(dataframe)
|
|
109
276
|
|
|
110
277
|
@_read_parquet_dispatch.register
|
|
111
278
|
def _(
|
|
@@ -114,10 +281,27 @@ class ParquetDataFrameReader(DataFrameReader):
|
|
|
114
281
|
key: str,
|
|
115
282
|
bucket_name: str, # pylint: disable=unused-argument
|
|
116
283
|
) -> DatalakeColumnWrapper:
|
|
284
|
+
import os
|
|
285
|
+
|
|
117
286
|
import pandas as pd # pylint: disable=import-outside-toplevel
|
|
118
287
|
|
|
119
|
-
|
|
120
|
-
|
|
288
|
+
# Check file size to determine reading strategy
|
|
289
|
+
try:
|
|
290
|
+
file_size = os.path.getsize(key)
|
|
291
|
+
|
|
292
|
+
if self._should_use_chunking(file_size):
|
|
293
|
+
# Use PyArrow ParquetFile for batched reading of large files
|
|
294
|
+
parquet_file = ParquetFile(key)
|
|
295
|
+
return self._read_parquet_in_batches(parquet_file)
|
|
296
|
+
else:
|
|
297
|
+
# Use pandas for regular reading of smaller files
|
|
298
|
+
dataframe = pd.read_parquet(key)
|
|
299
|
+
return dataframe_to_chunks(dataframe)
|
|
300
|
+
|
|
301
|
+
except Exception:
|
|
302
|
+
# Fallback to regular pandas reading if size check fails
|
|
303
|
+
dataframe = pd.read_parquet(key)
|
|
304
|
+
return dataframe_to_chunks(dataframe)
|
|
121
305
|
|
|
122
306
|
def _read(self, *, key: str, bucket_name: str, **__) -> DatalakeColumnWrapper:
|
|
123
307
|
return DatalakeColumnWrapper(
|
|
@@ -125,3 +309,6 @@ class ParquetDataFrameReader(DataFrameReader):
|
|
|
125
309
|
self.config_source, key=key, bucket_name=bucket_name
|
|
126
310
|
)
|
|
127
311
|
)
|
|
312
|
+
|
|
313
|
+
def _should_use_chunking(self, file_size: int) -> bool:
|
|
314
|
+
return file_size > MAX_FILE_SIZE_FOR_PREVIEW or file_size == 0
|