openmetadata-ingestion 1.3.0.0.dev0__py3-none-any.whl → 1.3.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of openmetadata-ingestion might be problematic. Click here for more details.
- metadata/applications/auto_tagger.py +8 -3
- metadata/cli/db_dump.py +1 -0
- metadata/data_insight/processor/reports/cost_analysis_report_data_processor.py +39 -47
- metadata/data_insight/processor/reports/data_processor.py +1 -0
- metadata/data_insight/producer/cost_analysis_producer.py +78 -14
- metadata/data_insight/producer/entity_producer.py +1 -1
- metadata/data_insight/producer/producer_interface.py +1 -1
- metadata/data_insight/producer/web_analytics_producer.py +1 -1
- metadata/data_insight/source/metadata.py +10 -1
- metadata/data_quality/processor/test_case_runner.py +7 -5
- metadata/data_quality/source/test_suite.py +0 -1
- metadata/data_quality/validations/mixins/pandas_validator_mixin.py +4 -2
- metadata/data_quality/validations/table/base/tableColumnToMatchSet.py +2 -1
- metadata/data_quality/validations/table/pandas/tableColumnToMatchSet.py +2 -1
- metadata/data_quality/validations/table/sqlalchemy/tableColumnToMatchSet.py +7 -2
- metadata/examples/workflows/bigtable.yaml +32 -0
- metadata/generated/antlr/EntityLinkLexer.py +124 -58
- 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/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 +2 -2
- metadata/generated/schema/api/createType.py +1 -1
- metadata/generated/schema/api/data/__init__.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 +6 -10
- 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/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/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 +30 -0
- 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/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/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/createTestDefinition.py +2 -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 +28 -0
- 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 +16 -0
- metadata/generated/schema/configuration/elasticSearchConfiguration.py +4 -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/loginConfiguration.py +1 -1
- metadata/generated/schema/configuration/logoConfiguration.py +1 -1
- metadata/generated/schema/configuration/pipelineServiceClientConfiguration.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/dataInsight/__init__.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/percentageOfEntitiesWithDescriptionByType.py +1 -1
- metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithOwnerByType.py +1 -1
- metadata/generated/schema/dataInsight/type/percentageOfServicesWithDescription.py +1 -1
- metadata/generated/schema/dataInsight/type/percentageOfServicesWithOwner.py +1 -1
- metadata/generated/schema/dataInsight/type/totalEntitiesByTier.py +1 -1
- metadata/generated/schema/dataInsight/type/totalEntitiesByType.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/smtpSettings.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 +4 -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 +6 -1
- metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/autoTaggerAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/metaPilotAppConfig.py +1 -16
- 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/searchIndexingAppConfig.py +2 -2
- metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +3 -0
- metadata/generated/schema/entity/applications/configuration/private/external/metaPilotAppPrivateConfig.py +26 -0
- metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
- metadata/generated/schema/entity/applications/jobStatus.py +1 -1
- metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
- metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
- metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +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/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/metrics.py +1 -1
- metadata/generated/schema/entity/data/mlmodel.py +2 -2
- metadata/generated/schema/entity/data/pipeline.py +1 -1
- metadata/generated/schema/entity/data/query.py +1 -1
- metadata/generated/schema/entity/data/report.py +1 -1
- metadata/generated/schema/entity/data/searchIndex.py +1 -1
- metadata/generated/schema/entity/data/storedProcedure.py +1 -1
- metadata/generated/schema/entity/data/table.py +2 -1
- metadata/generated/schema/entity/data/topic.py +1 -1
- metadata/generated/schema/entity/docStore/__init__.py +1 -1
- metadata/generated/schema/entity/docStore/document.py +1 -1
- metadata/generated/schema/entity/domains/__init__.py +1 -1
- metadata/generated/schema/entity/domains/dataProduct.py +1 -1
- metadata/generated/schema/entity/domains/domain.py +1 -1
- metadata/generated/schema/entity/events/__init__.py +1 -1
- metadata/generated/schema/entity/events/webhook.py +4 -6
- metadata/generated/schema/entity/feed/__init__.py +1 -1
- metadata/generated/schema/entity/feed/suggestion.py +61 -0
- 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/connections/__init__.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/modeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/mstrConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.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/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 +41 -0
- 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/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/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/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/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 +8 -6
- 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/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/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 +14 -2
- 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 +14 -2
- 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/amundsenConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +2 -2
- 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/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/domoPipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.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/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 -4
- 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 +3 -18
- 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/emailAlertConfig.py +1 -6
- metadata/generated/schema/events/eventFilterRule.py +1 -1
- metadata/generated/schema/events/eventSubscription.py +5 -10
- metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
- metadata/generated/schema/events/failedEvent.py +1 -1
- metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
- metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
- metadata/generated/schema/metadataIngestion/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/application.py +4 -1
- metadata/generated/schema/metadataIngestion/applicationPipeline.py +4 -1
- metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dataInsightPipeline.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 +6 -3
- 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 +6 -3
- 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 +6 -3
- 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/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 +16 -9
- 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/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/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 +3 -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/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/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/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 +2 -1
- metadata/generated/schema/tests/testSuite.py +1 -1
- metadata/generated/schema/type/__init__.py +1 -1
- metadata/generated/schema/type/auditLog.py +1 -1
- metadata/generated/schema/type/basic.py +6 -2
- metadata/generated/schema/type/bulkOperationResult.py +1 -1
- metadata/generated/schema/type/changeEvent.py +1 -1
- metadata/generated/schema/type/changeEventType.py +6 -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 +3 -0
- metadata/generated/schema/type/customProperties/enumConfig.py +17 -0
- metadata/generated/schema/type/customProperty.py +52 -0
- metadata/generated/schema/type/dailyCount.py +1 -1
- metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
- metadata/generated/schema/type/entityHistory.py +1 -1
- metadata/generated/schema/type/entityLineage.py +1 -1
- metadata/generated/schema/type/entityReference.py +1 -1
- metadata/generated/schema/type/entityReferenceList.py +1 -1
- metadata/generated/schema/type/entityRelationship.py +1 -1
- metadata/generated/schema/type/entityUsage.py +1 -1
- metadata/generated/schema/type/filterPattern.py +1 -1
- metadata/generated/schema/type/function.py +1 -1
- metadata/generated/schema/type/include.py +1 -1
- metadata/generated/schema/type/jdbcConnection.py +1 -1
- metadata/generated/schema/type/lifeCycle.py +1 -1
- metadata/generated/schema/type/paging.py +1 -1
- metadata/generated/schema/type/profile.py +1 -1
- metadata/generated/schema/type/queryParserData.py +1 -1
- metadata/generated/schema/type/reaction.py +1 -1
- metadata/generated/schema/type/schedule.py +1 -1
- metadata/generated/schema/type/schema.py +1 -1
- metadata/generated/schema/type/tableQuery.py +1 -1
- metadata/generated/schema/type/tableUsageCount.py +1 -1
- metadata/generated/schema/type/tagLabel.py +1 -1
- metadata/generated/schema/type/usageDetails.py +1 -1
- metadata/generated/schema/type/usageRequest.py +1 -1
- metadata/generated/schema/type/votes.py +1 -1
- metadata/great_expectations/action.py +7 -17
- metadata/ingestion/api/status.py +4 -0
- metadata/ingestion/api/steps.py +14 -1
- metadata/ingestion/api/topology_runner.py +4 -1
- metadata/ingestion/lineage/parser.py +4 -5
- metadata/ingestion/models/custom_properties.py +0 -1
- metadata/ingestion/models/patch_request.py +3 -2
- metadata/ingestion/ometa/client.py +6 -0
- metadata/ingestion/ometa/mixins/custom_property_mixin.py +11 -11
- metadata/ingestion/ometa/mixins/patch_mixin.py +0 -1
- metadata/ingestion/ometa/mixins/suggestions_mixin.py +41 -0
- metadata/ingestion/ometa/ometa_api.py +16 -8
- metadata/ingestion/ometa/routes.py +7 -0
- metadata/ingestion/sink/metadata_rest.py +2 -2
- metadata/ingestion/source/dashboard/dashboard_service.py +0 -1
- metadata/ingestion/source/dashboard/looker/metadata.py +3 -6
- metadata/ingestion/source/dashboard/metabase/client.py +4 -0
- metadata/ingestion/source/dashboard/metabase/metadata.py +5 -4
- metadata/ingestion/source/dashboard/metabase/models.py +2 -2
- metadata/ingestion/source/dashboard/superset/api_source.py +0 -1
- metadata/ingestion/source/dashboard/superset/db_source.py +1 -3
- metadata/ingestion/source/dashboard/superset/queries.py +1 -1
- metadata/ingestion/source/dashboard/tableau/metadata.py +19 -1
- metadata/ingestion/source/database/athena/client.py +2 -4
- metadata/ingestion/source/database/azuresql/metadata.py +0 -1
- metadata/ingestion/source/database/bigquery/helper.py +68 -1
- metadata/ingestion/source/database/bigquery/metadata.py +12 -3
- metadata/ingestion/source/database/bigquery/queries.py +22 -0
- metadata/ingestion/source/database/bigtable/client.py +62 -0
- metadata/ingestion/source/database/bigtable/connection.py +116 -0
- metadata/ingestion/source/database/bigtable/metadata.py +224 -0
- metadata/ingestion/source/database/bigtable/models.py +60 -0
- metadata/ingestion/source/database/common_db_source.py +2 -2
- metadata/ingestion/source/database/common_nosql_source.py +22 -4
- metadata/ingestion/source/database/databricks/client.py +0 -1
- metadata/ingestion/source/database/databricks/metadata.py +132 -46
- metadata/ingestion/source/database/databricks/queries.py +3 -4
- metadata/ingestion/source/database/datalake/metadata.py +9 -4
- metadata/ingestion/source/database/dbt/dbt_config.py +5 -0
- metadata/ingestion/source/database/dbt/dbt_service.py +3 -11
- metadata/ingestion/source/database/dbt/dbt_utils.py +3 -1
- metadata/ingestion/source/database/dbt/metadata.py +16 -29
- metadata/ingestion/source/database/extended_sample_data.py +202 -134
- metadata/ingestion/source/database/hive/connection.py +0 -2
- metadata/ingestion/source/database/mssql/metadata.py +0 -1
- metadata/ingestion/source/database/mssql/queries.py +1 -2
- metadata/ingestion/source/database/oracle/queries.py +2 -2
- metadata/ingestion/source/database/oracle/utils.py +0 -1
- metadata/ingestion/source/database/postgres/pgspider/lineage.py +0 -1
- metadata/ingestion/source/database/sample_data.py +0 -1
- metadata/ingestion/source/database/sas/metadata.py +2 -3
- metadata/ingestion/source/database/snowflake/utils.py +2 -6
- metadata/ingestion/source/database/stored_procedures_mixin.py +0 -1
- metadata/ingestion/source/database/unitycatalog/metadata.py +16 -31
- metadata/ingestion/source/messaging/common_broker_source.py +9 -8
- metadata/ingestion/source/messaging/kafka/connection.py +45 -4
- metadata/ingestion/source/mlmodel/sagemaker/metadata.py +20 -8
- metadata/ingestion/source/pipeline/spline/metadata.py +0 -1
- metadata/ingestion/source/search/elasticsearch/metadata.py +0 -1
- metadata/ingestion/source/storage/storage_service.py +8 -8
- metadata/profiler/interface/pandas/profiler_interface.py +7 -2
- metadata/profiler/interface/profiler_interface_factory.py +7 -0
- metadata/profiler/interface/sqlalchemy/db2/profiler_interface.py +38 -0
- metadata/profiler/interface/sqlalchemy/profiler_interface.py +3 -5
- metadata/profiler/metrics/hybrid/histogram.py +1 -0
- metadata/profiler/orm/functions/conn_test.py +1 -0
- metadata/profiler/orm/functions/sum.py +1 -0
- metadata/profiler/orm/functions/table_metric_computer.py +0 -1
- metadata/profiler/orm/registry.py +1 -0
- metadata/profiler/processor/core.py +2 -2
- metadata/profiler/processor/processor.py +0 -2
- metadata/profiler/processor/sample_data_handler.py +6 -2
- metadata/profiler/source/base/profiler_source.py +0 -1
- metadata/profiler/source/bigquery/type_mapper.py +0 -1
- metadata/readers/file/api_reader.py +0 -1
- metadata/utils/datalake/datalake_utils.py +369 -129
- metadata/utils/entity_link.py +26 -6
- metadata/utils/execution_time_tracker.py +199 -0
- metadata/utils/filters.py +4 -0
- metadata/utils/helpers.py +30 -38
- metadata/utils/secrets/aws_based_secrets_manager.py +67 -4
- metadata/utils/secrets/aws_secrets_manager.py +7 -2
- metadata/utils/secrets/aws_ssm_secrets_manager.py +7 -2
- metadata/utils/secrets/azure_kv_secrets_manager.py +148 -0
- metadata/utils/secrets/external_secrets_manager.py +25 -3
- metadata/utils/secrets/secrets_manager_factory.py +13 -31
- metadata/workflow/application.py +10 -10
- metadata/workflow/base.py +4 -1
- metadata/workflow/metadata.py +0 -1
- metadata/workflow/output_handler.py +22 -0
- metadata/workflow/usage.py +0 -1
- {openmetadata_ingestion-1.3.0.0.dev0.dist-info → openmetadata_ingestion-1.3.1.0.dist-info}/METADATA +298 -289
- {openmetadata_ingestion-1.3.0.0.dev0.dist-info → openmetadata_ingestion-1.3.1.0.dist-info}/RECORD +624 -612
- metadata/generated/schema/entity/services/connections/database/duckdbConnection.py +0 -96
- metadata/generated/schema/events/userAlertConfig.py +0 -25
- metadata/ingestion/source/database/duckdb/connection.py +0 -76
- metadata/ingestion/source/database/duckdb/metadata.py +0 -204
- metadata/ingestion/source/database/duckdb/queries.py +0 -141
- metadata/ingestion/source/database/duckdb/utils.py +0 -349
- metadata/utils/secrets/client/loader.py +0 -78
- /metadata/ingestion/source/database/{duckdb → bigtable}/__init__.py +0 -0
- /metadata/{utils/secrets/client → profiler/interface/sqlalchemy/db2}/__init__.py +0 -0
- /metadata/utils/secrets/{noop_secrets_manager.py → db_secrets_manager.py} +0 -0
- {openmetadata_ingestion-1.3.0.0.dev0.dist-info → openmetadata_ingestion-1.3.1.0.dist-info}/LICENSE +0 -0
- {openmetadata_ingestion-1.3.0.0.dev0.dist-info → openmetadata_ingestion-1.3.1.0.dist-info}/WHEEL +0 -0
- {openmetadata_ingestion-1.3.0.0.dev0.dist-info → openmetadata_ingestion-1.3.1.0.dist-info}/entry_points.txt +0 -0
- {openmetadata_ingestion-1.3.0.0.dev0.dist-info → openmetadata_ingestion-1.3.1.0.dist-info}/top_level.txt +0 -0
|
@@ -24,6 +24,10 @@ from metadata.generated.schema.api.data.createDatabase import CreateDatabaseRequ
|
|
|
24
24
|
from metadata.generated.schema.api.data.createDatabaseSchema import (
|
|
25
25
|
CreateDatabaseSchemaRequest,
|
|
26
26
|
)
|
|
27
|
+
from metadata.generated.schema.api.data.createGlossary import CreateGlossaryRequest
|
|
28
|
+
from metadata.generated.schema.api.data.createGlossaryTerm import (
|
|
29
|
+
CreateGlossaryTermRequest,
|
|
30
|
+
)
|
|
27
31
|
from metadata.generated.schema.api.data.createTable import CreateTableRequest
|
|
28
32
|
from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
|
|
29
33
|
from metadata.generated.schema.entity.data.dashboard import Dashboard
|
|
@@ -91,10 +95,20 @@ class ExtendedSampleDataSource(Source): # pylint: disable=too-many-instance-att
|
|
|
91
95
|
self.store_table_fqn = set()
|
|
92
96
|
self.store_data_model_fqn = []
|
|
93
97
|
self.store_dashboard_fqn = []
|
|
98
|
+
self.main_glossary = None
|
|
99
|
+
self.glossary_term_list = []
|
|
94
100
|
|
|
95
101
|
sample_data_folder = self.service_connection.connectionOptions.__root__.get(
|
|
96
102
|
"sampleDataFolder"
|
|
97
103
|
)
|
|
104
|
+
self.include_glossary = self.service_connection.connectionOptions.__root__.get(
|
|
105
|
+
"includeGlossary"
|
|
106
|
+
)
|
|
107
|
+
self.include_lineage_stress_testing = (
|
|
108
|
+
self.service_connection.connectionOptions.__root__.get(
|
|
109
|
+
"includeLineageStressTesting"
|
|
110
|
+
)
|
|
111
|
+
)
|
|
98
112
|
extneded_sample_data_folder = (
|
|
99
113
|
self.service_connection.connectionOptions.__root__.get(
|
|
100
114
|
"extendedSampleDataFolder"
|
|
@@ -225,43 +239,71 @@ class ExtendedSampleDataSource(Source): # pylint: disable=too-many-instance-att
|
|
|
225
239
|
)
|
|
226
240
|
)
|
|
227
241
|
|
|
228
|
-
def generate_sample_data(
|
|
242
|
+
def generate_sample_data(
|
|
243
|
+
self,
|
|
244
|
+
): # pylint: disable=too-many-locals,too-many-statements
|
|
229
245
|
"""
|
|
230
246
|
Generate sample data for dashboard and database service,
|
|
231
247
|
with lineage between them, having long names, special characters and description
|
|
232
248
|
"""
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
)
|
|
240
|
-
yield Either(right=schema)
|
|
241
|
-
for table in self.extended_tables["tables"]:
|
|
242
|
-
text = self.generate_text()
|
|
243
|
-
table_request = self.create_table_request(
|
|
244
|
-
table["name"], text, schema, table
|
|
245
|
-
)
|
|
246
|
-
yield Either(right=table_request)
|
|
247
|
-
downstream_node_fqn_table = fqn.build(
|
|
248
|
-
self.metadata,
|
|
249
|
-
entity_type=Table,
|
|
250
|
-
service_name=self.database_service.name.__root__,
|
|
251
|
-
database_name=db.name.__root__,
|
|
252
|
-
schema_name=schema.name.__root__,
|
|
253
|
-
table_name=table_request.name.__root__,
|
|
249
|
+
if self.include_glossary:
|
|
250
|
+
yield from self.create_glossary()
|
|
251
|
+
yield from self.create_glossary_term()
|
|
252
|
+
if self.include_lineage_stress_testing:
|
|
253
|
+
db = self.create_database_request(
|
|
254
|
+
"extended_sample_data", self.generate_text()
|
|
254
255
|
)
|
|
255
|
-
|
|
256
|
-
entity=Table, fqn=downstream_node_fqn_table
|
|
257
|
-
)
|
|
258
|
-
main_table = to_table
|
|
259
|
-
self.store_table_fqn.add(downstream_node_fqn_table)
|
|
256
|
+
yield Either(right=db)
|
|
260
257
|
|
|
258
|
+
schema = self.create_database_schema_request(
|
|
259
|
+
"extended_sample_database_schema", self.generate_text(), db
|
|
260
|
+
)
|
|
261
|
+
yield Either(right=schema)
|
|
262
|
+
for table in self.extended_tables["tables"]:
|
|
263
|
+
text = self.generate_text()
|
|
264
|
+
table_request = self.create_table_request(
|
|
265
|
+
table["name"], text, schema, table
|
|
266
|
+
)
|
|
267
|
+
yield Either(right=table_request)
|
|
268
|
+
downstream_node_fqn_table = fqn.build(
|
|
269
|
+
self.metadata,
|
|
270
|
+
entity_type=Table,
|
|
271
|
+
service_name=self.database_service.name.__root__,
|
|
272
|
+
database_name=db.name.__root__,
|
|
273
|
+
schema_name=schema.name.__root__,
|
|
274
|
+
table_name=table_request.name.__root__,
|
|
275
|
+
)
|
|
276
|
+
to_table = self.metadata.get_by_name(
|
|
277
|
+
entity=Table, fqn=downstream_node_fqn_table
|
|
278
|
+
)
|
|
279
|
+
main_table = to_table
|
|
280
|
+
self.store_table_fqn.add(downstream_node_fqn_table)
|
|
281
|
+
|
|
282
|
+
for _ in range(40):
|
|
283
|
+
# 40 Dynamic Lineage Depths
|
|
284
|
+
name = self.generate_name()
|
|
285
|
+
table_request = self.create_table_request(name, text, schema, table)
|
|
286
|
+
yield Either(right=table_request)
|
|
287
|
+
upstream_node_fqn_table = fqn.build(
|
|
288
|
+
self.metadata,
|
|
289
|
+
entity_type=Table,
|
|
290
|
+
service_name=self.database_service.name.__root__,
|
|
291
|
+
database_name=db.name.__root__,
|
|
292
|
+
schema_name=schema.name.__root__,
|
|
293
|
+
table_name=table_request.name.__root__,
|
|
294
|
+
)
|
|
295
|
+
from_table = self.metadata.get_by_name(
|
|
296
|
+
entity=Table, fqn=upstream_node_fqn_table
|
|
297
|
+
)
|
|
298
|
+
yield from self.create_depth_nodes(
|
|
299
|
+
from_table=from_table, to_table=to_table
|
|
300
|
+
)
|
|
301
|
+
to_table = from_table
|
|
261
302
|
for _ in range(40):
|
|
262
|
-
# 40 Dynamic Lineage Depths
|
|
263
303
|
name = self.generate_name()
|
|
264
|
-
table_request = self.create_table_request(
|
|
304
|
+
table_request = self.create_table_request(
|
|
305
|
+
name, text, schema, self.extended_tables["tables"][-1]
|
|
306
|
+
)
|
|
265
307
|
yield Either(right=table_request)
|
|
266
308
|
upstream_node_fqn_table = fqn.build(
|
|
267
309
|
self.metadata,
|
|
@@ -275,127 +317,75 @@ class ExtendedSampleDataSource(Source): # pylint: disable=too-many-instance-att
|
|
|
275
317
|
entity=Table, fqn=upstream_node_fqn_table
|
|
276
318
|
)
|
|
277
319
|
yield from self.create_depth_nodes(
|
|
278
|
-
from_table=from_table, to_table=
|
|
320
|
+
from_table=from_table, to_table=main_table
|
|
279
321
|
)
|
|
280
|
-
to_table = from_table
|
|
281
|
-
for _ in range(40):
|
|
282
|
-
name = self.generate_name()
|
|
283
|
-
table_request = self.create_table_request(
|
|
284
|
-
name, text, schema, self.extended_tables["tables"][-1]
|
|
285
|
-
)
|
|
286
|
-
yield Either(right=table_request)
|
|
287
|
-
upstream_node_fqn_table = fqn.build(
|
|
288
|
-
self.metadata,
|
|
289
|
-
entity_type=Table,
|
|
290
|
-
service_name=self.database_service.name.__root__,
|
|
291
|
-
database_name=db.name.__root__,
|
|
292
|
-
schema_name=schema.name.__root__,
|
|
293
|
-
table_name=table_request.name.__root__,
|
|
294
|
-
)
|
|
295
|
-
from_table = self.metadata.get_by_name(
|
|
296
|
-
entity=Table, fqn=upstream_node_fqn_table
|
|
297
|
-
)
|
|
298
|
-
yield from self.create_depth_nodes(
|
|
299
|
-
from_table=from_table, to_table=main_table
|
|
300
|
-
)
|
|
301
322
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
yield from self.create_depth_nodes(from_table=from_table, to_table=to_table)
|
|
319
|
-
|
|
320
|
-
self.dashboard_service_json["name"] = name
|
|
321
|
-
self.dashboard_service_json["description"] = text
|
|
322
|
-
for chart in self.charts["charts"]:
|
|
323
|
-
yield Either(
|
|
324
|
-
right=CreateChartRequest(
|
|
325
|
-
name=chart["name"],
|
|
326
|
-
displayName=chart["displayName"],
|
|
327
|
-
description=chart["description"],
|
|
328
|
-
chartType=get_standard_chart_type(chart["chartType"]),
|
|
329
|
-
sourceUrl=chart["sourceUrl"],
|
|
330
|
-
service=self.dashboard_service.fullyQualifiedName,
|
|
323
|
+
for table in self.tables["tables"]:
|
|
324
|
+
text = self.generate_text()
|
|
325
|
+
table_request = self.create_table_request(
|
|
326
|
+
table["name"], text, schema, table
|
|
327
|
+
)
|
|
328
|
+
yield Either(right=table_request)
|
|
329
|
+
table_entity_fqn = fqn.build(
|
|
330
|
+
self.metadata,
|
|
331
|
+
entity_type=Table,
|
|
332
|
+
service_name=self.database_service.name.__root__,
|
|
333
|
+
database_name=db.name.__root__,
|
|
334
|
+
schema_name=schema.name.__root__,
|
|
335
|
+
table_name=table_request.name.__root__,
|
|
336
|
+
)
|
|
337
|
+
from_table = self.metadata.get_by_name(
|
|
338
|
+
entity=Table, fqn=table_entity_fqn
|
|
331
339
|
)
|
|
332
|
-
)
|
|
333
|
-
for data_model in self.data_models["datamodels"]:
|
|
334
|
-
name = self.generate_name()
|
|
335
|
-
text = self.generate_text()
|
|
336
|
-
data_model_request = self.create_dashboard_data_model_request(
|
|
337
|
-
name, text, data_model
|
|
338
|
-
)
|
|
339
|
-
yield Either(right=data_model_request)
|
|
340
|
-
data_model_entity_fqn = fqn.build(
|
|
341
|
-
self.metadata,
|
|
342
|
-
entity_type=DashboardDataModel,
|
|
343
|
-
service_name=self.dashboard_service.name.__root__,
|
|
344
|
-
data_model_name=data_model_request.name.__root__,
|
|
345
|
-
)
|
|
346
|
-
self.store_data_model_fqn.append(data_model_entity_fqn)
|
|
347
340
|
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
for dashboard_datamodel_fqn in self.store_data_model_fqn:
|
|
351
|
-
to_datamodel = self.metadata.get_by_name(
|
|
352
|
-
entity=DashboardDataModel, fqn=dashboard_datamodel_fqn
|
|
341
|
+
yield from self.create_depth_nodes(
|
|
342
|
+
from_table=from_table, to_table=to_table
|
|
353
343
|
)
|
|
354
344
|
|
|
345
|
+
self.dashboard_service_json["name"] = name
|
|
346
|
+
self.dashboard_service_json["description"] = text
|
|
347
|
+
for chart in self.charts["charts"]:
|
|
355
348
|
yield Either(
|
|
356
|
-
right=
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
id=to_datamodel.id.__root__,
|
|
363
|
-
type="dashboardDataModel",
|
|
364
|
-
),
|
|
365
|
-
lineageDetails=LineageDetails(
|
|
366
|
-
source=LineageSource.DashboardLineage
|
|
367
|
-
),
|
|
368
|
-
)
|
|
369
|
-
)
|
|
370
|
-
)
|
|
371
|
-
for dashboard in self.dashboards["dashboards"]:
|
|
372
|
-
dashboard_request = CreateDashboardRequest(
|
|
373
|
-
name=dashboard["name"],
|
|
374
|
-
displayName=dashboard["displayName"],
|
|
375
|
-
description=dashboard["description"],
|
|
376
|
-
sourceUrl=dashboard["sourceUrl"],
|
|
377
|
-
charts=dashboard["charts"],
|
|
349
|
+
right=CreateChartRequest(
|
|
350
|
+
name=chart["name"],
|
|
351
|
+
displayName=chart["displayName"],
|
|
352
|
+
description=chart["description"],
|
|
353
|
+
chartType=get_standard_chart_type(chart["chartType"]),
|
|
354
|
+
sourceUrl=chart["sourceUrl"],
|
|
378
355
|
service=self.dashboard_service.fullyQualifiedName,
|
|
379
356
|
)
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
357
|
+
)
|
|
358
|
+
for data_model in self.data_models["datamodels"]:
|
|
359
|
+
name = self.generate_name()
|
|
360
|
+
text = self.generate_text()
|
|
361
|
+
data_model_request = self.create_dashboard_data_model_request(
|
|
362
|
+
name, text, data_model
|
|
363
|
+
)
|
|
364
|
+
yield Either(right=data_model_request)
|
|
365
|
+
data_model_entity_fqn = fqn.build(
|
|
366
|
+
self.metadata,
|
|
367
|
+
entity_type=DashboardDataModel,
|
|
368
|
+
service_name=self.dashboard_service.name.__root__,
|
|
369
|
+
data_model_name=data_model_request.name.__root__,
|
|
370
|
+
)
|
|
371
|
+
self.store_data_model_fqn.append(data_model_entity_fqn)
|
|
372
|
+
|
|
373
|
+
for table_fqn in self.store_table_fqn:
|
|
374
|
+
from_table = self.metadata.get_by_name(entity=Table, fqn=table_fqn)
|
|
375
|
+
for dashboard_datamodel_fqn in self.store_data_model_fqn:
|
|
376
|
+
to_datamodel = self.metadata.get_by_name(
|
|
377
|
+
entity=DashboardDataModel, fqn=dashboard_datamodel_fqn
|
|
389
378
|
)
|
|
379
|
+
|
|
390
380
|
yield Either(
|
|
391
381
|
right=AddLineageRequest(
|
|
392
382
|
edge=EntitiesEdge(
|
|
393
383
|
fromEntity=EntityReference(
|
|
394
|
-
id=
|
|
395
|
-
type="dashboardDataModel",
|
|
384
|
+
id=from_table.id.__root__, type="table"
|
|
396
385
|
),
|
|
397
386
|
toEntity=EntityReference(
|
|
398
|
-
id=
|
|
387
|
+
id=to_datamodel.id.__root__,
|
|
388
|
+
type="dashboardDataModel",
|
|
399
389
|
),
|
|
400
390
|
lineageDetails=LineageDetails(
|
|
401
391
|
source=LineageSource.DashboardLineage
|
|
@@ -403,6 +393,84 @@ class ExtendedSampleDataSource(Source): # pylint: disable=too-many-instance-att
|
|
|
403
393
|
)
|
|
404
394
|
)
|
|
405
395
|
)
|
|
396
|
+
for dashboard in self.dashboards["dashboards"]:
|
|
397
|
+
dashboard_request = CreateDashboardRequest(
|
|
398
|
+
name=dashboard["name"],
|
|
399
|
+
displayName=dashboard["displayName"],
|
|
400
|
+
description=dashboard["description"],
|
|
401
|
+
sourceUrl=dashboard["sourceUrl"],
|
|
402
|
+
charts=dashboard["charts"],
|
|
403
|
+
service=self.dashboard_service.fullyQualifiedName,
|
|
404
|
+
)
|
|
405
|
+
yield Either(right=dashboard_request)
|
|
406
|
+
dashboard_fqn = fqn.build(
|
|
407
|
+
self.metadata,
|
|
408
|
+
entity_type=Dashboard,
|
|
409
|
+
service_name=self.dashboard_service.name.__root__,
|
|
410
|
+
dashboard_name=dashboard_request.name.__root__,
|
|
411
|
+
)
|
|
412
|
+
to_dashboard = self.metadata.get_by_name(
|
|
413
|
+
entity=Dashboard, fqn=dashboard_fqn
|
|
414
|
+
)
|
|
415
|
+
yield Either(
|
|
416
|
+
right=AddLineageRequest(
|
|
417
|
+
edge=EntitiesEdge(
|
|
418
|
+
fromEntity=EntityReference(
|
|
419
|
+
id=to_datamodel.id.__root__,
|
|
420
|
+
type="dashboardDataModel",
|
|
421
|
+
),
|
|
422
|
+
toEntity=EntityReference(
|
|
423
|
+
id=to_dashboard.id.__root__, type="dashboard"
|
|
424
|
+
),
|
|
425
|
+
lineageDetails=LineageDetails(
|
|
426
|
+
source=LineageSource.DashboardLineage
|
|
427
|
+
),
|
|
428
|
+
)
|
|
429
|
+
)
|
|
430
|
+
)
|
|
431
|
+
|
|
432
|
+
def create_glossary(self):
|
|
433
|
+
self.main_glossary = CreateGlossaryRequest(
|
|
434
|
+
name="NestedGlossaryTest",
|
|
435
|
+
displayName="NestedGlossaryTest",
|
|
436
|
+
description="Description of test glossary",
|
|
437
|
+
)
|
|
438
|
+
yield Either(right=self.main_glossary)
|
|
439
|
+
|
|
440
|
+
def create_glossary_term(self):
|
|
441
|
+
"""
|
|
442
|
+
Create Glossary Terms
|
|
443
|
+
"""
|
|
444
|
+
for _ in range(20):
|
|
445
|
+
random_name = self.fake.first_name()
|
|
446
|
+
yield Either(
|
|
447
|
+
right=CreateGlossaryTermRequest(
|
|
448
|
+
glossary="NestedGlossaryTest",
|
|
449
|
+
name=random_name,
|
|
450
|
+
displayName=random_name,
|
|
451
|
+
description="Test glossary term ",
|
|
452
|
+
parent=self.glossary_term_list[-1]
|
|
453
|
+
if len(self.glossary_term_list) > 3
|
|
454
|
+
else None,
|
|
455
|
+
)
|
|
456
|
+
)
|
|
457
|
+
if len(self.glossary_term_list) > 3 and self.glossary_term_list[-1]:
|
|
458
|
+
self.glossary_term_list.append(
|
|
459
|
+
f"{self.glossary_term_list[-1]}.{random_name}"
|
|
460
|
+
)
|
|
461
|
+
else:
|
|
462
|
+
self.glossary_term_list.append(f"NestedGlossaryTest.{random_name}")
|
|
463
|
+
|
|
464
|
+
for _ in range(500):
|
|
465
|
+
random_name = self.fake.first_name()
|
|
466
|
+
yield Either(
|
|
467
|
+
right=CreateGlossaryTermRequest(
|
|
468
|
+
glossary="NestedGlossaryTest",
|
|
469
|
+
name=random_name,
|
|
470
|
+
displayName=random_name,
|
|
471
|
+
description="Test glossary term 1",
|
|
472
|
+
)
|
|
473
|
+
)
|
|
406
474
|
|
|
407
475
|
def generate_name(self):
|
|
408
476
|
return f"Sample-@!3_(%t3st@)%_^{self.fake.name()}"
|
|
@@ -126,7 +126,6 @@ def get_metastore_connection(connection: Any) -> Engine:
|
|
|
126
126
|
|
|
127
127
|
@get_metastore_connection.register
|
|
128
128
|
def _(connection: PostgresConnection):
|
|
129
|
-
|
|
130
129
|
# import required to load sqlalchemy plugin
|
|
131
130
|
# pylint: disable=import-outside-toplevel,unused-import
|
|
132
131
|
from metadata.ingestion.source.database.hive.metastore_dialects.postgres import ( # nopycln: import
|
|
@@ -153,7 +152,6 @@ def _(connection: PostgresConnection):
|
|
|
153
152
|
|
|
154
153
|
@get_metastore_connection.register
|
|
155
154
|
def _(connection: MysqlConnection):
|
|
156
|
-
|
|
157
155
|
# import required to load sqlalchemy plugin
|
|
158
156
|
# pylint: disable=import-outside-toplevel,unused-import
|
|
159
157
|
from metadata.ingestion.source.database.hive.metastore_dialects.mysql import ( # nopycln: import
|
|
@@ -114,7 +114,6 @@ class MssqlSource(StoredProcedureMixin, CommonDbSourceService, MultiDBSource):
|
|
|
114
114
|
yield from self._execute_database_query(MSSQL_GET_DATABASE)
|
|
115
115
|
|
|
116
116
|
def get_database_names(self) -> Iterable[str]:
|
|
117
|
-
|
|
118
117
|
if not self.config.serviceConnection.__root__.config.ingestAllDatabases:
|
|
119
118
|
configured_db = self.config.serviceConnection.__root__.config.database
|
|
120
119
|
self.set_inspector(database_name=configured_db)
|
|
@@ -236,8 +236,7 @@ Q_HISTORY (database_name, query_text, start_time, end_time, duration,query_type,
|
|
|
236
236
|
CROSS APPLY sys.dm_exec_sql_text(p.plan_handle) AS t
|
|
237
237
|
INNER JOIN sys.databases db
|
|
238
238
|
ON db.database_id = t.dbid
|
|
239
|
-
WHERE
|
|
240
|
-
AND t.text NOT LIKE '/* {{"app": "OpenMetadata", %%}} */%%'
|
|
239
|
+
WHERE t.text NOT LIKE '/* {{"app": "OpenMetadata", %%}} */%%'
|
|
241
240
|
AND t.text NOT LIKE '/* {{"app": "dbt", %%}} */%%'
|
|
242
241
|
AND p.objtype NOT IN ('Prepared', 'Proc')
|
|
243
242
|
AND s.last_execution_time > '{start_date}'
|
|
@@ -172,14 +172,14 @@ SELECT
|
|
|
172
172
|
SQL_FULLTEXT AS query_text,
|
|
173
173
|
TO_TIMESTAMP(FIRST_LOAD_TIME, 'yy-MM-dd/HH24:MI:SS') AS start_time,
|
|
174
174
|
ELAPSED_TIME / 1000 AS duration,
|
|
175
|
-
TO_TIMESTAMP(FIRST_LOAD_TIME, 'yy-MM-dd/HH24:MI:SS') + NUMTODSINTERVAL(ELAPSED_TIME /
|
|
175
|
+
TO_TIMESTAMP(FIRST_LOAD_TIME, 'yy-MM-dd/HH24:MI:SS') + NUMTODSINTERVAL(ELAPSED_TIME / 1000000, 'SECOND') AS end_time
|
|
176
176
|
FROM gv$sql
|
|
177
177
|
WHERE OBJECT_STATUS = 'VALID'
|
|
178
178
|
{filters}
|
|
179
179
|
AND SQL_FULLTEXT NOT LIKE '/* {{"app": "OpenMetadata", %%}} */%%'
|
|
180
180
|
AND SQL_FULLTEXT NOT LIKE '/* {{"app": "dbt", %%}} */%%'
|
|
181
181
|
AND TO_TIMESTAMP(FIRST_LOAD_TIME, 'yy-MM-dd/HH24:MI:SS') >= TO_TIMESTAMP('{start_time}', 'yy-MM-dd HH24:MI:SS')
|
|
182
|
-
AND TO_TIMESTAMP(FIRST_LOAD_TIME, 'yy-MM-dd/HH24:MI:SS') + NUMTODSINTERVAL(ELAPSED_TIME /
|
|
182
|
+
AND TO_TIMESTAMP(FIRST_LOAD_TIME, 'yy-MM-dd/HH24:MI:SS') + NUMTODSINTERVAL(ELAPSED_TIME / 1000000, 'SECOND')
|
|
183
183
|
< TO_TIMESTAMP('{end_time}', 'yy-MM-dd HH24:MI:SS')
|
|
184
184
|
ORDER BY FIRST_LOAD_TIME DESC
|
|
185
185
|
OFFSET 0 ROWS FETCH NEXT {result_limit} ROWS ONLY
|
|
@@ -465,7 +465,6 @@ class SasSource(
|
|
|
465
465
|
or table_entity.extension.__root__.get("analysisTimeStamp")
|
|
466
466
|
!= table_extension.get("analysisTimeStamp")
|
|
467
467
|
):
|
|
468
|
-
|
|
469
468
|
# create the columns of the table
|
|
470
469
|
columns, col_profile_list = self.create_columns_and_profiles(
|
|
471
470
|
col_entity_instances, table_entity_instance
|
|
@@ -711,10 +710,10 @@ class SasSource(
|
|
|
711
710
|
if "state" in table_resource and table_resource["state"] == "unloaded":
|
|
712
711
|
self.sas_client.load_table(table_uri + "/state?value=loaded")
|
|
713
712
|
|
|
714
|
-
except HTTPError as
|
|
713
|
+
except HTTPError as exc:
|
|
715
714
|
# append http error to table description if it can't be found
|
|
716
715
|
logger.error(f"table_uri: {table_uri}")
|
|
717
|
-
self.report_description.append(str(
|
|
716
|
+
self.report_description.append(str(exc))
|
|
718
717
|
name_index = table_uri.rindex("/")
|
|
719
718
|
table_name = table_uri[name_index + 1 :]
|
|
720
719
|
param = f"filter=eq(name,'{table_name}')"
|
|
@@ -39,7 +39,6 @@ from metadata.utils.sqlalchemy_utils import (
|
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
def _quoted_name(entity_name: Optional[str]) -> Optional[str]:
|
|
42
|
-
|
|
43
42
|
if entity_name:
|
|
44
43
|
return fqn.quote_name(entity_name)
|
|
45
44
|
|
|
@@ -121,13 +120,10 @@ def get_view_definition( # pylint: disable=unused-argument
|
|
|
121
120
|
schema = schema or self.default_schema_name
|
|
122
121
|
if schema:
|
|
123
122
|
cursor = connection.execute(
|
|
124
|
-
"
|
|
125
|
-
f"LIKE '{view_name}' IN {schema}"
|
|
123
|
+
f"SELECT GET_DDL('VIEW','{schema}.{view_name}') AS \"text\""
|
|
126
124
|
)
|
|
127
125
|
else:
|
|
128
|
-
cursor = connection.execute(
|
|
129
|
-
"SHOW /* sqlalchemy:get_view_definition */ VIEWS " f"LIKE '{view_name}'"
|
|
130
|
-
)
|
|
126
|
+
cursor = connection.execute(f"SELECT GET_DDL('VIEW','{view_name}') AS \"text\"")
|
|
131
127
|
n2i = self.__class__._map_name_to_idx(cursor) # pylint: disable=protected-access
|
|
132
128
|
try:
|
|
133
129
|
ret = cursor.fetchone()
|
|
@@ -153,7 +153,6 @@ class StoredProcedureMixin(ABC):
|
|
|
153
153
|
query_type=query_by_procedure.query_type,
|
|
154
154
|
query_text=query_by_procedure.query_text,
|
|
155
155
|
):
|
|
156
|
-
|
|
157
156
|
self.context.stored_procedure_query_lineage = True
|
|
158
157
|
for either_lineage in get_lineage_by_query(
|
|
159
158
|
self.metadata,
|
|
@@ -13,11 +13,10 @@ Databricks Unity Catalog Source source methods.
|
|
|
13
13
|
"""
|
|
14
14
|
import json
|
|
15
15
|
import traceback
|
|
16
|
-
from typing import Any,
|
|
16
|
+
from typing import Any, Iterable, List, Optional, Tuple, Union
|
|
17
17
|
|
|
18
18
|
from databricks.sdk.service.catalog import ColumnInfo
|
|
19
19
|
from databricks.sdk.service.catalog import TableConstraint as DBTableConstraint
|
|
20
|
-
from databricks.sdk.service.catalog import TableConstraintList
|
|
21
20
|
|
|
22
21
|
from metadata.generated.schema.api.data.createDatabase import CreateDatabaseRequest
|
|
23
22
|
from metadata.generated.schema.api.data.createDatabaseSchema import (
|
|
@@ -75,19 +74,6 @@ from metadata.utils.logger import ingestion_logger
|
|
|
75
74
|
logger = ingestion_logger()
|
|
76
75
|
|
|
77
76
|
|
|
78
|
-
# pylint: disable=not-callable
|
|
79
|
-
@classmethod
|
|
80
|
-
def from_dict(cls, dct: Dict[str, Any]) -> "TableConstraintList":
|
|
81
|
-
return cls(
|
|
82
|
-
table_constraints=[
|
|
83
|
-
DBTableConstraint.from_dict(constraint) for constraint in dct
|
|
84
|
-
]
|
|
85
|
-
)
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
TableConstraintList.from_dict = from_dict
|
|
89
|
-
|
|
90
|
-
|
|
91
77
|
class UnitycatalogSource(DatabaseServiceSource, MultiDBSource):
|
|
92
78
|
"""
|
|
93
79
|
Implements the necessary methods to extract
|
|
@@ -351,7 +337,7 @@ class UnitycatalogSource(DatabaseServiceSource, MultiDBSource):
|
|
|
351
337
|
)
|
|
352
338
|
|
|
353
339
|
def get_table_constraints(
|
|
354
|
-
self, constraints:
|
|
340
|
+
self, constraints: List[DBTableConstraint]
|
|
355
341
|
) -> Tuple[List[TableConstraint], List[ForeignConstrains]]:
|
|
356
342
|
"""
|
|
357
343
|
Function to handle table constraint for the current table and add it to context
|
|
@@ -359,23 +345,22 @@ class UnitycatalogSource(DatabaseServiceSource, MultiDBSource):
|
|
|
359
345
|
|
|
360
346
|
primary_constraints = []
|
|
361
347
|
foreign_constraints = []
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
columns=constraint.primary_key_constraint.child_columns,
|
|
369
|
-
)
|
|
348
|
+
for constraint in constraints:
|
|
349
|
+
if constraint.primary_key_constraint:
|
|
350
|
+
primary_constraints.append(
|
|
351
|
+
TableConstraint(
|
|
352
|
+
constraintType=ConstraintType.PRIMARY_KEY,
|
|
353
|
+
columns=constraint.primary_key_constraint.child_columns,
|
|
370
354
|
)
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
355
|
+
)
|
|
356
|
+
if constraint.foreign_key_constraint:
|
|
357
|
+
foreign_constraints.append(
|
|
358
|
+
ForeignConstrains(
|
|
359
|
+
child_columns=constraint.foreign_key_constraint.child_columns,
|
|
360
|
+
parent_columns=constraint.foreign_key_constraint.parent_columns,
|
|
361
|
+
parent_table=constraint.foreign_key_constraint.parent_table,
|
|
378
362
|
)
|
|
363
|
+
)
|
|
379
364
|
return primary_constraints, foreign_constraints
|
|
380
365
|
|
|
381
366
|
def _get_foreign_constraints(self, foreign_columns) -> List[TableConstraint]:
|
|
@@ -226,14 +226,16 @@ class CommonBrokerSource(MessagingServiceSource, ABC):
|
|
|
226
226
|
if topic_entity and self.generate_sample_data:
|
|
227
227
|
topic_name = topic_details.topic_name
|
|
228
228
|
sample_data = []
|
|
229
|
+
messages = None
|
|
229
230
|
try:
|
|
230
|
-
self.consumer_client
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
231
|
+
if self.consumer_client:
|
|
232
|
+
self.consumer_client.subscribe(
|
|
233
|
+
[topic_name], on_assign=on_partitions_assignment_to_consumer
|
|
234
|
+
)
|
|
235
|
+
logger.info(
|
|
236
|
+
f"Broker consumer polling for sample messages in topic {topic_name}"
|
|
237
|
+
)
|
|
238
|
+
messages = self.consumer_client.consume(num_messages=10, timeout=10)
|
|
237
239
|
except Exception as exc:
|
|
238
240
|
yield Either(
|
|
239
241
|
left=StackTraceError(
|
|
@@ -246,7 +248,6 @@ class CommonBrokerSource(MessagingServiceSource, ABC):
|
|
|
246
248
|
if messages:
|
|
247
249
|
for message in messages:
|
|
248
250
|
try:
|
|
249
|
-
|
|
250
251
|
value = message.value()
|
|
251
252
|
sample_data.append(
|
|
252
253
|
self.decode_message(
|