openmetadata-ingestion 1.6.6.6__py3-none-any.whl → 1.6.6.7.dev0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of openmetadata-ingestion might be problematic. Click here for more details.
- metadata/generated/schema/analytics/__init__.py +1 -1
- metadata/generated/schema/analytics/basic.py +1 -1
- metadata/generated/schema/analytics/reportData.py +1 -1
- metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
- metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
- metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
- metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
- metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
- metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
- metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
- metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
- metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
- metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
- metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
- metadata/generated/schema/api/__init__.py +1 -1
- metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
- metadata/generated/schema/api/addTagToAssetsRequest.py +1 -1
- metadata/generated/schema/api/analytics/__init__.py +1 -1
- metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
- metadata/generated/schema/api/automations/__init__.py +1 -1
- metadata/generated/schema/api/automations/createWorkflow.py +1 -1
- metadata/generated/schema/api/bulkAssets.py +1 -1
- metadata/generated/schema/api/classification/__init__.py +1 -1
- metadata/generated/schema/api/classification/createClassification.py +1 -1
- metadata/generated/schema/api/classification/createTag.py +1 -1
- metadata/generated/schema/api/classification/loadTags.py +1 -1
- metadata/generated/schema/api/createBot.py +1 -1
- metadata/generated/schema/api/createEventPublisherJob.py +1 -1
- metadata/generated/schema/api/createType.py +1 -1
- metadata/generated/schema/api/data/__init__.py +1 -1
- metadata/generated/schema/api/data/createAPICollection.py +1 -1
- metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
- metadata/generated/schema/api/data/createChart.py +1 -1
- metadata/generated/schema/api/data/createContainer.py +1 -1
- metadata/generated/schema/api/data/createCustomProperty.py +1 -1
- metadata/generated/schema/api/data/createDashboard.py +1 -1
- metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
- metadata/generated/schema/api/data/createDatabase.py +1 -1
- metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
- metadata/generated/schema/api/data/createGlossary.py +1 -1
- metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
- metadata/generated/schema/api/data/createMetric.py +1 -1
- metadata/generated/schema/api/data/createMlModel.py +1 -1
- metadata/generated/schema/api/data/createPipeline.py +1 -1
- metadata/generated/schema/api/data/createQuery.py +1 -1
- metadata/generated/schema/api/data/createSearchIndex.py +1 -1
- metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
- metadata/generated/schema/api/data/createTable.py +1 -1
- metadata/generated/schema/api/data/createTableProfile.py +1 -1
- metadata/generated/schema/api/data/createTopic.py +1 -1
- metadata/generated/schema/api/data/loadGlossary.py +1 -1
- metadata/generated/schema/api/data/restoreEntity.py +1 -1
- metadata/generated/schema/api/dataInsight/__init__.py +1 -1
- metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
- metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
- metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
- metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
- metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
- metadata/generated/schema/api/docStore/__init__.py +1 -1
- metadata/generated/schema/api/docStore/createDocument.py +1 -1
- metadata/generated/schema/api/domains/__init__.py +1 -1
- metadata/generated/schema/api/domains/createDataProduct.py +1 -1
- metadata/generated/schema/api/domains/createDomain.py +1 -1
- metadata/generated/schema/api/feed/__init__.py +1 -1
- metadata/generated/schema/api/feed/closeTask.py +1 -1
- metadata/generated/schema/api/feed/createPost.py +1 -1
- metadata/generated/schema/api/feed/createSuggestion.py +1 -1
- metadata/generated/schema/api/feed/createThread.py +1 -1
- metadata/generated/schema/api/feed/resolveTask.py +1 -1
- metadata/generated/schema/api/feed/threadCount.py +1 -1
- metadata/generated/schema/api/governance/__init__.py +1 -1
- metadata/generated/schema/api/governance/createWorkflowDefinition.py +1 -1
- metadata/generated/schema/api/governance/createWorkflowInstanceState.py +1 -1
- metadata/generated/schema/api/lineage/__init__.py +1 -1
- metadata/generated/schema/api/lineage/addLineage.py +1 -1
- metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
- metadata/generated/schema/api/policies/__init__.py +1 -1
- metadata/generated/schema/api/policies/createPolicy.py +1 -1
- metadata/generated/schema/api/services/__init__.py +1 -1
- metadata/generated/schema/api/services/createApiService.py +1 -1
- metadata/generated/schema/api/services/createDashboardService.py +1 -1
- metadata/generated/schema/api/services/createDatabaseService.py +1 -1
- metadata/generated/schema/api/services/createMessagingService.py +1 -1
- metadata/generated/schema/api/services/createMetadataService.py +1 -1
- metadata/generated/schema/api/services/createMlModelService.py +1 -1
- metadata/generated/schema/api/services/createPipelineService.py +1 -1
- metadata/generated/schema/api/services/createSearchService.py +1 -1
- metadata/generated/schema/api/services/createStorageService.py +1 -1
- metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
- metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
- metadata/generated/schema/api/setOwner.py +1 -1
- metadata/generated/schema/api/teams/__init__.py +1 -1
- metadata/generated/schema/api/teams/createPersona.py +1 -1
- metadata/generated/schema/api/teams/createRole.py +1 -1
- metadata/generated/schema/api/teams/createTeam.py +1 -1
- metadata/generated/schema/api/teams/createUser.py +1 -1
- metadata/generated/schema/api/tests/__init__.py +1 -1
- metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
- metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
- metadata/generated/schema/api/tests/createTestCase.py +1 -1
- metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
- metadata/generated/schema/api/tests/createTestCaseResult.py +1 -1
- metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
- metadata/generated/schema/api/tests/createTestSuite.py +1 -1
- metadata/generated/schema/api/voteRequest.py +1 -1
- metadata/generated/schema/auth/__init__.py +1 -1
- metadata/generated/schema/auth/basicAuth.py +1 -1
- metadata/generated/schema/auth/basicLoginRequest.py +1 -1
- metadata/generated/schema/auth/changePasswordRequest.py +1 -1
- metadata/generated/schema/auth/createPersonalToken.py +1 -1
- metadata/generated/schema/auth/emailRequest.py +1 -1
- metadata/generated/schema/auth/emailVerificationToken.py +1 -1
- metadata/generated/schema/auth/generateToken.py +1 -1
- metadata/generated/schema/auth/jwtAuth.py +1 -1
- metadata/generated/schema/auth/loginRequest.py +1 -1
- metadata/generated/schema/auth/logoutRequest.py +1 -1
- metadata/generated/schema/auth/passwordResetRequest.py +1 -1
- metadata/generated/schema/auth/passwordResetToken.py +1 -1
- metadata/generated/schema/auth/personalAccessToken.py +1 -1
- metadata/generated/schema/auth/refreshToken.py +1 -1
- metadata/generated/schema/auth/registrationRequest.py +1 -1
- metadata/generated/schema/auth/revokePersonalToken.py +1 -1
- metadata/generated/schema/auth/revokeToken.py +1 -1
- metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
- metadata/generated/schema/auth/ssoAuth.py +1 -1
- metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
- metadata/generated/schema/configuration/__init__.py +1 -1
- metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
- metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
- metadata/generated/schema/configuration/authConfig.py +1 -1
- metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
- metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
- metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
- metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
- metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
- metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
- metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
- metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
- metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
- metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
- metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
- metadata/generated/schema/configuration/lineageSettings.py +1 -1
- metadata/generated/schema/configuration/loginConfiguration.py +1 -1
- metadata/generated/schema/configuration/logoConfiguration.py +1 -1
- metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
- metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
- metadata/generated/schema/configuration/searchSettings.py +1 -1
- metadata/generated/schema/configuration/slackAppConfiguration.py +1 -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/addDescriptionAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeCustomPropertiesAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataRetentionConfiguration.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
- metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
- metadata/generated/schema/entity/applications/jobStatus.py +1 -1
- metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
- metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
- metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
- metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
- metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
- metadata/generated/schema/entity/automations/__init__.py +1 -1
- metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
- metadata/generated/schema/entity/automations/workflow.py +1 -1
- metadata/generated/schema/entity/bot.py +1 -1
- metadata/generated/schema/entity/classification/__init__.py +1 -1
- metadata/generated/schema/entity/classification/classification.py +1 -1
- metadata/generated/schema/entity/classification/tag.py +1 -1
- metadata/generated/schema/entity/data/__init__.py +1 -1
- metadata/generated/schema/entity/data/apiCollection.py +1 -1
- metadata/generated/schema/entity/data/apiEndpoint.py +1 -1
- metadata/generated/schema/entity/data/chart.py +1 -1
- metadata/generated/schema/entity/data/container.py +1 -1
- metadata/generated/schema/entity/data/dashboard.py +1 -1
- metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
- metadata/generated/schema/entity/data/database.py +1 -1
- metadata/generated/schema/entity/data/databaseSchema.py +1 -1
- metadata/generated/schema/entity/data/glossary.py +1 -1
- metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
- metadata/generated/schema/entity/data/metric.py +1 -1
- metadata/generated/schema/entity/data/mlmodel.py +1 -1
- metadata/generated/schema/entity/data/pipeline.py +1 -1
- metadata/generated/schema/entity/data/query.py +1 -1
- metadata/generated/schema/entity/data/report.py +1 -1
- metadata/generated/schema/entity/data/searchIndex.py +1 -1
- metadata/generated/schema/entity/data/storedProcedure.py +1 -1
- metadata/generated/schema/entity/data/table.py +1 -1
- metadata/generated/schema/entity/data/topic.py +1 -1
- metadata/generated/schema/entity/docStore/__init__.py +1 -1
- metadata/generated/schema/entity/docStore/document.py +1 -1
- metadata/generated/schema/entity/domains/__init__.py +1 -1
- metadata/generated/schema/entity/domains/dataProduct.py +1 -1
- metadata/generated/schema/entity/domains/domain.py +1 -1
- metadata/generated/schema/entity/events/__init__.py +1 -1
- metadata/generated/schema/entity/events/webhook.py +1 -1
- metadata/generated/schema/entity/feed/__init__.py +1 -1
- metadata/generated/schema/entity/feed/assets.py +1 -1
- metadata/generated/schema/entity/feed/customProperty.py +1 -1
- metadata/generated/schema/entity/feed/description.py +1 -1
- metadata/generated/schema/entity/feed/domain.py +1 -1
- metadata/generated/schema/entity/feed/entityInfo.py +1 -1
- metadata/generated/schema/entity/feed/owner.py +1 -1
- metadata/generated/schema/entity/feed/suggestion.py +1 -1
- metadata/generated/schema/entity/feed/tag.py +1 -1
- metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
- metadata/generated/schema/entity/feed/thread.py +1 -1
- metadata/generated/schema/entity/policies/__init__.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
- metadata/generated/schema/entity/policies/filters.py +1 -1
- metadata/generated/schema/entity/policies/policy.py +1 -1
- metadata/generated/schema/entity/services/__init__.py +1 -1
- metadata/generated/schema/entity/services/apiService.py +1 -1
- metadata/generated/schema/entity/services/connections/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/api/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/api/restConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
- metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
- metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
- metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/exasolConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +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/stitchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
- metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
- metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
- metadata/generated/schema/entity/services/dashboardService.py +1 -1
- metadata/generated/schema/entity/services/databaseService.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
- metadata/generated/schema/entity/services/messagingService.py +1 -1
- metadata/generated/schema/entity/services/metadataService.py +1 -1
- metadata/generated/schema/entity/services/mlmodelService.py +1 -1
- metadata/generated/schema/entity/services/pipelineService.py +1 -1
- metadata/generated/schema/entity/services/searchService.py +1 -1
- metadata/generated/schema/entity/services/serviceType.py +1 -1
- metadata/generated/schema/entity/services/storageService.py +1 -1
- metadata/generated/schema/entity/teams/__init__.py +1 -1
- metadata/generated/schema/entity/teams/persona.py +1 -1
- metadata/generated/schema/entity/teams/role.py +1 -1
- metadata/generated/schema/entity/teams/team.py +1 -1
- metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
- metadata/generated/schema/entity/teams/user.py +1 -1
- metadata/generated/schema/entity/type.py +1 -1
- metadata/generated/schema/entity/utils/__init__.py +1 -1
- metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
- metadata/generated/schema/entity/utils/servicesCount.py +1 -1
- metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
- metadata/generated/schema/events/__init__.py +1 -1
- metadata/generated/schema/events/alertMetrics.py +1 -1
- metadata/generated/schema/events/api/__init__.py +1 -1
- metadata/generated/schema/events/api/createEventSubscription.py +1 -1
- metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +1 -1
- metadata/generated/schema/events/api/eventsRecord.py +1 -1
- metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
- metadata/generated/schema/events/api/typedEvent.py +1 -1
- metadata/generated/schema/events/emailAlertConfig.py +1 -1
- metadata/generated/schema/events/eventFilterRule.py +1 -1
- metadata/generated/schema/events/eventSubscription.py +1 -1
- metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
- metadata/generated/schema/events/failedEvent.py +1 -1
- metadata/generated/schema/events/failedEventResponse.py +1 -1
- metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
- metadata/generated/schema/events/statusContext.py +1 -1
- metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
- metadata/generated/schema/events/subscriptionStatus.py +1 -1
- metadata/generated/schema/events/testDestinationStatus.py +1 -1
- metadata/generated/schema/governance/workflows/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/edge.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodeSubType.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodeType.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +1 -1
- metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
- metadata/generated/schema/governance/workflows/workflowInstance.py +1 -1
- metadata/generated/schema/governance/workflows/workflowInstanceState.py +1 -1
- metadata/generated/schema/jobs/__init__.py +1 -1
- metadata/generated/schema/jobs/backgroundJob.py +1 -1
- metadata/generated/schema/jobs/enumCleanupArgs.py +1 -1
- metadata/generated/schema/metadataIngestion/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/application.py +1 -1
- metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +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/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/security/__init__.py +1 -1
- metadata/generated/schema/security/client/__init__.py +1 -1
- metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
- metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
- metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
- metadata/generated/schema/security/credentials/__init__.py +1 -1
- metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
- metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
- metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
- metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
- metadata/generated/schema/security/credentials/basicAuth.py +1 -1
- metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
- metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
- metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
- metadata/generated/schema/security/credentials/gcpValues.py +1 -1
- metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
- metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
- metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
- metadata/generated/schema/security/sasl/__init__.py +1 -1
- metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
- metadata/generated/schema/security/secrets/__init__.py +1 -1
- metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
- metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
- metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
- metadata/generated/schema/security/securityConfiguration.py +1 -1
- metadata/generated/schema/security/ssl/__init__.py +1 -1
- metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
- metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
- metadata/generated/schema/settings/__init__.py +1 -1
- metadata/generated/schema/settings/settings.py +1 -1
- metadata/generated/schema/system/__init__.py +1 -1
- metadata/generated/schema/system/entityError.py +1 -1
- metadata/generated/schema/system/eventPublisherJob.py +1 -1
- metadata/generated/schema/system/indexingError.py +1 -1
- metadata/generated/schema/system/limitsResponse.py +1 -1
- metadata/generated/schema/system/ui/__init__.py +1 -1
- metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
- metadata/generated/schema/system/ui/page.py +1 -1
- metadata/generated/schema/system/validationResponse.py +1 -1
- metadata/generated/schema/tests/__init__.py +1 -1
- metadata/generated/schema/tests/assigned.py +1 -1
- metadata/generated/schema/tests/basic.py +1 -1
- metadata/generated/schema/tests/customMetric.py +1 -1
- metadata/generated/schema/tests/dataQualityReport.py +1 -1
- metadata/generated/schema/tests/resolved.py +1 -1
- metadata/generated/schema/tests/testCase.py +1 -1
- metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
- metadata/generated/schema/tests/testDefinition.py +1 -1
- metadata/generated/schema/tests/testSuite.py +1 -1
- metadata/generated/schema/type/__init__.py +1 -1
- metadata/generated/schema/type/apiSchema.py +1 -1
- metadata/generated/schema/type/assetCertification.py +1 -1
- metadata/generated/schema/type/auditLog.py +1 -1
- metadata/generated/schema/type/basic.py +1 -1
- metadata/generated/schema/type/bulkOperationResult.py +1 -1
- metadata/generated/schema/type/changeEvent.py +1 -1
- metadata/generated/schema/type/changeEventType.py +1 -1
- metadata/generated/schema/type/collectionDescriptor.py +1 -1
- metadata/generated/schema/type/csvDocumentation.py +1 -1
- metadata/generated/schema/type/csvErrorType.py +1 -1
- metadata/generated/schema/type/csvFile.py +1 -1
- metadata/generated/schema/type/csvImportResult.py +1 -1
- metadata/generated/schema/type/customProperties/__init__.py +1 -1
- metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
- metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
- metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
- metadata/generated/schema/type/customProperty.py +1 -1
- metadata/generated/schema/type/dailyCount.py +1 -1
- metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
- metadata/generated/schema/type/entityHierarchy.py +1 -1
- metadata/generated/schema/type/entityHistory.py +1 -1
- metadata/generated/schema/type/entityLineage.py +1 -1
- metadata/generated/schema/type/entityReference.py +1 -1
- metadata/generated/schema/type/entityReferenceList.py +1 -1
- metadata/generated/schema/type/entityRelationship.py +1 -1
- metadata/generated/schema/type/entityUsage.py +1 -1
- metadata/generated/schema/type/filterPattern.py +1 -1
- metadata/generated/schema/type/function.py +1 -1
- metadata/generated/schema/type/include.py +1 -1
- metadata/generated/schema/type/jdbcConnection.py +1 -1
- metadata/generated/schema/type/lifeCycle.py +1 -1
- metadata/generated/schema/type/paging.py +1 -1
- metadata/generated/schema/type/profile.py +1 -1
- metadata/generated/schema/type/queryParserData.py +1 -1
- metadata/generated/schema/type/reaction.py +1 -1
- metadata/generated/schema/type/schedule.py +1 -1
- metadata/generated/schema/type/schema.py +1 -1
- metadata/generated/schema/type/tableQuery.py +1 -1
- metadata/generated/schema/type/tableUsageCount.py +1 -1
- metadata/generated/schema/type/tagLabel.py +1 -1
- metadata/generated/schema/type/usageDetails.py +1 -1
- metadata/generated/schema/type/usageRequest.py +1 -1
- metadata/generated/schema/type/votes.py +1 -1
- metadata/ingestion/lineage/masker.py +10 -2
- metadata/ingestion/lineage/parser.py +20 -3
- metadata/ingestion/lineage/sql_lineage.py +97 -21
- metadata/ingestion/ometa/mixins/es_mixin.py +2 -0
- metadata/ingestion/ometa/mixins/lineage_mixin.py +12 -9
- metadata/ingestion/source/database/lineage_source.py +95 -42
- metadata/ingestion/source/database/stored_procedures_mixin.py +3 -1
- metadata/utils/db_utils.py +6 -0
- {openmetadata_ingestion-1.6.6.6.dist-info → openmetadata_ingestion-1.6.6.7.dev0.dist-info}/METADATA +373 -373
- {openmetadata_ingestion-1.6.6.6.dist-info → openmetadata_ingestion-1.6.6.7.dev0.dist-info}/RECORD +657 -657
- {openmetadata_ingestion-1.6.6.6.dist-info → openmetadata_ingestion-1.6.6.7.dev0.dist-info}/LICENSE +0 -0
- {openmetadata_ingestion-1.6.6.6.dist-info → openmetadata_ingestion-1.6.6.7.dev0.dist-info}/WHEEL +0 -0
- {openmetadata_ingestion-1.6.6.6.dist-info → openmetadata_ingestion-1.6.6.7.dev0.dist-info}/entry_points.txt +0 -0
- {openmetadata_ingestion-1.6.6.6.dist-info → openmetadata_ingestion-1.6.6.7.dev0.dist-info}/top_level.txt +0 -0
|
@@ -13,12 +13,14 @@ Query masking utilities
|
|
|
13
13
|
"""
|
|
14
14
|
|
|
15
15
|
import traceback
|
|
16
|
+
from typing import Optional
|
|
16
17
|
|
|
17
18
|
from collate_sqllineage.runner import SQLPARSE_DIALECT, LineageRunner
|
|
18
19
|
from sqlparse.sql import Comparison
|
|
19
20
|
from sqlparse.tokens import Literal, Number, String
|
|
20
21
|
|
|
21
22
|
from metadata.ingestion.lineage.models import Dialect
|
|
23
|
+
from metadata.utils.execution_time_tracker import calculate_execution_time
|
|
22
24
|
|
|
23
25
|
MASK_TOKEN = "?"
|
|
24
26
|
|
|
@@ -109,11 +111,17 @@ def mask_literals_with_sqlfluff(query: str, parser: LineageRunner) -> str:
|
|
|
109
111
|
return query
|
|
110
112
|
|
|
111
113
|
|
|
114
|
+
@calculate_execution_time(context="MaskQuery")
|
|
112
115
|
def mask_query(
|
|
113
|
-
query: str,
|
|
114
|
-
|
|
116
|
+
query: str,
|
|
117
|
+
dialect: str = Dialect.ANSI.value,
|
|
118
|
+
parser: Optional[LineageRunner] = None,
|
|
119
|
+
parser_required: bool = False,
|
|
120
|
+
) -> Optional[str]:
|
|
115
121
|
logger = get_logger()
|
|
116
122
|
try:
|
|
123
|
+
if parser_required and not parser:
|
|
124
|
+
return None
|
|
117
125
|
if not parser:
|
|
118
126
|
try:
|
|
119
127
|
parser = LineageRunner(query, dialect=dialect)
|
|
@@ -28,6 +28,7 @@ from sqlparse.sql import Comparison, Identifier, Parenthesis, Statement
|
|
|
28
28
|
from metadata.generated.schema.type.tableUsageCount import TableColumn, TableColumnJoin
|
|
29
29
|
from metadata.ingestion.lineage.masker import mask_query
|
|
30
30
|
from metadata.ingestion.lineage.models import Dialect
|
|
31
|
+
from metadata.utils.execution_time_tracker import calculate_execution_time
|
|
31
32
|
from metadata.utils.helpers import (
|
|
32
33
|
find_in_iter,
|
|
33
34
|
get_formatted_entity_name,
|
|
@@ -77,7 +78,10 @@ class LineageParser:
|
|
|
77
78
|
self._clean_query, dialect=dialect, timeout_seconds=timeout_seconds
|
|
78
79
|
)
|
|
79
80
|
if self.masked_query is None:
|
|
80
|
-
self.masked_query =
|
|
81
|
+
self.masked_query = (
|
|
82
|
+
mask_query(self._clean_query, parser=self.parser, parser_required=True)
|
|
83
|
+
or self._clean_query
|
|
84
|
+
)
|
|
81
85
|
|
|
82
86
|
@cached_property
|
|
83
87
|
def involved_tables(self) -> Optional[List[Table]]:
|
|
@@ -409,6 +413,7 @@ class LineageParser:
|
|
|
409
413
|
|
|
410
414
|
return clean_query.strip()
|
|
411
415
|
|
|
416
|
+
@calculate_execution_time(context="EvaluateBestParser")
|
|
412
417
|
def _evaluate_best_parser(
|
|
413
418
|
self, query: str, dialect: Dialect, timeout_seconds: int
|
|
414
419
|
) -> Optional[LineageRunner]:
|
|
@@ -447,8 +452,14 @@ class LineageParser:
|
|
|
447
452
|
if lr_sqlfluff:
|
|
448
453
|
return lr_sqlfluff
|
|
449
454
|
|
|
450
|
-
|
|
455
|
+
@timeout(seconds=timeout_seconds)
|
|
456
|
+
def get_sqlparser_lineage_runner(qry: str) -> LineageRunner:
|
|
457
|
+
lr_sqlparser = LineageRunner(qry)
|
|
458
|
+
lr_sqlparser.get_column_lineage()
|
|
459
|
+
return lr_sqlparser
|
|
460
|
+
|
|
451
461
|
try:
|
|
462
|
+
lr_sqlparser = get_sqlparser_lineage_runner(query)
|
|
452
463
|
_ = len(lr_sqlparser.get_column_lineage()) + len(
|
|
453
464
|
set(lr_sqlparser.source_tables).union(
|
|
454
465
|
set(lr_sqlparser.target_tables).union(
|
|
@@ -456,12 +467,18 @@ class LineageParser:
|
|
|
456
467
|
)
|
|
457
468
|
)
|
|
458
469
|
)
|
|
470
|
+
except TimeoutError:
|
|
471
|
+
self.query_parsing_success = False
|
|
472
|
+
self.query_parsing_failure_reason = (
|
|
473
|
+
f"Lineage with SqlParser failed for the [{dialect.value}]. "
|
|
474
|
+
f"Parser has been running for more than {timeout_seconds} seconds."
|
|
475
|
+
)
|
|
476
|
+
return None
|
|
459
477
|
except Exception:
|
|
460
478
|
# if both runner have failed we return the usual one
|
|
461
479
|
logger.debug(f"Failed to parse query with sqlparse & sqlfluff: {query}")
|
|
462
480
|
return lr_sqlfluff if lr_sqlfluff else lr_sqlparser
|
|
463
481
|
|
|
464
|
-
self.masked_query = mask_query(self._clean_query, parser=lr_sqlparser)
|
|
465
482
|
logger.debug(
|
|
466
483
|
f"Using sqlparse for lineage parsing for query: {self.masked_query or self.query}"
|
|
467
484
|
)
|
|
@@ -11,12 +11,15 @@
|
|
|
11
11
|
"""
|
|
12
12
|
Helper functions to handle SQL lineage operations
|
|
13
13
|
"""
|
|
14
|
+
import functools
|
|
14
15
|
import itertools
|
|
15
16
|
import traceback
|
|
16
17
|
from collections import defaultdict
|
|
18
|
+
from copy import deepcopy
|
|
17
19
|
from typing import Any, Iterable, List, Optional, Tuple, Union
|
|
18
20
|
|
|
19
21
|
import networkx as nx
|
|
22
|
+
from collate_sqllineage.core.holders import SQLLineageHolder
|
|
20
23
|
from collate_sqllineage.core.models import Column, DataFunction
|
|
21
24
|
from collate_sqllineage.core.models import Table as LineageTable
|
|
22
25
|
from networkx import DiGraph
|
|
@@ -48,6 +51,10 @@ from metadata.ingestion.lineage.parser import LINEAGE_PARSING_TIMEOUT, LineagePa
|
|
|
48
51
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
49
52
|
from metadata.utils import fqn
|
|
50
53
|
from metadata.utils.elasticsearch import get_entity_from_es_result
|
|
54
|
+
from metadata.utils.execution_time_tracker import (
|
|
55
|
+
calculate_execution_time,
|
|
56
|
+
calculate_execution_time_generator,
|
|
57
|
+
)
|
|
51
58
|
from metadata.utils.fqn import build_es_fqn_search_string
|
|
52
59
|
from metadata.utils.logger import utils_logger
|
|
53
60
|
from metadata.utils.lru_cache import LRU_CACHE_SIZE, LRUCache
|
|
@@ -73,6 +80,7 @@ def get_column_fqn(table_entity: Table, column: str) -> Optional[str]:
|
|
|
73
80
|
search_cache = LRUCache(LRU_CACHE_SIZE)
|
|
74
81
|
|
|
75
82
|
|
|
83
|
+
@calculate_execution_time(context="SearchTableEntities")
|
|
76
84
|
def search_table_entities(
|
|
77
85
|
metadata: OpenMetadata,
|
|
78
86
|
service_name: str,
|
|
@@ -236,6 +244,58 @@ def handle_udf_column_lineage(
|
|
|
236
244
|
logger.error(f"Error handling UDF column lineage: {exc}")
|
|
237
245
|
|
|
238
246
|
|
|
247
|
+
@functools.lru_cache(maxsize=1000)
|
|
248
|
+
def _get_udf_parser(
|
|
249
|
+
code: str, dialect: Dialect, timeout_seconds: int
|
|
250
|
+
) -> Optional[LineageParser]:
|
|
251
|
+
if code:
|
|
252
|
+
return LineageParser(
|
|
253
|
+
f"create table dummy_table_name as {code}",
|
|
254
|
+
dialect=dialect,
|
|
255
|
+
timeout_seconds=timeout_seconds,
|
|
256
|
+
)
|
|
257
|
+
return None
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
def _replace_target_table(
|
|
261
|
+
parser: LineageParser, expected_table_name: str
|
|
262
|
+
) -> LineageParser:
|
|
263
|
+
try:
|
|
264
|
+
# Create a new target table instead of modifying the existing one
|
|
265
|
+
new_table = Table(expected_table_name.replace(DEFAULT_SCHEMA_NAME, ""))
|
|
266
|
+
|
|
267
|
+
# Create a new statement holder with the updated target table
|
|
268
|
+
stmt_holder = parser.parser._stmt_holders[0]
|
|
269
|
+
old_write = list(stmt_holder.write)[0] # Get the original target table
|
|
270
|
+
|
|
271
|
+
# Remove old target table and add new one
|
|
272
|
+
stmt_holder.graph.remove_node(old_write)
|
|
273
|
+
stmt_holder.add_write(new_table)
|
|
274
|
+
|
|
275
|
+
# Rebuild column lineage
|
|
276
|
+
for col_lineage in parser.parser.get_column_lineage():
|
|
277
|
+
if col_lineage[-1].parent == old_write:
|
|
278
|
+
# Create new column with same name but parent is new table
|
|
279
|
+
tgt_col = col_lineage[-1]
|
|
280
|
+
new_tgt_col = Column(tgt_col.raw_name)
|
|
281
|
+
new_tgt_col.parent = new_table
|
|
282
|
+
|
|
283
|
+
# Add the column lineage from source to new target
|
|
284
|
+
stmt_holder.add_column_lineage(col_lineage[-2], new_tgt_col)
|
|
285
|
+
try:
|
|
286
|
+
# remove the old edge
|
|
287
|
+
stmt_holder.graph.remove_edge(col_lineage[-2], tgt_col)
|
|
288
|
+
except:
|
|
289
|
+
# if the edge is not present, pass
|
|
290
|
+
pass
|
|
291
|
+
|
|
292
|
+
# Rebuild the SQL holder
|
|
293
|
+
parser.parser._sql_holder = SQLLineageHolder.of(*parser.parser._stmt_holders)
|
|
294
|
+
except Exception as exc:
|
|
295
|
+
logger.debug(traceback.format_exc())
|
|
296
|
+
logger.debug(f"Error replacing target table: {exc}")
|
|
297
|
+
|
|
298
|
+
|
|
239
299
|
# pylint: disable=too-many-arguments
|
|
240
300
|
def __process_udf_es_results(
|
|
241
301
|
metadata: OpenMetadata,
|
|
@@ -255,27 +315,32 @@ def __process_udf_es_results(
|
|
|
255
315
|
and entity.storedProcedureCode
|
|
256
316
|
and entity.storedProcedureCode.language == Language.SQL
|
|
257
317
|
):
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
lineage_parser = LineageParser(
|
|
262
|
-
f"create table {str(expected_table_name)} as {entity.storedProcedureCode.code}",
|
|
263
|
-
dialect=dialect,
|
|
264
|
-
timeout_seconds=timeout_seconds,
|
|
318
|
+
|
|
319
|
+
lineage_parser = _get_udf_parser(
|
|
320
|
+
entity.storedProcedureCode.code, dialect, timeout_seconds
|
|
265
321
|
)
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
timeout_seconds,
|
|
276
|
-
column_lineage,
|
|
277
|
-
procedure or entity,
|
|
322
|
+
if lineage_parser and lineage_parser.parser:
|
|
323
|
+
expected_table_name = str(source_table).replace(
|
|
324
|
+
f"{DEFAULT_SCHEMA_NAME}.", ""
|
|
325
|
+
)
|
|
326
|
+
lineage_parser_copy = deepcopy(lineage_parser)
|
|
327
|
+
_replace_target_table(lineage_parser_copy, expected_table_name)
|
|
328
|
+
|
|
329
|
+
handle_udf_column_lineage(
|
|
330
|
+
column_lineage, lineage_parser_copy.column_lineage
|
|
278
331
|
)
|
|
332
|
+
for source in lineage_parser_copy.source_tables or []:
|
|
333
|
+
yield from get_source_table_names(
|
|
334
|
+
metadata,
|
|
335
|
+
dialect,
|
|
336
|
+
source,
|
|
337
|
+
database_name,
|
|
338
|
+
schema_name,
|
|
339
|
+
service_name,
|
|
340
|
+
timeout_seconds,
|
|
341
|
+
column_lineage,
|
|
342
|
+
procedure or entity,
|
|
343
|
+
)
|
|
279
344
|
|
|
280
345
|
|
|
281
346
|
def __process_udf_table_names(
|
|
@@ -317,6 +382,7 @@ def __process_udf_table_names(
|
|
|
317
382
|
)
|
|
318
383
|
|
|
319
384
|
|
|
385
|
+
@calculate_execution_time_generator(context="GetSourceTableNames")
|
|
320
386
|
def get_source_table_names(
|
|
321
387
|
metadata: OpenMetadata,
|
|
322
388
|
dialect: Dialect,
|
|
@@ -617,6 +683,7 @@ def populate_column_lineage_map(raw_column_lineage):
|
|
|
617
683
|
|
|
618
684
|
|
|
619
685
|
# pylint: disable=too-many-locals
|
|
686
|
+
@calculate_execution_time_generator(context="GetLineageByQuery")
|
|
620
687
|
def get_lineage_by_query(
|
|
621
688
|
metadata: OpenMetadata,
|
|
622
689
|
service_name: str,
|
|
@@ -627,6 +694,7 @@ def get_lineage_by_query(
|
|
|
627
694
|
timeout_seconds: int = LINEAGE_PARSING_TIMEOUT,
|
|
628
695
|
lineage_source: LineageSource = LineageSource.QueryLineage,
|
|
629
696
|
graph: DiGraph = None,
|
|
697
|
+
lineage_parser: Optional[LineageParser] = None,
|
|
630
698
|
) -> Iterable[Either[AddLineageRequest]]:
|
|
631
699
|
"""
|
|
632
700
|
This method parses the query to get source, target and intermediate table names to create lineage,
|
|
@@ -636,7 +704,10 @@ def get_lineage_by_query(
|
|
|
636
704
|
query_parsing_failures = QueryParsingFailures()
|
|
637
705
|
|
|
638
706
|
try:
|
|
639
|
-
|
|
707
|
+
if not lineage_parser:
|
|
708
|
+
lineage_parser = LineageParser(
|
|
709
|
+
query, dialect, timeout_seconds=timeout_seconds
|
|
710
|
+
)
|
|
640
711
|
masked_query = lineage_parser.masked_query
|
|
641
712
|
logger.debug(f"Running lineage with query: {masked_query or query}")
|
|
642
713
|
|
|
@@ -723,6 +794,7 @@ def get_lineage_by_query(
|
|
|
723
794
|
)
|
|
724
795
|
|
|
725
796
|
|
|
797
|
+
@calculate_execution_time_generator(context="GetLineageViaTableEntity")
|
|
726
798
|
def get_lineage_via_table_entity(
|
|
727
799
|
metadata: OpenMetadata,
|
|
728
800
|
table_entity: Table,
|
|
@@ -734,13 +806,17 @@ def get_lineage_via_table_entity(
|
|
|
734
806
|
timeout_seconds: int = LINEAGE_PARSING_TIMEOUT,
|
|
735
807
|
lineage_source: LineageSource = LineageSource.QueryLineage,
|
|
736
808
|
graph: DiGraph = None,
|
|
809
|
+
lineage_parser: Optional[LineageParser] = None,
|
|
737
810
|
) -> Iterable[Either[AddLineageRequest]]:
|
|
738
811
|
"""Get lineage from table entity"""
|
|
739
812
|
column_lineage = {}
|
|
740
813
|
query_parsing_failures = QueryParsingFailures()
|
|
741
814
|
|
|
742
815
|
try:
|
|
743
|
-
|
|
816
|
+
if not lineage_parser:
|
|
817
|
+
lineage_parser = LineageParser(
|
|
818
|
+
query, dialect, timeout_seconds=timeout_seconds
|
|
819
|
+
)
|
|
744
820
|
masked_query = lineage_parser.masked_query
|
|
745
821
|
logger.debug(
|
|
746
822
|
f"Getting lineage via table entity using query: {masked_query or query}"
|
|
@@ -30,6 +30,7 @@ from metadata.ingestion.ometa.client import REST, APIError
|
|
|
30
30
|
from metadata.ingestion.ometa.utils import quote
|
|
31
31
|
from metadata.ingestion.source.models import TableView
|
|
32
32
|
from metadata.utils.elasticsearch import ES_INDEX_MAP
|
|
33
|
+
from metadata.utils.execution_time_tracker import calculate_execution_time_generator
|
|
33
34
|
from metadata.utils.logger import ometa_logger
|
|
34
35
|
|
|
35
36
|
logger = ometa_logger()
|
|
@@ -388,6 +389,7 @@ class ESMixin(Generic[T]):
|
|
|
388
389
|
f"Error while getting {hit.source['fullyQualifiedName']} - {exc}"
|
|
389
390
|
)
|
|
390
391
|
|
|
392
|
+
@calculate_execution_time_generator(context="ES.FetchViewDefinition")
|
|
391
393
|
def yield_es_view_def(
|
|
392
394
|
self,
|
|
393
395
|
service_name: str,
|
|
@@ -14,6 +14,7 @@ Mixin class containing Lineage specific methods
|
|
|
14
14
|
To be used by OpenMetadata class
|
|
15
15
|
"""
|
|
16
16
|
import functools
|
|
17
|
+
import json
|
|
17
18
|
import traceback
|
|
18
19
|
from copy import deepcopy
|
|
19
20
|
from typing import Any, Dict, Generic, List, Optional, Type, TypeVar, Union
|
|
@@ -427,6 +428,7 @@ class OMetaLineageMixin(Generic[T]):
|
|
|
427
428
|
logger.debug(traceback.format_exc())
|
|
428
429
|
self.is_edit_table_allowed = False
|
|
429
430
|
|
|
431
|
+
@functools.lru_cache(maxsize=LRU_CACHE_SIZE)
|
|
430
432
|
def patch_lineage_processed_flag(
|
|
431
433
|
self,
|
|
432
434
|
entity: Type[T],
|
|
@@ -440,15 +442,16 @@ class OMetaLineageMixin(Generic[T]):
|
|
|
440
442
|
return
|
|
441
443
|
|
|
442
444
|
try:
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
self.patch(
|
|
451
|
-
|
|
445
|
+
patch = [
|
|
446
|
+
{
|
|
447
|
+
"op": "add",
|
|
448
|
+
"path": "/processedLineage",
|
|
449
|
+
"value": True,
|
|
450
|
+
}
|
|
451
|
+
]
|
|
452
|
+
self.client.patch(
|
|
453
|
+
path=f"{self.get_suffix(entity)}/name/{fqn}",
|
|
454
|
+
data=json.dumps(patch),
|
|
452
455
|
)
|
|
453
456
|
except Exception as exc:
|
|
454
457
|
logger.debug(f"Error while patching lineage processed flag: {exc}")
|
|
@@ -13,10 +13,10 @@ Lineage Source Module
|
|
|
13
13
|
"""
|
|
14
14
|
import csv
|
|
15
15
|
import os
|
|
16
|
+
import threading
|
|
16
17
|
import time
|
|
17
18
|
import traceback
|
|
18
19
|
from abc import ABC
|
|
19
|
-
from concurrent.futures import ThreadPoolExecutor
|
|
20
20
|
from functools import partial
|
|
21
21
|
from typing import Any, Callable, Iterable, Iterator, List, Union
|
|
22
22
|
|
|
@@ -42,9 +42,9 @@ from metadata.utils.logger import ingestion_logger
|
|
|
42
42
|
logger = ingestion_logger()
|
|
43
43
|
|
|
44
44
|
|
|
45
|
-
CHUNK_SIZE =
|
|
45
|
+
CHUNK_SIZE = 100
|
|
46
46
|
|
|
47
|
-
THREAD_TIMEOUT =
|
|
47
|
+
THREAD_TIMEOUT = 3 * 60 * 10 # 30 minutes in seconds
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
class LineageSource(QueryParserSource, ABC):
|
|
@@ -107,61 +107,95 @@ class LineageSource(QueryParserSource, ABC):
|
|
|
107
107
|
)
|
|
108
108
|
yield from self.yield_table_query()
|
|
109
109
|
|
|
110
|
+
@staticmethod
|
|
110
111
|
def generate_lineage_in_thread(
|
|
111
|
-
self,
|
|
112
112
|
producer_fn: Callable[[], Iterable[Any]],
|
|
113
|
-
processor_fn: Callable[[Any],
|
|
113
|
+
processor_fn: Callable[[Any, Queue], None],
|
|
114
114
|
chunk_size: int = CHUNK_SIZE,
|
|
115
|
+
thread_timeout: int = THREAD_TIMEOUT,
|
|
116
|
+
max_threads: int = 10, # Default maximum number of concurrent threads
|
|
115
117
|
):
|
|
116
118
|
"""
|
|
117
|
-
|
|
119
|
+
Process data in separate daemon threads with timeout control.
|
|
118
120
|
|
|
119
121
|
Args:
|
|
120
|
-
producer_fn: Function that yields
|
|
121
|
-
processor_fn: Function
|
|
122
|
-
chunk_size:
|
|
122
|
+
producer_fn: Function that yields data chunks
|
|
123
|
+
processor_fn: Function that processes data and adds results to the queue
|
|
124
|
+
chunk_size: Size of chunks to process
|
|
125
|
+
thread_timeout: Maximum time in seconds to wait for a processor thread
|
|
126
|
+
max_threads: Maximum number of concurrent threads to run
|
|
123
127
|
"""
|
|
128
|
+
queue = Queue()
|
|
129
|
+
active_threads = []
|
|
124
130
|
|
|
125
|
-
def
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
131
|
+
def process_chunk(chunk):
|
|
132
|
+
"""Process a chunk of data in a thread."""
|
|
133
|
+
try:
|
|
134
|
+
processor_fn(chunk, queue)
|
|
135
|
+
except Exception as e:
|
|
136
|
+
logger.error(f"Error processing chunk: {e}")
|
|
137
|
+
logger.debug(traceback.format_exc())
|
|
132
138
|
|
|
133
|
-
|
|
134
|
-
|
|
139
|
+
# Create an iterator for the chunks but don't consume it all at once
|
|
140
|
+
chunk_iterator = iter(chunk_generator(producer_fn, chunk_size))
|
|
135
141
|
|
|
136
|
-
|
|
137
|
-
|
|
142
|
+
# Process results from the queue and check for timed-out threads
|
|
143
|
+
chunk_processed = False # Flag to track if all chunks have been processed
|
|
144
|
+
ignored_threads = 0
|
|
138
145
|
|
|
139
|
-
futures = [
|
|
140
|
-
thread_pool.submit(
|
|
141
|
-
processor_fn,
|
|
142
|
-
chunk,
|
|
143
|
-
queue,
|
|
144
|
-
)
|
|
145
|
-
for chunk in chunk_generator()
|
|
146
|
-
]
|
|
147
146
|
while True:
|
|
147
|
+
# Start new threads until we reach the max_threads limit
|
|
148
|
+
while (
|
|
149
|
+
len(active_threads) + ignored_threads
|
|
150
|
+
) < max_threads and not chunk_processed:
|
|
151
|
+
try:
|
|
152
|
+
# Only fetch a new chunk when we're ready to create a thread
|
|
153
|
+
chunk = next(chunk_iterator)
|
|
154
|
+
thread = threading.Thread(target=process_chunk, args=(chunk,))
|
|
155
|
+
thread.start_time = time.time() # Track when the thread started
|
|
156
|
+
thread.daemon = True
|
|
157
|
+
active_threads.append(thread)
|
|
158
|
+
thread.start()
|
|
159
|
+
except StopIteration:
|
|
160
|
+
# No more chunks to process
|
|
161
|
+
chunk_processed = True
|
|
162
|
+
break
|
|
163
|
+
|
|
164
|
+
if ignored_threads == max_threads:
|
|
165
|
+
logger.warning(f"Max threads reached, skipping remaining threads")
|
|
166
|
+
break
|
|
167
|
+
|
|
168
|
+
# Process any available results
|
|
148
169
|
if queue.has_tasks():
|
|
149
170
|
yield from queue.process()
|
|
150
171
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
172
|
+
# Check for completed or timed-out threads
|
|
173
|
+
still_active = []
|
|
174
|
+
for thread in active_threads:
|
|
175
|
+
if thread.is_alive():
|
|
176
|
+
# Check if the thread has timed out
|
|
177
|
+
if time.time() - thread.start_time > thread_timeout:
|
|
178
|
+
logger.warning(
|
|
179
|
+
f"Thread {thread.name} timed out after {thread_timeout}s"
|
|
180
|
+
)
|
|
181
|
+
ignored_threads += 1
|
|
182
|
+
else:
|
|
183
|
+
still_active.append(thread)
|
|
184
|
+
# If thread is not alive, it has completed normally
|
|
185
|
+
|
|
186
|
+
active_threads = still_active
|
|
154
187
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
future.result(timeout=THREAD_TIMEOUT)
|
|
159
|
-
except Exception as e:
|
|
160
|
-
logger.debug(f"Error in future: {e}")
|
|
161
|
-
logger.debug(traceback.format_exc())
|
|
162
|
-
futures.pop(i)
|
|
188
|
+
# Exit conditions: no more active threads and no more chunks to process
|
|
189
|
+
if not active_threads and chunk_processed:
|
|
190
|
+
break
|
|
163
191
|
|
|
164
|
-
|
|
192
|
+
# Small pause to prevent CPU spinning
|
|
193
|
+
if active_threads:
|
|
194
|
+
time.sleep(0.1)
|
|
195
|
+
|
|
196
|
+
# Final check for any remaining results
|
|
197
|
+
while queue.has_tasks():
|
|
198
|
+
yield from queue.process()
|
|
165
199
|
|
|
166
200
|
def yield_table_query(self) -> Iterator[TableQuery]:
|
|
167
201
|
"""
|
|
@@ -257,7 +291,9 @@ class LineageSource(QueryParserSource, ABC):
|
|
|
257
291
|
producer_fn = self.get_table_query
|
|
258
292
|
processor_fn = self.query_lineage_generator
|
|
259
293
|
yield from self.generate_lineage_in_thread(
|
|
260
|
-
producer_fn,
|
|
294
|
+
producer_fn,
|
|
295
|
+
processor_fn,
|
|
296
|
+
max_threads=self.source_config.threads,
|
|
261
297
|
)
|
|
262
298
|
|
|
263
299
|
def view_lineage_generator(
|
|
@@ -306,7 +342,9 @@ class LineageSource(QueryParserSource, ABC):
|
|
|
306
342
|
self.source_config.incrementalLineageProcessing,
|
|
307
343
|
)
|
|
308
344
|
processor_fn = self.view_lineage_generator
|
|
309
|
-
yield from self.generate_lineage_in_thread(
|
|
345
|
+
yield from self.generate_lineage_in_thread(
|
|
346
|
+
producer_fn, processor_fn, max_threads=self.source_config.threads
|
|
347
|
+
)
|
|
310
348
|
|
|
311
349
|
def yield_procedure_lineage(
|
|
312
350
|
self,
|
|
@@ -339,3 +377,18 @@ class LineageSource(QueryParserSource, ABC):
|
|
|
339
377
|
logger.warning(
|
|
340
378
|
f"Lineage extraction is not supported for {str(self.service_connection.type.value)} connection"
|
|
341
379
|
)
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
def chunk_generator(producer_fn, chunk_size):
|
|
383
|
+
"""
|
|
384
|
+
Group items from producer into chunks of specified size.
|
|
385
|
+
This is a separate function to allow for better lazy evaluation.
|
|
386
|
+
"""
|
|
387
|
+
temp_chunk = []
|
|
388
|
+
for item in producer_fn():
|
|
389
|
+
temp_chunk.append(item)
|
|
390
|
+
if len(temp_chunk) >= chunk_size:
|
|
391
|
+
yield temp_chunk
|
|
392
|
+
temp_chunk = []
|
|
393
|
+
if temp_chunk:
|
|
394
|
+
yield temp_chunk
|
|
@@ -304,4 +304,6 @@ class StoredProcedureLineageMixin(ABC):
|
|
|
304
304
|
logger.info("Processing Lineage for Stored Procedures")
|
|
305
305
|
producer_fn = self.procedure_lineage_generator
|
|
306
306
|
processor_fn = self.procedure_lineage_processor
|
|
307
|
-
yield from self.generate_lineage_in_thread(
|
|
307
|
+
yield from self.generate_lineage_in_thread(
|
|
308
|
+
producer_fn, processor_fn, max_threads=self.source_config.threads
|
|
309
|
+
)
|