openmetadata-ingestion 1.3.1.3__py3-none-any.whl → 1.3.2.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/clients/azure_client.py +85 -0
- metadata/data_quality/source/test_suite.py +2 -2
- metadata/examples/workflows/datalake_azure_default.yaml +29 -0
- metadata/examples/workflows/dbt.yaml +17 -6
- 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 +1 -1
- 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 +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/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 +1 -1
- metadata/generated/schema/api/feed/createThread.py +5 -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 +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 +6 -2
- metadata/generated/schema/configuration/authConfig.py +1 -1
- metadata/generated/schema/configuration/authenticationConfiguration.py +13 -2
- 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/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 +12 -2
- metadata/generated/schema/entity/applications/appRunRecord.py +2 -7
- 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/autoTaggerAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/metaPilotAppConfig.py +8 -17
- 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 +1 -1
- metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/external/metaPilotAppPrivateConfig.py +1 -1
- metadata/generated/schema/entity/applications/createAppRequest.py +2 -2
- 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 +4 -1
- metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +5 -2
- 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 +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/suggestion.py +1 -1
- metadata/generated/schema/entity/feed/thread.py +12 -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 +6 -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 +34 -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 +20 -0
- 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 +7 -3
- 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 +7 -3
- 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/sapHana/__init__.py +3 -0
- metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +20 -0
- metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +36 -0
- metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +6 -40
- 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 +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 +34 -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/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 +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/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/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 +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/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 +9 -11
- metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +7 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +7 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +7 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +7 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +7 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +7 -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 +46 -0
- 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 +6 -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 +7 -3
- metadata/generated/schema/security/credentials/gcpExternalAccount.py +37 -0
- metadata/generated/schema/security/credentials/gcpValues.py +2 -2
- 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 +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/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 +43 -0
- 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 +1 -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 +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/enumConfig.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/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 +5 -3
- metadata/ingestion/api/parser.py +87 -23
- metadata/ingestion/api/topology_runner.py +4 -3
- metadata/ingestion/lineage/parser.py +35 -20
- metadata/ingestion/ometa/mixins/patch_mixin.py +2 -4
- metadata/ingestion/ometa/routes.py +15 -0
- metadata/ingestion/source/dashboard/powerbi/client.py +4 -1
- metadata/ingestion/source/database/azuresql/connection.py +21 -3
- metadata/ingestion/source/database/datalake/connection.py +2 -14
- metadata/ingestion/source/database/datalake/metadata.py +3 -2
- metadata/ingestion/source/database/dbt/dbt_config.py +3 -15
- metadata/ingestion/source/database/mssql/lineage.py +1 -0
- metadata/ingestion/source/database/mssql/usage.py +5 -1
- metadata/ingestion/source/database/mysql/connection.py +14 -0
- metadata/ingestion/source/database/oracle/connection.py +5 -0
- metadata/ingestion/source/database/oracle/queries.py +1 -1
- metadata/ingestion/source/database/postgres/connection.py +15 -0
- metadata/ingestion/source/database/stored_procedures_mixin.py +1 -1
- metadata/ingestion/source/database/unitycatalog/connection.py +12 -8
- metadata/ingestion/source/pipeline/dagster/metadata.py +3 -1
- metadata/ingestion/source/storage/storage_service.py +5 -2
- metadata/parsers/json_schema_parser.py +17 -7
- metadata/pii/scanners/ner_scanner.py +5 -3
- metadata/profiler/interface/profiler_interface.py +4 -4
- metadata/profiler/processor/sample_data_handler.py +45 -8
- metadata/profiler/source/databricks/profiler_source.py +36 -0
- metadata/profiler/source/metadata.py +7 -1
- metadata/profiler/source/profiler_source_factory.py +8 -0
- metadata/readers/dataframe/json.py +11 -6
- metadata/readers/dataframe/models.py +1 -0
- metadata/utils/credentials.py +36 -19
- metadata/utils/datalake/datalake_utils.py +34 -4
- metadata/utils/secrets/azure_kv_secrets_manager.py +3 -19
- metadata/utils/source_hash.py +23 -13
- metadata/utils/storage_metadata_config.py +2 -15
- metadata/workflow/base.py +1 -1
- {openmetadata_ingestion-1.3.1.3.dist-info → openmetadata_ingestion-1.3.2.0.dist-info}/METADATA +289 -289
- {openmetadata_ingestion-1.3.1.3.dist-info → openmetadata_ingestion-1.3.2.0.dist-info}/RECORD +561 -551
- /metadata/examples/workflows/{datalake_azure.yaml → datalake_azure_client_secret.yaml} +0 -0
- {openmetadata_ingestion-1.3.1.3.dist-info → openmetadata_ingestion-1.3.2.0.dist-info}/LICENSE +0 -0
- {openmetadata_ingestion-1.3.1.3.dist-info → openmetadata_ingestion-1.3.2.0.dist-info}/WHEEL +0 -0
- {openmetadata_ingestion-1.3.1.3.dist-info → openmetadata_ingestion-1.3.2.0.dist-info}/entry_points.txt +0 -0
- {openmetadata_ingestion-1.3.1.3.dist-info → openmetadata_ingestion-1.3.2.0.dist-info}/top_level.txt +0 -0
|
@@ -217,6 +217,11 @@ class LineageParser:
|
|
|
217
217
|
"""
|
|
218
218
|
aliases = self.table_aliases
|
|
219
219
|
values = identifier.value.split(".")
|
|
220
|
+
|
|
221
|
+
if len(values) > 4:
|
|
222
|
+
logger.debug(f"Invalid comparison element from identifier: {identifier}")
|
|
223
|
+
return None, None
|
|
224
|
+
|
|
220
225
|
database_name, schema_name, table_or_alias, column_name = (
|
|
221
226
|
[None] * (4 - len(values))
|
|
222
227
|
) + values
|
|
@@ -307,29 +312,39 @@ class LineageParser:
|
|
|
307
312
|
comparisons.append(sub)
|
|
308
313
|
|
|
309
314
|
for comparison in comparisons:
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
315
|
+
try:
|
|
316
|
+
if (
|
|
317
|
+
"." not in comparison.left.value
|
|
318
|
+
or "." not in comparison.right.value
|
|
319
|
+
):
|
|
320
|
+
logger.debug(f"Ignoring comparison {comparison}")
|
|
321
|
+
continue
|
|
322
|
+
|
|
323
|
+
table_left, column_left = self.get_comparison_elements(
|
|
324
|
+
identifier=comparison.left
|
|
325
|
+
)
|
|
326
|
+
table_right, column_right = self.get_comparison_elements(
|
|
327
|
+
identifier=comparison.right
|
|
328
|
+
)
|
|
320
329
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
330
|
+
if not table_left or not table_right:
|
|
331
|
+
logger.warning(
|
|
332
|
+
f"Can't extract table names when parsing JOIN information from {comparison}"
|
|
333
|
+
)
|
|
334
|
+
logger.debug(f"Query: {sql_statement}")
|
|
335
|
+
continue
|
|
324
336
|
|
|
325
|
-
|
|
326
|
-
|
|
337
|
+
left_table_column = TableColumn(table=table_left, column=column_left)
|
|
338
|
+
right_table_column = TableColumn(table=table_right, column=column_right)
|
|
327
339
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
340
|
+
# We just send the info once, from Left -> Right.
|
|
341
|
+
# The backend will prepare the symmetric information.
|
|
342
|
+
self.stateful_add_table_joins(
|
|
343
|
+
join_data, left_table_column, right_table_column
|
|
344
|
+
)
|
|
345
|
+
except Exception as exc:
|
|
346
|
+
logger.debug(f"Cannot process comparison {comparison}: {exc}")
|
|
347
|
+
logger.debug(traceback.format_exc())
|
|
333
348
|
|
|
334
349
|
@cached_property
|
|
335
350
|
def table_joins(self) -> Dict[str, List[TableColumnJoin]]:
|
|
@@ -46,7 +46,7 @@ from metadata.ingestion.ometa.mixins.patch_mixin_utils import (
|
|
|
46
46
|
)
|
|
47
47
|
from metadata.ingestion.ometa.utils import model_str
|
|
48
48
|
from metadata.utils.deprecation import deprecated
|
|
49
|
-
from metadata.utils.logger import ometa_logger
|
|
49
|
+
from metadata.utils.logger import get_log_name, ometa_logger
|
|
50
50
|
|
|
51
51
|
logger = ometa_logger()
|
|
52
52
|
|
|
@@ -155,9 +155,7 @@ class OMetaPatchMixin(OMetaPatchMixinBase):
|
|
|
155
155
|
|
|
156
156
|
except Exception as exc:
|
|
157
157
|
logger.debug(traceback.format_exc())
|
|
158
|
-
logger.error(
|
|
159
|
-
f"Error trying to PATCH {entity.__name__} [{source.id.__root__}]: {exc}"
|
|
160
|
-
)
|
|
158
|
+
logger.error(f"Error trying to PATCH {get_log_name(source)}: {exc}")
|
|
161
159
|
|
|
162
160
|
return None
|
|
163
161
|
|
|
@@ -90,6 +90,16 @@ from metadata.generated.schema.api.tests.createTestDefinition import (
|
|
|
90
90
|
from metadata.generated.schema.api.tests.createTestSuite import CreateTestSuiteRequest
|
|
91
91
|
from metadata.generated.schema.dataInsight.dataInsightChart import DataInsightChart
|
|
92
92
|
from metadata.generated.schema.dataInsight.kpi.kpi import Kpi
|
|
93
|
+
from metadata.generated.schema.entity.applications.app import App
|
|
94
|
+
from metadata.generated.schema.entity.applications.createAppRequest import (
|
|
95
|
+
CreateAppRequest,
|
|
96
|
+
)
|
|
97
|
+
from metadata.generated.schema.entity.applications.marketplace.appMarketPlaceDefinition import (
|
|
98
|
+
AppMarketPlaceDefinition,
|
|
99
|
+
)
|
|
100
|
+
from metadata.generated.schema.entity.applications.marketplace.createAppMarketPlaceDefinitionReq import (
|
|
101
|
+
CreateAppMarketPlaceDefinitionRequest,
|
|
102
|
+
)
|
|
93
103
|
from metadata.generated.schema.entity.automations.workflow import Workflow
|
|
94
104
|
from metadata.generated.schema.entity.bot import Bot
|
|
95
105
|
from metadata.generated.schema.entity.classification.classification import (
|
|
@@ -232,4 +242,9 @@ ROUTES = {
|
|
|
232
242
|
# Suggestions
|
|
233
243
|
Suggestion.__name__: "/suggestions",
|
|
234
244
|
CreateSuggestionRequest.__name__: "/suggestions",
|
|
245
|
+
# Apps
|
|
246
|
+
App.__name__: "/apps",
|
|
247
|
+
CreateAppRequest.__name__: "/apps",
|
|
248
|
+
AppMarketPlaceDefinition.__name__: "/apps/marketplace",
|
|
249
|
+
CreateAppMarketPlaceDefinitionRequest.__name__: "/apps/marketplace",
|
|
235
250
|
}
|
|
@@ -19,6 +19,9 @@ from typing import List, Optional, Tuple
|
|
|
19
19
|
|
|
20
20
|
import msal
|
|
21
21
|
|
|
22
|
+
from metadata.generated.schema.entity.services.connections.dashboard.powerBIConnection import (
|
|
23
|
+
PowerBIConnection,
|
|
24
|
+
)
|
|
22
25
|
from metadata.ingestion.api.steps import InvalidSourceException
|
|
23
26
|
from metadata.ingestion.ometa.client import REST, ClientConfig
|
|
24
27
|
from metadata.ingestion.source.dashboard.powerbi.models import (
|
|
@@ -52,7 +55,7 @@ class PowerBiApiClient:
|
|
|
52
55
|
|
|
53
56
|
client: REST
|
|
54
57
|
|
|
55
|
-
def __init__(self, config):
|
|
58
|
+
def __init__(self, config: PowerBIConnection):
|
|
56
59
|
self.config = config
|
|
57
60
|
self.msal_client = msal.ConfidentialClientApplication(
|
|
58
61
|
client_id=self.config.clientId,
|
|
@@ -15,12 +15,13 @@ Source connection handler
|
|
|
15
15
|
from typing import Optional, Union
|
|
16
16
|
from urllib.parse import quote_plus
|
|
17
17
|
|
|
18
|
-
from sqlalchemy.engine import Engine
|
|
18
|
+
from sqlalchemy.engine import URL, Engine
|
|
19
19
|
|
|
20
20
|
from metadata.generated.schema.entity.automations.workflow import (
|
|
21
21
|
Workflow as AutomationWorkflow,
|
|
22
22
|
)
|
|
23
23
|
from metadata.generated.schema.entity.services.connections.database.azureSQLConnection import (
|
|
24
|
+
Authentication,
|
|
24
25
|
AzureSQLConnection,
|
|
25
26
|
)
|
|
26
27
|
from metadata.generated.schema.entity.services.connections.database.mssqlConnection import (
|
|
@@ -40,13 +41,29 @@ def get_connection_url(connection: Union[AzureSQLConnection, MssqlConnection]) -
|
|
|
40
41
|
Build the connection URL
|
|
41
42
|
"""
|
|
42
43
|
|
|
44
|
+
if connection.authenticationMode:
|
|
45
|
+
connection_string = f"Driver={connection.driver};Server={connection.hostPort};Database={connection.database};"
|
|
46
|
+
connection_string += f"Uid={connection.username};"
|
|
47
|
+
if (
|
|
48
|
+
connection.authenticationMode.authentication
|
|
49
|
+
== Authentication.ActiveDirectoryPassword
|
|
50
|
+
):
|
|
51
|
+
connection_string += f"Pwd={connection.password.get_secret_value()};"
|
|
52
|
+
|
|
53
|
+
connection_string += f"Encrypt={'yes' if connection.authenticationMode.encrypt else 'no'};TrustServerCertificate={'yes' if connection.authenticationMode.trustServerCertificate else 'no'};"
|
|
54
|
+
connection_string += f"Connection Timeout={connection.authenticationMode.connectionTimeout or 30};Authentication={connection.authenticationMode.authentication.value};"
|
|
55
|
+
|
|
56
|
+
connection_url = URL.create(
|
|
57
|
+
"mssql+pyodbc", query={"odbc_connect": connection_string}
|
|
58
|
+
)
|
|
59
|
+
return connection_url
|
|
43
60
|
url = f"{connection.scheme.value}://"
|
|
44
61
|
|
|
45
62
|
if connection.username:
|
|
46
63
|
url += f"{quote_plus(connection.username)}"
|
|
47
64
|
url += (
|
|
48
65
|
f":{quote_plus(connection.password.get_secret_value())}"
|
|
49
|
-
if connection
|
|
66
|
+
if connection.password
|
|
50
67
|
else ""
|
|
51
68
|
)
|
|
52
69
|
url += "@"
|
|
@@ -54,12 +71,13 @@ def get_connection_url(connection: Union[AzureSQLConnection, MssqlConnection]) -
|
|
|
54
71
|
url += f"{connection.hostPort}"
|
|
55
72
|
url += f"/{quote_plus(connection.database)}" if connection.database else ""
|
|
56
73
|
url += f"?driver={quote_plus(connection.driver)}"
|
|
74
|
+
|
|
57
75
|
options = get_connection_options_dict(connection)
|
|
58
76
|
if options:
|
|
59
77
|
if not connection.database:
|
|
60
78
|
url += "/"
|
|
61
79
|
params = "&".join(
|
|
62
|
-
f"{key}={quote_plus(value)}" for
|
|
80
|
+
f"{key}={quote_plus(value)}" for key, value in options.items() if value
|
|
63
81
|
)
|
|
64
82
|
url = f"{url}?{params}"
|
|
65
83
|
|
|
@@ -20,6 +20,7 @@ from typing import Optional
|
|
|
20
20
|
|
|
21
21
|
from google.cloud import storage
|
|
22
22
|
|
|
23
|
+
from metadata.clients.azure_client import AzureClient
|
|
23
24
|
from metadata.generated.schema.entity.automations.workflow import (
|
|
24
25
|
Workflow as AutomationWorkflow,
|
|
25
26
|
)
|
|
@@ -88,22 +89,9 @@ def _(config: GCSConfig):
|
|
|
88
89
|
|
|
89
90
|
@get_datalake_client.register
|
|
90
91
|
def _(config: AzureConfig):
|
|
91
|
-
from azure.identity import ClientSecretCredential
|
|
92
|
-
from azure.storage.blob import BlobServiceClient
|
|
93
92
|
|
|
94
93
|
try:
|
|
95
|
-
|
|
96
|
-
config.securityConfig.tenantId,
|
|
97
|
-
config.securityConfig.clientId,
|
|
98
|
-
config.securityConfig.clientSecret.get_secret_value(),
|
|
99
|
-
)
|
|
100
|
-
|
|
101
|
-
azure_client = BlobServiceClient(
|
|
102
|
-
f"https://{config.securityConfig.accountName}.blob.core.windows.net/",
|
|
103
|
-
credential=credentials,
|
|
104
|
-
)
|
|
105
|
-
return azure_client
|
|
106
|
-
|
|
94
|
+
return AzureClient(config.securityConfig).create_blob_client()
|
|
107
95
|
except Exception as exc:
|
|
108
96
|
raise RuntimeError(
|
|
109
97
|
f"Unknown error connecting with {config.securityConfig}: {exc}."
|
|
@@ -407,7 +407,7 @@ class DatalakeSource(DatabaseServiceSource):
|
|
|
407
407
|
schema_name = self.context.database_schema
|
|
408
408
|
try:
|
|
409
409
|
table_constraints = None
|
|
410
|
-
data_frame = fetch_dataframe(
|
|
410
|
+
data_frame, raw_data = fetch_dataframe(
|
|
411
411
|
config_source=self.config_source,
|
|
412
412
|
client=self.client,
|
|
413
413
|
file_fqn=DatalakeTableSchemaWrapper(
|
|
@@ -415,10 +415,11 @@ class DatalakeSource(DatabaseServiceSource):
|
|
|
415
415
|
bucket_name=schema_name,
|
|
416
416
|
file_extension=table_extension,
|
|
417
417
|
),
|
|
418
|
+
fetch_raw_data=True,
|
|
418
419
|
)
|
|
419
420
|
if data_frame:
|
|
420
421
|
column_parser = DataFrameColumnParser.create(
|
|
421
|
-
data_frame[0], table_extension
|
|
422
|
+
data_frame[0], table_extension, raw_data=raw_data
|
|
422
423
|
)
|
|
423
424
|
columns = column_parser.get_columns()
|
|
424
425
|
else:
|
|
@@ -20,6 +20,7 @@ from typing import Dict, Iterable, List, Optional, Tuple
|
|
|
20
20
|
import requests
|
|
21
21
|
|
|
22
22
|
from metadata.clients.aws_client import AWSClient
|
|
23
|
+
from metadata.clients.azure_client import AzureClient
|
|
23
24
|
from metadata.generated.schema.metadataIngestion.dbtconfig.dbtAzureConfig import (
|
|
24
25
|
DbtAzureConfig,
|
|
25
26
|
)
|
|
@@ -172,7 +173,7 @@ def _(config: DbtCloudConfig): # pylint: disable=too-many-locals
|
|
|
172
173
|
params_data["job_definition_id"] = job_id
|
|
173
174
|
|
|
174
175
|
response = client.get(f"/accounts/{account_id}/runs", data=params_data)
|
|
175
|
-
if not response
|
|
176
|
+
if not response or not response.get("data"):
|
|
176
177
|
raise DBTConfigException(
|
|
177
178
|
"Unable to get the dbt job runs information.\n"
|
|
178
179
|
"Please check if the auth token is correct and has the necessary scopes to fetch dbt runs"
|
|
@@ -357,21 +358,8 @@ def _(config: DbtGcsConfig):
|
|
|
357
358
|
def _(config: DbtAzureConfig):
|
|
358
359
|
try:
|
|
359
360
|
bucket_name, prefix = get_dbt_prefix_config(config)
|
|
360
|
-
from azure.identity import ( # pylint: disable=import-outside-toplevel
|
|
361
|
-
ClientSecretCredential,
|
|
362
|
-
)
|
|
363
|
-
from azure.storage.blob import ( # pylint: disable=import-outside-toplevel
|
|
364
|
-
BlobServiceClient,
|
|
365
|
-
)
|
|
366
361
|
|
|
367
|
-
client =
|
|
368
|
-
f"https://{config.dbtSecurityConfig.accountName}.blob.core.windows.net/",
|
|
369
|
-
credential=ClientSecretCredential(
|
|
370
|
-
config.dbtSecurityConfig.tenantId,
|
|
371
|
-
config.dbtSecurityConfig.clientId,
|
|
372
|
-
config.dbtSecurityConfig.clientSecret.get_secret_value(),
|
|
373
|
-
),
|
|
374
|
-
)
|
|
362
|
+
client = AzureClient(config.dbtSecurityConfig).create_blob_client()
|
|
375
363
|
|
|
376
364
|
if not bucket_name:
|
|
377
365
|
container_dicts = client.list_containers()
|
|
@@ -19,4 +19,8 @@ from metadata.ingestion.source.database.usage_source import UsageSource
|
|
|
19
19
|
class MssqlUsageSource(MssqlQueryParserSource, UsageSource):
|
|
20
20
|
sql_stmt = MSSQL_SQL_STATEMENT
|
|
21
21
|
|
|
22
|
-
filters = ""
|
|
22
|
+
filters = """
|
|
23
|
+
AND lower(t.text) NOT LIKE '%%create%%procedure%%'
|
|
24
|
+
AND lower(t.text) NOT LIKE '%%create%%function%%'
|
|
25
|
+
AND lower(t.text) NOT LIKE '%%declare%%'
|
|
26
|
+
"""
|
|
@@ -16,9 +16,13 @@ from typing import Optional
|
|
|
16
16
|
|
|
17
17
|
from sqlalchemy.engine import Engine
|
|
18
18
|
|
|
19
|
+
from metadata.clients.azure_client import AzureClient
|
|
19
20
|
from metadata.generated.schema.entity.automations.workflow import (
|
|
20
21
|
Workflow as AutomationWorkflow,
|
|
21
22
|
)
|
|
23
|
+
from metadata.generated.schema.entity.services.connections.database.common.basicAuth import (
|
|
24
|
+
BasicAuth,
|
|
25
|
+
)
|
|
22
26
|
from metadata.generated.schema.entity.services.connections.database.mysqlConnection import (
|
|
23
27
|
MysqlConnection,
|
|
24
28
|
)
|
|
@@ -38,6 +42,16 @@ def get_connection(connection: MysqlConnection) -> Engine:
|
|
|
38
42
|
"""
|
|
39
43
|
Create connection
|
|
40
44
|
"""
|
|
45
|
+
if hasattr(connection.authType, "azureConfig"):
|
|
46
|
+
azure_client = AzureClient(connection.authType.azureConfig).create_client()
|
|
47
|
+
if not connection.authType.azureConfig.scopes:
|
|
48
|
+
raise ValueError(
|
|
49
|
+
"Azure Scopes are missing, please refer https://learn.microsoft.com/en-gb/azure/mysql/flexible-server/how-to-azure-ad#2---retrieve-microsoft-entra-access-token and fetch the resource associated with it, for e.g. https://ossrdbms-aad.database.windows.net/.default"
|
|
50
|
+
)
|
|
51
|
+
access_token_obj = azure_client.get_token(
|
|
52
|
+
*connection.authType.azureConfig.scopes.split(",")
|
|
53
|
+
)
|
|
54
|
+
connection.authType = BasicAuth(password=access_token_obj.token)
|
|
41
55
|
if connection.sslCA or connection.sslCert or connection.sslKey:
|
|
42
56
|
if not connection.connectionOptions:
|
|
43
57
|
connection.connectionOptions = init_empty_connection_options()
|
|
@@ -38,6 +38,7 @@ from metadata.ingestion.connections.builders import (
|
|
|
38
38
|
)
|
|
39
39
|
from metadata.ingestion.connections.test_connections import test_connection_db_common
|
|
40
40
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
41
|
+
from metadata.ingestion.source.database.oracle.queries import CHECK_ACCESS_TO_DBA
|
|
41
42
|
from metadata.utils.logger import ingestion_logger
|
|
42
43
|
|
|
43
44
|
CX_ORACLE_LIB_VERSION = "8.3.0"
|
|
@@ -136,9 +137,13 @@ def test_connection(
|
|
|
136
137
|
Test connection. This can be executed either as part
|
|
137
138
|
of a metadata workflow or during an Automation Workflow
|
|
138
139
|
"""
|
|
140
|
+
|
|
141
|
+
test_conn_queries = {"CheckAccess": CHECK_ACCESS_TO_DBA}
|
|
142
|
+
|
|
139
143
|
test_connection_db_common(
|
|
140
144
|
metadata=metadata,
|
|
141
145
|
engine=engine,
|
|
142
146
|
service_connection=service_connection,
|
|
143
147
|
automation_workflow=automation_workflow,
|
|
148
|
+
queries=test_conn_queries,
|
|
144
149
|
)
|
|
@@ -17,9 +17,13 @@ from typing import Optional
|
|
|
17
17
|
|
|
18
18
|
from sqlalchemy.engine import Engine
|
|
19
19
|
|
|
20
|
+
from metadata.clients.azure_client import AzureClient
|
|
20
21
|
from metadata.generated.schema.entity.automations.workflow import (
|
|
21
22
|
Workflow as AutomationWorkflow,
|
|
22
23
|
)
|
|
24
|
+
from metadata.generated.schema.entity.services.connections.database.common.basicAuth import (
|
|
25
|
+
BasicAuth,
|
|
26
|
+
)
|
|
23
27
|
from metadata.generated.schema.entity.services.connections.database.postgresConnection import (
|
|
24
28
|
PostgresConnection,
|
|
25
29
|
SslMode,
|
|
@@ -46,6 +50,17 @@ def get_connection(connection: PostgresConnection) -> Engine:
|
|
|
46
50
|
"""
|
|
47
51
|
Create connection
|
|
48
52
|
"""
|
|
53
|
+
|
|
54
|
+
if hasattr(connection.authType, "azureConfig"):
|
|
55
|
+
azure_client = AzureClient(connection.authType.azureConfig).create_client()
|
|
56
|
+
if not connection.authType.azureConfig.scopes:
|
|
57
|
+
raise ValueError(
|
|
58
|
+
"Azure Scopes are missing, please refer https://learn.microsoft.com/en-gb/azure/postgresql/flexible-server/how-to-configure-sign-in-azure-ad-authentication#retrieve-the-microsoft-entra-access-token and fetch the resource associated with it, for e.g. https://ossrdbms-aad.database.windows.net/.default"
|
|
59
|
+
)
|
|
60
|
+
access_token_obj = azure_client.get_token(
|
|
61
|
+
*connection.authType.azureConfig.scopes.split(",")
|
|
62
|
+
)
|
|
63
|
+
connection.authType = BasicAuth(password=access_token_obj.token)
|
|
49
64
|
if connection.sslMode:
|
|
50
65
|
if not connection.connectionArguments:
|
|
51
66
|
connection.connectionArguments = init_empty_connection_arguments()
|
|
@@ -138,7 +138,7 @@ class StoredProcedureMixin(ABC):
|
|
|
138
138
|
return True
|
|
139
139
|
|
|
140
140
|
if query_type == "INSERT" and re.search(
|
|
141
|
-
"^.*insert.*into.*select.*$", query_text, re.IGNORECASE
|
|
141
|
+
"^.*insert.*into.*select.*$", query_text.replace("\n", " "), re.IGNORECASE
|
|
142
142
|
):
|
|
143
143
|
return True
|
|
144
144
|
|
|
@@ -68,16 +68,20 @@ def test_connection(
|
|
|
68
68
|
break
|
|
69
69
|
|
|
70
70
|
def get_schemas(connection: WorkspaceClient, table_obj: DatabricksTable):
|
|
71
|
-
for
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
for catalog in connection.catalogs.list():
|
|
72
|
+
for schema in connection.schemas.list(catalog_name=catalog.name):
|
|
73
|
+
if schema.name:
|
|
74
|
+
table_obj.schema_name = schema.name
|
|
75
|
+
table_obj.catalog_name = catalog.name
|
|
76
|
+
return
|
|
74
77
|
|
|
75
78
|
def get_tables(connection: WorkspaceClient, table_obj: DatabricksTable):
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
if table_obj.catalog_name and table_obj.schema_name:
|
|
80
|
+
for table in connection.tables.list(
|
|
81
|
+
catalog_name=table_obj.catalog_name, schema_name=table_obj.schema_name
|
|
82
|
+
):
|
|
83
|
+
table_obj.name = table.name
|
|
84
|
+
break
|
|
81
85
|
|
|
82
86
|
test_fn = {
|
|
83
87
|
"CheckAccess": connection.catalogs.list,
|
|
@@ -214,7 +214,9 @@ class DagsterSource(PipelineServiceSource):
|
|
|
214
214
|
service_name=self.context.pipeline_service,
|
|
215
215
|
pipeline_name=self.context.pipeline,
|
|
216
216
|
)
|
|
217
|
-
pipeline_entity = self.metadata.get_by_name(
|
|
217
|
+
pipeline_entity = self.metadata.get_by_name(
|
|
218
|
+
entity=Pipeline, fqn=pipeline_fqn, fields=["tasks"]
|
|
219
|
+
)
|
|
218
220
|
for task in pipeline_entity.tasks or []:
|
|
219
221
|
try:
|
|
220
222
|
runs = self.client.get_task_runs(
|
|
@@ -260,7 +260,7 @@ class StorageServiceSource(TopologyRunnerMixin, Source, ABC):
|
|
|
260
260
|
metadata_entry: MetadataEntry,
|
|
261
261
|
) -> List[Column]:
|
|
262
262
|
"""Extract Column related metadata from s3"""
|
|
263
|
-
data_structure_details = fetch_dataframe(
|
|
263
|
+
data_structure_details, raw_data = fetch_dataframe(
|
|
264
264
|
config_source=config_source,
|
|
265
265
|
client=client,
|
|
266
266
|
file_fqn=DatalakeTableSchemaWrapper(
|
|
@@ -269,10 +269,13 @@ class StorageServiceSource(TopologyRunnerMixin, Source, ABC):
|
|
|
269
269
|
file_extension=SupportedTypes(metadata_entry.structureFormat),
|
|
270
270
|
separator=metadata_entry.separator,
|
|
271
271
|
),
|
|
272
|
+
fetch_raw_data=True,
|
|
272
273
|
)
|
|
273
274
|
columns = []
|
|
274
275
|
column_parser = DataFrameColumnParser.create(
|
|
275
|
-
data_structure_details,
|
|
276
|
+
data_structure_details,
|
|
277
|
+
SupportedTypes(metadata_entry.structureFormat),
|
|
278
|
+
raw_data=raw_data,
|
|
276
279
|
)
|
|
277
280
|
columns = column_parser.get_columns()
|
|
278
281
|
return columns
|
|
@@ -18,6 +18,8 @@ import traceback
|
|
|
18
18
|
from enum import Enum
|
|
19
19
|
from typing import List, Optional
|
|
20
20
|
|
|
21
|
+
from pydantic.main import ModelMetaclass
|
|
22
|
+
|
|
21
23
|
from metadata.generated.schema.type.schema import FieldModel
|
|
22
24
|
from metadata.utils.logger import ingestion_logger
|
|
23
25
|
|
|
@@ -36,20 +38,25 @@ class JsonSchemaDataTypes(Enum):
|
|
|
36
38
|
NULL = "null"
|
|
37
39
|
RECORD = "object"
|
|
38
40
|
ARRAY = "array"
|
|
41
|
+
UNKNOWN = "unknown"
|
|
39
42
|
|
|
40
43
|
|
|
41
|
-
def parse_json_schema(
|
|
44
|
+
def parse_json_schema(
|
|
45
|
+
schema_text: str, cls: ModelMetaclass = FieldModel
|
|
46
|
+
) -> Optional[List[FieldModel]]:
|
|
42
47
|
"""
|
|
43
48
|
Method to parse the jsonschema
|
|
44
49
|
"""
|
|
45
50
|
try:
|
|
46
51
|
json_schema_data = json.loads(schema_text)
|
|
47
52
|
field_models = [
|
|
48
|
-
|
|
53
|
+
cls(
|
|
49
54
|
name=json_schema_data.get("title", "default"),
|
|
50
55
|
dataType=JsonSchemaDataTypes(json_schema_data.get("type")).name,
|
|
51
56
|
description=json_schema_data.get("description"),
|
|
52
|
-
children=get_json_schema_fields(
|
|
57
|
+
children=get_json_schema_fields(
|
|
58
|
+
json_schema_data.get("properties", {}), cls=cls
|
|
59
|
+
),
|
|
53
60
|
)
|
|
54
61
|
]
|
|
55
62
|
return field_models
|
|
@@ -59,7 +66,9 @@ def parse_json_schema(schema_text: str) -> Optional[List[FieldModel]]:
|
|
|
59
66
|
return None
|
|
60
67
|
|
|
61
68
|
|
|
62
|
-
def get_json_schema_fields(
|
|
69
|
+
def get_json_schema_fields(
|
|
70
|
+
properties, cls: ModelMetaclass = FieldModel
|
|
71
|
+
) -> Optional[List[FieldModel]]:
|
|
63
72
|
"""
|
|
64
73
|
Recursively convert the parsed schema into required models
|
|
65
74
|
"""
|
|
@@ -67,9 +76,10 @@ def get_json_schema_fields(properties) -> Optional[List[FieldModel]]:
|
|
|
67
76
|
for key, value in properties.items():
|
|
68
77
|
try:
|
|
69
78
|
field_models.append(
|
|
70
|
-
|
|
71
|
-
name=
|
|
72
|
-
|
|
79
|
+
cls(
|
|
80
|
+
name=key,
|
|
81
|
+
displayName=value.get("title"),
|
|
82
|
+
dataType=JsonSchemaDataTypes(value.get("type", "unknown")).name,
|
|
73
83
|
description=value.get("description"),
|
|
74
84
|
children=get_json_schema_fields(value.get("properties"))
|
|
75
85
|
if value.get("type") == "object"
|
|
@@ -21,7 +21,7 @@ from pydantic import BaseModel
|
|
|
21
21
|
|
|
22
22
|
from metadata.generated.schema.entity.classification.tag import Tag
|
|
23
23
|
from metadata.pii.constants import PII, SPACY_EN_MODEL
|
|
24
|
-
from metadata.pii.models import TagAndConfidence
|
|
24
|
+
from metadata.pii.models import TagAndConfidence
|
|
25
25
|
from metadata.pii.ner import NEREntity
|
|
26
26
|
from metadata.utils import fqn
|
|
27
27
|
from metadata.utils.logger import pii_logger
|
|
@@ -119,13 +119,15 @@ class NERScanner:
|
|
|
119
119
|
|
|
120
120
|
if entities_score:
|
|
121
121
|
label, score = self.get_highest_score_label(entities_score)
|
|
122
|
-
tag_type = NEREntity.__members__.get(label
|
|
122
|
+
tag_type = NEREntity.__members__.get(label)
|
|
123
|
+
if not tag_type:
|
|
124
|
+
return None
|
|
123
125
|
return TagAndConfidence(
|
|
124
126
|
tag_fqn=fqn.build(
|
|
125
127
|
metadata=None,
|
|
126
128
|
entity_type=Tag,
|
|
127
129
|
classification_name=PII,
|
|
128
|
-
tag_name=tag_type,
|
|
130
|
+
tag_name=tag_type.value,
|
|
129
131
|
),
|
|
130
132
|
confidence=score,
|
|
131
133
|
)
|
|
@@ -33,7 +33,7 @@ from metadata.generated.schema.entity.data.table import (
|
|
|
33
33
|
TableData,
|
|
34
34
|
)
|
|
35
35
|
from metadata.generated.schema.entity.services.connections.connectionBasicType import (
|
|
36
|
-
|
|
36
|
+
DataStorageConfig,
|
|
37
37
|
)
|
|
38
38
|
from metadata.generated.schema.entity.services.connections.database.datalakeConnection import (
|
|
39
39
|
DatalakeConnection,
|
|
@@ -93,7 +93,7 @@ class ProfilerInterface(ABC):
|
|
|
93
93
|
service_connection_config: Union[DatabaseConnection, DatalakeConnection],
|
|
94
94
|
ometa_client: OpenMetadata,
|
|
95
95
|
entity: Table,
|
|
96
|
-
storage_config:
|
|
96
|
+
storage_config: DataStorageConfig,
|
|
97
97
|
profile_sample_config: Optional[ProfileSampleConfig],
|
|
98
98
|
source_config: DatabaseServiceProfilerPipeline,
|
|
99
99
|
sample_query: Optional[str],
|
|
@@ -248,7 +248,7 @@ class ProfilerInterface(ABC):
|
|
|
248
248
|
DatabaseProfilerConfig,
|
|
249
249
|
DatabaseAndSchemaConfig,
|
|
250
250
|
]
|
|
251
|
-
):
|
|
251
|
+
) -> Optional[DataStorageConfig]:
|
|
252
252
|
if (
|
|
253
253
|
config
|
|
254
254
|
and config.sampleDataStorageConfig
|
|
@@ -264,7 +264,7 @@ class ProfilerInterface(ABC):
|
|
|
264
264
|
database_profiler_config: Optional[DatabaseProfilerConfig],
|
|
265
265
|
db_service: Optional[DatabaseService],
|
|
266
266
|
profiler_config: ProfilerProcessorConfig,
|
|
267
|
-
) -> Optional[
|
|
267
|
+
) -> Optional[DataStorageConfig]:
|
|
268
268
|
"""Get config for a specific entity
|
|
269
269
|
|
|
270
270
|
Args:
|