openmetadata-ingestion 1.5.1.0__py3-none-any.whl → 1.5.3.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/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/createAPICollection.py +1 -1
- metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
- metadata/generated/schema/api/data/createChart.py +1 -1
- metadata/generated/schema/api/data/createContainer.py +1 -1
- metadata/generated/schema/api/data/createCustomProperty.py +1 -1
- metadata/generated/schema/api/data/createDashboard.py +1 -1
- metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
- metadata/generated/schema/api/data/createDatabase.py +1 -1
- metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
- metadata/generated/schema/api/data/createGlossary.py +1 -1
- metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
- metadata/generated/schema/api/data/createMlModel.py +5 -2
- metadata/generated/schema/api/data/createPipeline.py +1 -1
- metadata/generated/schema/api/data/createQuery.py +1 -1
- metadata/generated/schema/api/data/createSearchIndex.py +1 -1
- metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
- metadata/generated/schema/api/data/createTable.py +1 -1
- metadata/generated/schema/api/data/createTableProfile.py +1 -1
- metadata/generated/schema/api/data/createTopic.py +1 -1
- metadata/generated/schema/api/data/loadGlossary.py +1 -1
- metadata/generated/schema/api/data/restoreEntity.py +1 -1
- metadata/generated/schema/api/dataInsight/__init__.py +1 -1
- metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
- metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
- metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
- metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
- metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
- metadata/generated/schema/api/docStore/__init__.py +1 -1
- metadata/generated/schema/api/docStore/createDocument.py +1 -1
- metadata/generated/schema/api/domains/__init__.py +1 -1
- metadata/generated/schema/api/domains/createDataProduct.py +8 -1
- metadata/generated/schema/api/domains/createDomain.py +1 -1
- metadata/generated/schema/api/feed/__init__.py +1 -1
- metadata/generated/schema/api/feed/closeTask.py +1 -1
- metadata/generated/schema/api/feed/createPost.py +1 -1
- metadata/generated/schema/api/feed/createSuggestion.py +1 -1
- metadata/generated/schema/api/feed/createThread.py +1 -1
- metadata/generated/schema/api/feed/resolveTask.py +1 -1
- metadata/generated/schema/api/feed/threadCount.py +1 -1
- metadata/generated/schema/api/lineage/__init__.py +1 -1
- metadata/generated/schema/api/lineage/addLineage.py +1 -1
- metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
- metadata/generated/schema/api/policies/__init__.py +1 -1
- metadata/generated/schema/api/policies/createPolicy.py +1 -1
- metadata/generated/schema/api/services/__init__.py +1 -1
- metadata/generated/schema/api/services/createApiService.py +1 -1
- metadata/generated/schema/api/services/createDashboardService.py +1 -1
- metadata/generated/schema/api/services/createDatabaseService.py +1 -1
- metadata/generated/schema/api/services/createMessagingService.py +1 -1
- metadata/generated/schema/api/services/createMetadataService.py +1 -1
- metadata/generated/schema/api/services/createMlModelService.py +1 -1
- metadata/generated/schema/api/services/createPipelineService.py +1 -1
- metadata/generated/schema/api/services/createSearchService.py +1 -1
- metadata/generated/schema/api/services/createStorageService.py +1 -1
- metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
- metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
- metadata/generated/schema/api/setOwner.py +1 -1
- metadata/generated/schema/api/teams/__init__.py +1 -1
- metadata/generated/schema/api/teams/createPersona.py +1 -1
- metadata/generated/schema/api/teams/createRole.py +1 -1
- metadata/generated/schema/api/teams/createTeam.py +1 -1
- metadata/generated/schema/api/teams/createUser.py +1 -1
- metadata/generated/schema/api/tests/__init__.py +1 -1
- metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
- metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
- metadata/generated/schema/api/tests/createTestCase.py +1 -1
- metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
- metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
- metadata/generated/schema/api/tests/createTestSuite.py +1 -1
- metadata/generated/schema/api/voteRequest.py +1 -1
- metadata/generated/schema/auth/__init__.py +1 -1
- metadata/generated/schema/auth/basicAuth.py +1 -1
- metadata/generated/schema/auth/basicLoginRequest.py +1 -1
- metadata/generated/schema/auth/changePasswordRequest.py +1 -1
- metadata/generated/schema/auth/createPersonalToken.py +1 -1
- metadata/generated/schema/auth/emailRequest.py +1 -1
- metadata/generated/schema/auth/emailVerificationToken.py +1 -1
- metadata/generated/schema/auth/generateToken.py +1 -1
- metadata/generated/schema/auth/jwtAuth.py +1 -1
- metadata/generated/schema/auth/loginRequest.py +1 -1
- metadata/generated/schema/auth/logoutRequest.py +1 -1
- metadata/generated/schema/auth/passwordResetRequest.py +1 -1
- metadata/generated/schema/auth/passwordResetToken.py +1 -1
- metadata/generated/schema/auth/personalAccessToken.py +1 -1
- metadata/generated/schema/auth/refreshToken.py +1 -1
- metadata/generated/schema/auth/registrationRequest.py +1 -1
- metadata/generated/schema/auth/revokePersonalToken.py +1 -1
- metadata/generated/schema/auth/revokeToken.py +1 -1
- metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
- metadata/generated/schema/auth/ssoAuth.py +1 -1
- metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
- metadata/generated/schema/configuration/__init__.py +1 -1
- metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
- metadata/generated/schema/configuration/authConfig.py +1 -1
- metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
- metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
- metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
- metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
- metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
- metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
- metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
- metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
- metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
- metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
- metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
- metadata/generated/schema/configuration/loginConfiguration.py +1 -1
- metadata/generated/schema/configuration/logoConfiguration.py +1 -1
- metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
- metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
- metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
- metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
- metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
- metadata/generated/schema/configuration/themeConfiguration.py +1 -1
- metadata/generated/schema/configuration/uiThemePreference.py +1 -1
- metadata/generated/schema/dataInsight/__init__.py +1 -1
- metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
- metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
- metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -1
- metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
- metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
- metadata/generated/schema/dataInsight/custom/lineChart.py +1 -1
- metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
- metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
- metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
- metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
- metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
- metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
- metadata/generated/schema/dataInsight/type/__init__.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
- metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
- metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
- metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
- metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
- metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
- metadata/generated/schema/email/__init__.py +1 -1
- metadata/generated/schema/email/emailRequest.py +1 -1
- metadata/generated/schema/email/emailTemplate.py +1 -1
- metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
- metadata/generated/schema/email/smtpSettings.py +1 -1
- metadata/generated/schema/email/templateValidationReponse.py +1 -1
- metadata/generated/schema/entity/__init__.py +1 -1
- metadata/generated/schema/entity/applications/__init__.py +1 -1
- metadata/generated/schema/entity/applications/app.py +1 -1
- metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
- metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/metaPilotAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/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 +1 -1
- metadata/generated/schema/entity/applications/jobStatus.py +1 -1
- metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
- metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
- metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
- metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
- metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
- metadata/generated/schema/entity/automations/__init__.py +1 -1
- metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
- metadata/generated/schema/entity/automations/workflow.py +1 -1
- metadata/generated/schema/entity/bot.py +1 -1
- metadata/generated/schema/entity/classification/__init__.py +1 -1
- metadata/generated/schema/entity/classification/classification.py +1 -1
- metadata/generated/schema/entity/classification/tag.py +1 -1
- metadata/generated/schema/entity/data/__init__.py +1 -1
- metadata/generated/schema/entity/data/apiCollection.py +1 -1
- metadata/generated/schema/entity/data/apiEndpoint.py +1 -1
- metadata/generated/schema/entity/data/chart.py +1 -1
- metadata/generated/schema/entity/data/container.py +1 -1
- metadata/generated/schema/entity/data/dashboard.py +1 -1
- metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
- metadata/generated/schema/entity/data/database.py +1 -1
- metadata/generated/schema/entity/data/databaseSchema.py +1 -1
- metadata/generated/schema/entity/data/glossary.py +1 -1
- metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
- metadata/generated/schema/entity/data/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 +8 -1
- metadata/generated/schema/entity/domains/domain.py +1 -1
- metadata/generated/schema/entity/events/__init__.py +1 -1
- metadata/generated/schema/entity/events/webhook.py +1 -1
- metadata/generated/schema/entity/feed/__init__.py +1 -1
- metadata/generated/schema/entity/feed/assets.py +1 -1
- metadata/generated/schema/entity/feed/customProperty.py +1 -1
- metadata/generated/schema/entity/feed/description.py +1 -1
- metadata/generated/schema/entity/feed/domain.py +1 -1
- metadata/generated/schema/entity/feed/entityInfo.py +1 -1
- metadata/generated/schema/entity/feed/owner.py +1 -1
- metadata/generated/schema/entity/feed/suggestion.py +1 -1
- metadata/generated/schema/entity/feed/tag.py +1 -1
- metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
- metadata/generated/schema/entity/feed/thread.py +1 -1
- metadata/generated/schema/entity/policies/__init__.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
- metadata/generated/schema/entity/policies/filters.py +1 -1
- metadata/generated/schema/entity/policies/policy.py +1 -1
- metadata/generated/schema/entity/services/__init__.py +1 -1
- metadata/generated/schema/entity/services/apiService.py +1 -1
- metadata/generated/schema/entity/services/connections/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/apiService/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/apiService/restConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
- metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
- metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/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/powerbi/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +4 -1
- metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +40 -0
- 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/dbtCloudConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/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 +4 -1
- metadata/generated/schema/entity/services/pipelineService.py +1 -1
- metadata/generated/schema/entity/services/searchService.py +1 -1
- metadata/generated/schema/entity/services/serviceType.py +1 -1
- metadata/generated/schema/entity/services/storageService.py +1 -1
- metadata/generated/schema/entity/teams/__init__.py +1 -1
- metadata/generated/schema/entity/teams/persona.py +1 -1
- metadata/generated/schema/entity/teams/role.py +1 -1
- metadata/generated/schema/entity/teams/team.py +1 -1
- metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
- metadata/generated/schema/entity/teams/user.py +1 -1
- metadata/generated/schema/entity/type.py +1 -1
- metadata/generated/schema/entity/utils/__init__.py +1 -1
- metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
- metadata/generated/schema/entity/utils/servicesCount.py +1 -1
- metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
- metadata/generated/schema/events/__init__.py +1 -1
- metadata/generated/schema/events/alertMetrics.py +1 -1
- metadata/generated/schema/events/api/__init__.py +1 -1
- metadata/generated/schema/events/api/createEventSubscription.py +1 -1
- metadata/generated/schema/events/api/testEventSubscriptionDestination.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 +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
- metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
- metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/workflow.py +1 -1
- metadata/generated/schema/monitoring/__init__.py +1 -1
- metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
- metadata/generated/schema/security/__init__.py +1 -1
- metadata/generated/schema/security/client/__init__.py +1 -1
- metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
- metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
- metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
- metadata/generated/schema/security/credentials/__init__.py +1 -1
- metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
- metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
- metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
- metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
- metadata/generated/schema/security/credentials/basicAuth.py +1 -1
- metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
- metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
- metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
- metadata/generated/schema/security/credentials/gcpValues.py +1 -1
- metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
- metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
- metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
- metadata/generated/schema/security/sasl/__init__.py +1 -1
- metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
- metadata/generated/schema/security/secrets/__init__.py +1 -1
- metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
- metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
- metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
- metadata/generated/schema/security/securityConfiguration.py +1 -1
- metadata/generated/schema/security/ssl/__init__.py +1 -1
- metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
- metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
- metadata/generated/schema/settings/__init__.py +1 -1
- metadata/generated/schema/settings/settings.py +1 -1
- metadata/generated/schema/system/__init__.py +1 -1
- metadata/generated/schema/system/entityError.py +1 -1
- metadata/generated/schema/system/eventPublisherJob.py +1 -1
- metadata/generated/schema/system/indexingError.py +1 -1
- metadata/generated/schema/system/limitsResponse.py +1 -1
- metadata/generated/schema/system/ui/__init__.py +1 -1
- metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
- metadata/generated/schema/system/ui/page.py +1 -1
- metadata/generated/schema/system/validationResponse.py +1 -1
- metadata/generated/schema/tests/__init__.py +1 -1
- metadata/generated/schema/tests/assigned.py +1 -1
- metadata/generated/schema/tests/basic.py +20 -20
- metadata/generated/schema/tests/customMetric.py +1 -1
- metadata/generated/schema/tests/dataQualityReport.py +1 -1
- metadata/generated/schema/tests/resolved.py +1 -1
- metadata/generated/schema/tests/testCase.py +1 -1
- metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
- metadata/generated/schema/tests/testDefinition.py +1 -1
- metadata/generated/schema/tests/testSuite.py +1 -1
- metadata/generated/schema/type/__init__.py +1 -1
- metadata/generated/schema/type/apiSchema.py +1 -1
- metadata/generated/schema/type/auditLog.py +1 -1
- metadata/generated/schema/type/basic.py +1 -1
- metadata/generated/schema/type/bulkOperationResult.py +1 -1
- metadata/generated/schema/type/changeEvent.py +1 -1
- metadata/generated/schema/type/changeEventType.py +1 -1
- metadata/generated/schema/type/collectionDescriptor.py +1 -1
- metadata/generated/schema/type/csvDocumentation.py +1 -1
- metadata/generated/schema/type/csvErrorType.py +1 -1
- metadata/generated/schema/type/csvFile.py +1 -1
- metadata/generated/schema/type/csvImportResult.py +1 -1
- metadata/generated/schema/type/customProperties/__init__.py +1 -1
- metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
- metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
- metadata/generated/schema/type/customProperty.py +1 -1
- metadata/generated/schema/type/dailyCount.py +1 -1
- metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
- metadata/generated/schema/type/entityHierarchy.py +1 -1
- metadata/generated/schema/type/entityHistory.py +1 -1
- metadata/generated/schema/type/entityLineage.py +1 -1
- metadata/generated/schema/type/entityReference.py +1 -1
- metadata/generated/schema/type/entityReferenceList.py +1 -1
- metadata/generated/schema/type/entityRelationship.py +1 -1
- metadata/generated/schema/type/entityUsage.py +1 -1
- metadata/generated/schema/type/filterPattern.py +1 -1
- metadata/generated/schema/type/function.py +1 -1
- metadata/generated/schema/type/include.py +1 -1
- metadata/generated/schema/type/jdbcConnection.py +1 -1
- metadata/generated/schema/type/lifeCycle.py +1 -1
- metadata/generated/schema/type/paging.py +1 -1
- metadata/generated/schema/type/profile.py +1 -1
- metadata/generated/schema/type/queryParserData.py +1 -1
- metadata/generated/schema/type/reaction.py +1 -1
- metadata/generated/schema/type/schedule.py +1 -1
- metadata/generated/schema/type/schema.py +1 -1
- metadata/generated/schema/type/tableQuery.py +1 -1
- metadata/generated/schema/type/tableUsageCount.py +1 -1
- metadata/generated/schema/type/tagLabel.py +1 -1
- metadata/generated/schema/type/usageDetails.py +1 -1
- metadata/generated/schema/type/usageRequest.py +1 -1
- metadata/generated/schema/type/votes.py +1 -1
- metadata/ingestion/ometa/mixins/es_mixin.py +1 -1
- metadata/ingestion/ometa/mixins/lineage_mixin.py +2 -2
- metadata/ingestion/ometa/mixins/patch_mixin.py +1 -1
- metadata/ingestion/ometa/mixins/table_mixin.py +4 -5
- metadata/ingestion/ometa/mixins/tests_mixin.py +2 -3
- metadata/ingestion/ometa/ometa_api.py +2 -3
- metadata/ingestion/ometa/utils.py +11 -0
- metadata/ingestion/sink/metadata_rest.py +3 -5
- metadata/ingestion/source/dashboard/tableau/metadata.py +35 -1
- metadata/ingestion/source/dashboard/tableau/models.py +10 -0
- metadata/ingestion/source/dashboard/tableau/queries.py +4 -0
- metadata/ingestion/source/database/athena/models.py +4 -4
- metadata/ingestion/source/database/dbt/dbt_config.py +1 -1
- metadata/ingestion/source/database/saphana/cdata_parser.py +772 -0
- metadata/ingestion/source/database/saphana/lineage.py +159 -0
- metadata/ingestion/source/database/saphana/models.py +66 -0
- metadata/ingestion/source/database/saphana/queries.py +23 -0
- metadata/pii/processor.py +2 -1
- metadata/pii/scanners/base.py +23 -0
- metadata/pii/scanners/column_name_scanner.py +8 -8
- metadata/pii/scanners/ner_scanner.py +43 -13
- metadata/profiler/source/metadata.py +10 -4
- metadata/profiler/source/metadata_ext.py +1 -35
- metadata/workflow/profiler.py +2 -2
- {openmetadata_ingestion-1.5.1.0.dist-info → openmetadata_ingestion-1.5.3.0.dist-info}/METADATA +350 -350
- {openmetadata_ingestion-1.5.1.0.dist-info → openmetadata_ingestion-1.5.3.0.dist-info}/RECORD +610 -604
- {openmetadata_ingestion-1.5.1.0.dist-info → openmetadata_ingestion-1.5.3.0.dist-info}/LICENSE +0 -0
- {openmetadata_ingestion-1.5.1.0.dist-info → openmetadata_ingestion-1.5.3.0.dist-info}/WHEEL +0 -0
- {openmetadata_ingestion-1.5.1.0.dist-info → openmetadata_ingestion-1.5.3.0.dist-info}/entry_points.txt +0 -0
- {openmetadata_ingestion-1.5.1.0.dist-info → openmetadata_ingestion-1.5.3.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# Copyright 2021 Collate
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
# you may not use this file except in compliance with the License.
|
|
4
|
+
# You may obtain a copy of the License at
|
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
7
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
8
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
+
# See the License for the specific language governing permissions and
|
|
10
|
+
# limitations under the License.
|
|
11
|
+
"""
|
|
12
|
+
SAP Hana lineage module
|
|
13
|
+
"""
|
|
14
|
+
import traceback
|
|
15
|
+
from typing import Iterable, Optional
|
|
16
|
+
|
|
17
|
+
from sqlalchemy import text
|
|
18
|
+
|
|
19
|
+
from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
|
|
20
|
+
from metadata.generated.schema.entity.data.table import Table
|
|
21
|
+
from metadata.generated.schema.entity.services.connections.database.sapHanaConnection import (
|
|
22
|
+
SapHanaConnection,
|
|
23
|
+
)
|
|
24
|
+
from metadata.generated.schema.entity.services.ingestionPipelines.status import (
|
|
25
|
+
StackTraceError,
|
|
26
|
+
)
|
|
27
|
+
from metadata.generated.schema.metadataIngestion.workflow import (
|
|
28
|
+
Source as WorkflowSource,
|
|
29
|
+
)
|
|
30
|
+
from metadata.ingestion.api.models import Either
|
|
31
|
+
from metadata.ingestion.api.steps import InvalidSourceException, Source
|
|
32
|
+
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
33
|
+
from metadata.ingestion.source.connections import get_test_connection_fn
|
|
34
|
+
from metadata.ingestion.source.database.saphana.cdata_parser import (
|
|
35
|
+
ParsedLineage,
|
|
36
|
+
parse_registry,
|
|
37
|
+
)
|
|
38
|
+
from metadata.ingestion.source.database.saphana.models import SapHanaLineageModel
|
|
39
|
+
from metadata.ingestion.source.database.saphana.queries import SAPHANA_LINEAGE
|
|
40
|
+
from metadata.utils.logger import ingestion_logger
|
|
41
|
+
from metadata.utils.ssl_manager import get_ssl_connection
|
|
42
|
+
|
|
43
|
+
logger = ingestion_logger()
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class SaphanaLineageSource(Source):
|
|
47
|
+
"""
|
|
48
|
+
Get the lineage information of:
|
|
49
|
+
- calculationview
|
|
50
|
+
- analyticview
|
|
51
|
+
- attributeview
|
|
52
|
+
|
|
53
|
+
We support the following relationships:
|
|
54
|
+
- Analytic View and Attribute View based on a Table
|
|
55
|
+
- Calculation View based on an Analytic View, Attribute View, Calculation View or Table
|
|
56
|
+
|
|
57
|
+
Parse the CDATA XML definition from _SYS_REPO.ACTIVE_OBJECT
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
def __init__(
|
|
61
|
+
self,
|
|
62
|
+
config: WorkflowSource,
|
|
63
|
+
metadata: OpenMetadata,
|
|
64
|
+
get_engine: bool = True,
|
|
65
|
+
):
|
|
66
|
+
super().__init__()
|
|
67
|
+
self.config = config
|
|
68
|
+
self.metadata = metadata
|
|
69
|
+
self.service_connection = self.config.serviceConnection.root.config
|
|
70
|
+
self.source_config = self.config.sourceConfig.config
|
|
71
|
+
self.engine = (
|
|
72
|
+
get_ssl_connection(self.service_connection) if get_engine else None
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
logger.info(
|
|
76
|
+
"Initializing SAP Hana Lineage Source. Note that we'll parse the lineage from CDATA XML definition "
|
|
77
|
+
+ "from _SYS_REPO.ACTIVE_OBJECT and we won't use the time-specific input parameters."
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
def prepare(self):
|
|
81
|
+
"""By default, there's nothing to prepare"""
|
|
82
|
+
|
|
83
|
+
@classmethod
|
|
84
|
+
def create(
|
|
85
|
+
cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
|
|
86
|
+
):
|
|
87
|
+
config: WorkflowSource = WorkflowSource.model_validate(config_dict)
|
|
88
|
+
connection: SapHanaConnection = config.serviceConnection.root.config
|
|
89
|
+
if not isinstance(connection, SapHanaConnection):
|
|
90
|
+
raise InvalidSourceException(
|
|
91
|
+
f"Expected SapHanaConnection, but got {connection}"
|
|
92
|
+
)
|
|
93
|
+
return cls(config, metadata)
|
|
94
|
+
|
|
95
|
+
def close(self) -> None:
|
|
96
|
+
self.engine.dispose()
|
|
97
|
+
|
|
98
|
+
def _iter(self, *_, **__) -> Iterable[Either[AddLineageRequest]]:
|
|
99
|
+
"""
|
|
100
|
+
Based on the query logs, prepare the lineage
|
|
101
|
+
and send it to the sink
|
|
102
|
+
"""
|
|
103
|
+
with self.engine.connect() as conn:
|
|
104
|
+
result = conn.execution_options(
|
|
105
|
+
stream_results=True, max_row_buffer=100
|
|
106
|
+
).execute(text(SAPHANA_LINEAGE))
|
|
107
|
+
for row in result:
|
|
108
|
+
try:
|
|
109
|
+
lineage_model = SapHanaLineageModel.validate(dict(row))
|
|
110
|
+
|
|
111
|
+
yield from self.parse_cdata(
|
|
112
|
+
metadata=self.metadata, lineage_model=lineage_model
|
|
113
|
+
)
|
|
114
|
+
except Exception as exc:
|
|
115
|
+
self.status.failed(
|
|
116
|
+
error=StackTraceError(
|
|
117
|
+
name=row["OBJECT_NAME"],
|
|
118
|
+
error=f"Error validating lineage model due to [{exc}]",
|
|
119
|
+
stackTrace=traceback.format_exc(),
|
|
120
|
+
)
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
def parse_cdata(
|
|
124
|
+
self, metadata: OpenMetadata, lineage_model: SapHanaLineageModel
|
|
125
|
+
) -> Iterable[Either[AddLineageRequest]]:
|
|
126
|
+
"""Parse the CDATA XML definition from _SYS_REPO.ACTIVE_OBJECT"""
|
|
127
|
+
parse_fn = parse_registry.registry.get(lineage_model.object_suffix.value)
|
|
128
|
+
try:
|
|
129
|
+
parsed_lineage: ParsedLineage = parse_fn(lineage_model.cdata)
|
|
130
|
+
to_entity: Table = metadata.get_by_name(
|
|
131
|
+
entity=Table,
|
|
132
|
+
fqn=lineage_model.get_fqn(
|
|
133
|
+
metadata=metadata,
|
|
134
|
+
service_name=self.config.serviceName,
|
|
135
|
+
),
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
if to_entity:
|
|
139
|
+
yield from parsed_lineage.to_request(
|
|
140
|
+
metadata=metadata,
|
|
141
|
+
service_name=self.config.serviceName,
|
|
142
|
+
to_entity=to_entity,
|
|
143
|
+
)
|
|
144
|
+
except Exception as exc:
|
|
145
|
+
error = (
|
|
146
|
+
f"Error parsing CDATA XML for {lineage_model.object_suffix} at "
|
|
147
|
+
+ f"{lineage_model.package_id}/{lineage_model.object_name} due to [{exc}]"
|
|
148
|
+
)
|
|
149
|
+
self.status.failed(
|
|
150
|
+
error=StackTraceError(
|
|
151
|
+
name=lineage_model.object_name,
|
|
152
|
+
error=error,
|
|
153
|
+
stackTrace=traceback.format_exc(),
|
|
154
|
+
)
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
def test_connection(self) -> None:
|
|
158
|
+
test_connection_fn = get_test_connection_fn(self.service_connection)
|
|
159
|
+
test_connection_fn(self.engine)
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Copyright 2021 Collate
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
# you may not use this file except in compliance with the License.
|
|
4
|
+
# You may obtain a copy of the License at
|
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
7
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
8
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
+
# See the License for the specific language governing permissions and
|
|
10
|
+
# limitations under the License.
|
|
11
|
+
"""
|
|
12
|
+
SAP Hana lineage module
|
|
13
|
+
"""
|
|
14
|
+
from enum import Enum
|
|
15
|
+
|
|
16
|
+
from pydantic import Field, computed_field
|
|
17
|
+
from typing_extensions import Annotated
|
|
18
|
+
|
|
19
|
+
from metadata.generated.schema.entity.data.table import Table
|
|
20
|
+
from metadata.ingestion.models.custom_pydantic import BaseModel
|
|
21
|
+
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
22
|
+
from metadata.utils import fqn
|
|
23
|
+
|
|
24
|
+
SYS_BIC_SCHEMA_NAME = "_SYS_BIC"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class ViewType(Enum):
|
|
28
|
+
"""Supported SAP Hana Views"""
|
|
29
|
+
|
|
30
|
+
CALCULATION_VIEW = "calculationview"
|
|
31
|
+
ANALYTIC_VIEW = "analyticview"
|
|
32
|
+
ATTRIBUTE_VIEW = "attributeview"
|
|
33
|
+
# Artificially set to define calculationView internal models. This won't come from the ACTIVE_OBJECT table
|
|
34
|
+
LOGICAL = "logical"
|
|
35
|
+
DATA_BASE_TABLE = "table"
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class SapHanaLineageModel(BaseModel):
|
|
39
|
+
"""SAP Hana Lineage model from _SYS_REPO.ACTIVE_OBJECT"""
|
|
40
|
+
|
|
41
|
+
package_id: Annotated[
|
|
42
|
+
str, Field(..., description="Package ID that hosts the model code")
|
|
43
|
+
]
|
|
44
|
+
object_name: Annotated[str, Field(..., description="View Name")]
|
|
45
|
+
object_suffix: Annotated[ViewType, Field(..., description="View Type")]
|
|
46
|
+
cdata: Annotated[str, Field(..., description="XML representation of the model")]
|
|
47
|
+
|
|
48
|
+
@computed_field
|
|
49
|
+
@property
|
|
50
|
+
def name(self) -> str:
|
|
51
|
+
"""
|
|
52
|
+
Actual name representation of the view in _SYS_BIC.VIEWS.
|
|
53
|
+
This is the name in OpenMetadata
|
|
54
|
+
"""
|
|
55
|
+
return f"{self.package_id}/{self.object_name}"
|
|
56
|
+
|
|
57
|
+
def get_fqn(self, metadata: OpenMetadata, service_name: str) -> str:
|
|
58
|
+
"""Build OM's FQN with the static schema name from _SYS_BIC"""
|
|
59
|
+
return fqn.build(
|
|
60
|
+
metadata,
|
|
61
|
+
entity_type=Table,
|
|
62
|
+
service_name=service_name,
|
|
63
|
+
database_name=None,
|
|
64
|
+
schema_name=SYS_BIC_SCHEMA_NAME,
|
|
65
|
+
table_name=self.name,
|
|
66
|
+
)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Copyright 2021 Collate
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
# you may not use this file except in compliance with the License.
|
|
4
|
+
# You may obtain a copy of the License at
|
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
7
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
8
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
+
# See the License for the specific language governing permissions and
|
|
10
|
+
# limitations under the License.
|
|
11
|
+
"""
|
|
12
|
+
SAP Hana DB queries for metadata extraction
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
SAPHANA_LINEAGE = """
|
|
16
|
+
SELECT
|
|
17
|
+
PACKAGE_ID,
|
|
18
|
+
OBJECT_NAME,
|
|
19
|
+
OBJECT_SUFFIX,
|
|
20
|
+
CDATA
|
|
21
|
+
FROM _SYS_REPO.ACTIVE_OBJECT
|
|
22
|
+
WHERE OBJECT_SUFFIX IN ('analyticview', 'attributeview', 'calculationview');
|
|
23
|
+
"""
|
metadata/pii/processor.py
CHANGED
|
@@ -66,6 +66,7 @@ class PIIProcessor(Processor):
|
|
|
66
66
|
) # Used to satisfy type checked
|
|
67
67
|
|
|
68
68
|
self._ner_scanner = None
|
|
69
|
+
self.name_scanner = ColumnNameScanner()
|
|
69
70
|
self.confidence_threshold = self.source_config.confidence
|
|
70
71
|
|
|
71
72
|
@property
|
|
@@ -128,7 +129,7 @@ class PIIProcessor(Processor):
|
|
|
128
129
|
return None
|
|
129
130
|
|
|
130
131
|
# Scan by column name. If no results there, check the sample data, if any
|
|
131
|
-
tag_and_confidence =
|
|
132
|
+
tag_and_confidence = self.name_scanner.scan(column.name.root) or (
|
|
132
133
|
self.ner_scanner.scan([row[idx] for row in table_data.rows])
|
|
133
134
|
if table_data
|
|
134
135
|
else None
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Copyright 2021 Collate
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
# you may not use this file except in compliance with the License.
|
|
4
|
+
# You may obtain a copy of the License at
|
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
7
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
8
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
+
# See the License for the specific language governing permissions and
|
|
10
|
+
# limitations under the License.
|
|
11
|
+
"""
|
|
12
|
+
Basic Scanner ABC
|
|
13
|
+
"""
|
|
14
|
+
from abc import ABC, abstractmethod
|
|
15
|
+
from typing import Any
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class BaseScanner(ABC):
|
|
19
|
+
"""Basic scanner abstract class"""
|
|
20
|
+
|
|
21
|
+
@abstractmethod
|
|
22
|
+
def scan(self, data: Any):
|
|
23
|
+
"""Scan the given data from a column"""
|
|
@@ -17,17 +17,18 @@ from typing import Optional
|
|
|
17
17
|
from metadata.generated.schema.entity.classification.tag import Tag
|
|
18
18
|
from metadata.pii.constants import PII
|
|
19
19
|
from metadata.pii.models import TagAndConfidence, TagType
|
|
20
|
+
from metadata.pii.scanners.base import BaseScanner
|
|
20
21
|
from metadata.utils import fqn
|
|
21
22
|
|
|
22
23
|
|
|
23
|
-
class ColumnNameScanner:
|
|
24
|
+
class ColumnNameScanner(BaseScanner):
|
|
24
25
|
"""
|
|
25
26
|
Column Name Scanner to scan column name
|
|
26
27
|
"""
|
|
27
28
|
|
|
28
29
|
sensitive_regex = {
|
|
29
30
|
"PASSWORD": re.compile("^.*password.*$", re.IGNORECASE),
|
|
30
|
-
"
|
|
31
|
+
"US_SSN": re.compile("^.*(ssn|social).*$", re.IGNORECASE),
|
|
31
32
|
"CREDIT_CARD": re.compile("^.*(credit).*(card).*$", re.IGNORECASE),
|
|
32
33
|
"BANK_ACCOUNT": re.compile("^.*bank.*(acc|num).*$", re.IGNORECASE),
|
|
33
34
|
"EMAIL_ADDRESS": re.compile("^.*(email|e-mail|mail).*$", re.IGNORECASE),
|
|
@@ -53,14 +54,13 @@ class ColumnNameScanner:
|
|
|
53
54
|
"PHONE_NUMBER": re.compile("^.*(phone).*$", re.IGNORECASE),
|
|
54
55
|
}
|
|
55
56
|
|
|
56
|
-
|
|
57
|
-
def scan(cls, column_name: str) -> Optional[TagAndConfidence]:
|
|
57
|
+
def scan(self, data: str) -> Optional[TagAndConfidence]:
|
|
58
58
|
"""
|
|
59
59
|
Check the column name against the regex patterns and prepare the
|
|
60
60
|
sensitive or non-sensitive tag
|
|
61
61
|
"""
|
|
62
|
-
for pii_type_pattern in
|
|
63
|
-
if pii_type_pattern.match(
|
|
62
|
+
for pii_type_pattern in self.sensitive_regex.values():
|
|
63
|
+
if pii_type_pattern.match(data) is not None:
|
|
64
64
|
return TagAndConfidence(
|
|
65
65
|
tag_fqn=fqn.build(
|
|
66
66
|
metadata=None,
|
|
@@ -71,8 +71,8 @@ class ColumnNameScanner:
|
|
|
71
71
|
confidence=1,
|
|
72
72
|
)
|
|
73
73
|
|
|
74
|
-
for pii_type_pattern in
|
|
75
|
-
if pii_type_pattern.match(
|
|
74
|
+
for pii_type_pattern in self.non_sensitive_regex.values():
|
|
75
|
+
if pii_type_pattern.match(data) is not None:
|
|
76
76
|
return TagAndConfidence(
|
|
77
77
|
tag_fqn=fqn.build(
|
|
78
78
|
metadata=None,
|
|
@@ -13,9 +13,10 @@ NER Scanner based on Presidio.
|
|
|
13
13
|
|
|
14
14
|
Supported Entities https://microsoft.github.io/presidio/supported_entities/
|
|
15
15
|
"""
|
|
16
|
+
import json
|
|
16
17
|
import traceback
|
|
17
18
|
from collections import defaultdict
|
|
18
|
-
from typing import Any, Dict, List, Optional, Tuple
|
|
19
|
+
from typing import Any, Dict, List, Optional, Tuple, Union
|
|
19
20
|
|
|
20
21
|
from pydantic import BaseModel
|
|
21
22
|
|
|
@@ -23,6 +24,7 @@ from metadata.generated.schema.entity.classification.tag import Tag
|
|
|
23
24
|
from metadata.pii.constants import PII, SPACY_EN_MODEL
|
|
24
25
|
from metadata.pii.models import TagAndConfidence
|
|
25
26
|
from metadata.pii.ner import NEREntity
|
|
27
|
+
from metadata.pii.scanners.base import BaseScanner
|
|
26
28
|
from metadata.utils import fqn
|
|
27
29
|
from metadata.utils.logger import pii_logger
|
|
28
30
|
|
|
@@ -39,7 +41,7 @@ class StringAnalysis(BaseModel):
|
|
|
39
41
|
|
|
40
42
|
|
|
41
43
|
# pylint: disable=import-outside-toplevel
|
|
42
|
-
class NERScanner:
|
|
44
|
+
class NERScanner(BaseScanner):
|
|
43
45
|
"""
|
|
44
46
|
Based on https://microsoft.github.io/presidio/
|
|
45
47
|
"""
|
|
@@ -74,7 +76,7 @@ class NERScanner:
|
|
|
74
76
|
)
|
|
75
77
|
return top_entity, entities_score[top_entity].score
|
|
76
78
|
|
|
77
|
-
def scan(self,
|
|
79
|
+
def scan(self, data: List[Any]) -> Optional[TagAndConfidence]:
|
|
78
80
|
"""
|
|
79
81
|
Scan the column's sample data rows and look for PII.
|
|
80
82
|
|
|
@@ -95,24 +97,17 @@ class NERScanner:
|
|
|
95
97
|
be thought as the "score" times "weighted down appearances".
|
|
96
98
|
4. Once we have the "top" `Entity` from that column, we assign the PII label accordingly from `NEREntity`.
|
|
97
99
|
"""
|
|
98
|
-
logger.debug("Processing '%s'",
|
|
100
|
+
logger.debug("Processing '%s'", data)
|
|
99
101
|
|
|
100
102
|
# Initialize an empty dict for the given row list
|
|
101
103
|
entities_score: Dict[str, StringAnalysis] = defaultdict(
|
|
102
104
|
lambda: StringAnalysis(score=0, appearances=0)
|
|
103
105
|
)
|
|
104
106
|
|
|
105
|
-
str_sample_data_rows = [str(row) for row in
|
|
107
|
+
str_sample_data_rows = [str(row) for row in data if row is not None]
|
|
106
108
|
for row in str_sample_data_rows:
|
|
107
109
|
try:
|
|
108
|
-
|
|
109
|
-
for result in results:
|
|
110
|
-
entities_score[result.entity_type] = StringAnalysis(
|
|
111
|
-
score=result.score
|
|
112
|
-
if result.score > entities_score[result.entity_type].score
|
|
113
|
-
else entities_score[result.entity_type].score,
|
|
114
|
-
appearances=entities_score[result.entity_type].appearances + 1,
|
|
115
|
-
)
|
|
110
|
+
self.process_data(row=row, entities_score=entities_score)
|
|
116
111
|
except Exception as exc:
|
|
117
112
|
logger.warning(f"Unknown error while processing {row} - {exc}")
|
|
118
113
|
logger.debug(traceback.format_exc())
|
|
@@ -133,3 +128,38 @@ class NERScanner:
|
|
|
133
128
|
)
|
|
134
129
|
|
|
135
130
|
return None
|
|
131
|
+
|
|
132
|
+
def process_data(self, row: str, entities_score: Dict[str, StringAnalysis]) -> None:
|
|
133
|
+
"""Process the Sample Data rows, checking if they are of JSON format as well"""
|
|
134
|
+
# first, check if the data is JSON or we can work with strings
|
|
135
|
+
is_json, value = self.is_json_data(row)
|
|
136
|
+
if is_json and isinstance(value, dict):
|
|
137
|
+
for val in value.values():
|
|
138
|
+
self.process_data(row=str(val), entities_score=entities_score)
|
|
139
|
+
elif is_json and isinstance(value, list):
|
|
140
|
+
for val in value:
|
|
141
|
+
self.process_data(row=str(val), entities_score=entities_score)
|
|
142
|
+
else:
|
|
143
|
+
self.scan_value(value=row, entities_score=entities_score)
|
|
144
|
+
|
|
145
|
+
@staticmethod
|
|
146
|
+
def is_json_data(value: str) -> Tuple[bool, Union[dict, list, None]]:
|
|
147
|
+
"""Check if the value is a JSON object that we need to process differently than strings"""
|
|
148
|
+
try:
|
|
149
|
+
res = json.loads(value)
|
|
150
|
+
if isinstance(res, (dict, list)):
|
|
151
|
+
return True, res
|
|
152
|
+
return False, None
|
|
153
|
+
except json.JSONDecodeError:
|
|
154
|
+
return False, None
|
|
155
|
+
|
|
156
|
+
def scan_value(self, value: str, entities_score: Dict[str, StringAnalysis]):
|
|
157
|
+
"""Scan the value for PII"""
|
|
158
|
+
results = self.analyzer.analyze(value, language="en")
|
|
159
|
+
for result in results:
|
|
160
|
+
entities_score[result.entity_type] = StringAnalysis(
|
|
161
|
+
score=result.score
|
|
162
|
+
if result.score > entities_score[result.entity_type].score
|
|
163
|
+
else entities_score[result.entity_type].score,
|
|
164
|
+
appearances=entities_score[result.entity_type].appearances + 1,
|
|
165
|
+
)
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
OpenMetadata source for the profiler
|
|
13
13
|
"""
|
|
14
14
|
import traceback
|
|
15
|
-
from typing import Iterable, Optional, cast
|
|
15
|
+
from typing import Iterable, List, Optional, cast
|
|
16
16
|
|
|
17
17
|
from pydantic import BaseModel, ConfigDict
|
|
18
18
|
|
|
@@ -265,6 +265,14 @@ class OpenMetadataSource(Source):
|
|
|
265
265
|
|
|
266
266
|
return databases
|
|
267
267
|
|
|
268
|
+
def _get_fields(self) -> List[str]:
|
|
269
|
+
"""Get the fields required to process the tables"""
|
|
270
|
+
return (
|
|
271
|
+
TABLE_FIELDS
|
|
272
|
+
if not self.source_config.processPiiSensitive
|
|
273
|
+
else TABLE_FIELDS + TAGS_FIELD
|
|
274
|
+
)
|
|
275
|
+
|
|
268
276
|
def get_table_entities(self, database):
|
|
269
277
|
"""
|
|
270
278
|
List and filter OpenMetadata tables based on the
|
|
@@ -282,9 +290,7 @@ class OpenMetadataSource(Source):
|
|
|
282
290
|
"""
|
|
283
291
|
tables = self.metadata.list_all_entities(
|
|
284
292
|
entity=Table,
|
|
285
|
-
fields=
|
|
286
|
-
if not self.source_config.processPiiSensitive
|
|
287
|
-
else TABLE_FIELDS + TAGS_FIELD,
|
|
293
|
+
fields=self._get_fields(),
|
|
288
294
|
params={
|
|
289
295
|
"service": self.config.source.serviceName,
|
|
290
296
|
"database": fqn.build(
|
|
@@ -26,7 +26,6 @@ from typing import Iterable, cast
|
|
|
26
26
|
from sqlalchemy.inspection import inspect
|
|
27
27
|
|
|
28
28
|
from metadata.generated.schema.entity.data.database import Database
|
|
29
|
-
from metadata.generated.schema.entity.data.table import Table
|
|
30
29
|
from metadata.generated.schema.entity.services.ingestionPipelines.status import (
|
|
31
30
|
StackTraceError,
|
|
32
31
|
)
|
|
@@ -138,7 +137,7 @@ class OpenMetadataSourceExt(OpenMetadataSource):
|
|
|
138
137
|
service_name=None,
|
|
139
138
|
schema_name=schema_name,
|
|
140
139
|
table_name=table_name,
|
|
141
|
-
fields="
|
|
140
|
+
fields=",".join(self._get_fields()),
|
|
142
141
|
)
|
|
143
142
|
if not table_entity:
|
|
144
143
|
logger.debug(
|
|
@@ -226,36 +225,3 @@ class OpenMetadataSourceExt(OpenMetadataSource):
|
|
|
226
225
|
except Exception as exc:
|
|
227
226
|
logger.debug(f"Failed to fetch database names {exc}")
|
|
228
227
|
logger.debug(traceback.format_exc())
|
|
229
|
-
|
|
230
|
-
def get_table_entities(self, database):
|
|
231
|
-
"""
|
|
232
|
-
List and filter OpenMetadata tables based on the
|
|
233
|
-
source configuration.
|
|
234
|
-
|
|
235
|
-
The listing will be based on the entities from the
|
|
236
|
-
informed service name in the source configuration.
|
|
237
|
-
|
|
238
|
-
Note that users can specify `table_filter_pattern` to
|
|
239
|
-
either be `includes` or `excludes`. This means
|
|
240
|
-
that we will either what is specified in `includes`
|
|
241
|
-
or we will use everything but the tables excluded.
|
|
242
|
-
|
|
243
|
-
Same with `schema_filter_pattern`.
|
|
244
|
-
"""
|
|
245
|
-
tables = self.metadata.list_all_entities(
|
|
246
|
-
entity=Table,
|
|
247
|
-
fields=[
|
|
248
|
-
"tableProfilerConfig",
|
|
249
|
-
],
|
|
250
|
-
params={
|
|
251
|
-
"service": self.config.source.serviceName,
|
|
252
|
-
"database": fqn.build(
|
|
253
|
-
self.metadata,
|
|
254
|
-
entity_type=Database,
|
|
255
|
-
service_name=self.config.source.serviceName,
|
|
256
|
-
database_name=database.name.root,
|
|
257
|
-
),
|
|
258
|
-
}, # type: ignore
|
|
259
|
-
)
|
|
260
|
-
|
|
261
|
-
yield from self.filter_entities(tables)
|
metadata/workflow/profiler.py
CHANGED
|
@@ -46,8 +46,8 @@ class ProfilerWorkflow(IngestionWorkflow):
|
|
|
46
46
|
if self.config.source.serviceName:
|
|
47
47
|
return OpenMetadataSource
|
|
48
48
|
logger.info(
|
|
49
|
-
"Database Service name not provided, we will scan all the tables"
|
|
50
|
-
"available within data source and locate table entity in OpenMetadata"
|
|
49
|
+
"Database Service name not provided, we will scan all the tables "
|
|
50
|
+
"available within data source and locate table entity in OpenMetadata "
|
|
51
51
|
"to ingest profiler data."
|
|
52
52
|
)
|
|
53
53
|
return OpenMetadataSourceExt
|