openmetadata-ingestion 1.9.7.1__py3-none-any.whl → 1.9.8.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/antlr/EntityLinkLexer.py +445 -353
- metadata/generated/schema/analytics/__init__.py +1 -1
- metadata/generated/schema/analytics/basic.py +1 -1
- metadata/generated/schema/analytics/reportData.py +1 -1
- metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
- metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
- metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
- metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
- metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
- metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
- metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
- metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
- metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
- metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
- metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
- metadata/generated/schema/api/__init__.py +1 -1
- metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
- metadata/generated/schema/api/addTagToAssetsRequest.py +1 -1
- metadata/generated/schema/api/analytics/__init__.py +1 -1
- metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
- metadata/generated/schema/api/automations/__init__.py +1 -1
- metadata/generated/schema/api/automations/createWorkflow.py +1 -1
- metadata/generated/schema/api/bulkAssets.py +1 -1
- metadata/generated/schema/api/classification/__init__.py +1 -1
- metadata/generated/schema/api/classification/createClassification.py +1 -1
- metadata/generated/schema/api/classification/createTag.py +1 -1
- metadata/generated/schema/api/classification/loadTags.py +1 -1
- metadata/generated/schema/api/createBot.py +1 -1
- metadata/generated/schema/api/createEventPublisherJob.py +1 -1
- metadata/generated/schema/api/createType.py +1 -1
- metadata/generated/schema/api/data/__init__.py +1 -1
- metadata/generated/schema/api/data/createAPICollection.py +1 -1
- metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
- metadata/generated/schema/api/data/createChart.py +1 -1
- metadata/generated/schema/api/data/createContainer.py +1 -1
- metadata/generated/schema/api/data/createCustomProperty.py +1 -1
- metadata/generated/schema/api/data/createDashboard.py +1 -1
- metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
- metadata/generated/schema/api/data/createDataContract.py +1 -1
- metadata/generated/schema/api/data/createDatabase.py +1 -1
- metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
- metadata/generated/schema/api/data/createDirectory.py +1 -1
- metadata/generated/schema/api/data/createEntityProfile.py +36 -0
- metadata/generated/schema/api/data/createFile.py +1 -1
- metadata/generated/schema/api/data/createGlossary.py +1 -1
- metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
- metadata/generated/schema/api/data/createMetric.py +1 -1
- metadata/generated/schema/api/data/createMlModel.py +1 -1
- metadata/generated/schema/api/data/createPipeline.py +1 -1
- metadata/generated/schema/api/data/createQuery.py +1 -1
- metadata/generated/schema/api/data/createQueryCostRecord.py +1 -1
- metadata/generated/schema/api/data/createSearchIndex.py +1 -1
- metadata/generated/schema/api/data/createSpreadsheet.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/createWorksheet.py +1 -1
- metadata/generated/schema/api/data/loadGlossary.py +1 -1
- metadata/generated/schema/api/data/restoreEntity.py +1 -1
- metadata/generated/schema/api/data/updateColumn.py +1 -1
- metadata/generated/schema/api/dataInsight/__init__.py +1 -1
- metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
- metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
- metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
- metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
- metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
- metadata/generated/schema/api/docStore/__init__.py +1 -1
- metadata/generated/schema/api/docStore/createDocument.py +1 -1
- metadata/generated/schema/api/domains/__init__.py +1 -1
- metadata/generated/schema/api/domains/createDataProduct.py +1 -1
- metadata/generated/schema/api/domains/createDomain.py +1 -1
- metadata/generated/schema/api/entityRelationship/__init__.py +1 -1
- metadata/generated/schema/api/entityRelationship/entityRelationshipDirection.py +1 -1
- metadata/generated/schema/api/entityRelationship/esEntityRelationshipData.py +1 -1
- metadata/generated/schema/api/entityRelationship/relationshipRef.py +1 -1
- metadata/generated/schema/api/entityRelationship/searchEntityRelationshipRequest.py +1 -1
- metadata/generated/schema/api/entityRelationship/searchEntityRelationshipResult.py +1 -1
- metadata/generated/schema/api/entityRelationship/searchSchemaEntityRelationshipResult.py +1 -1
- metadata/generated/schema/api/feed/__init__.py +1 -1
- metadata/generated/schema/api/feed/closeTask.py +1 -1
- metadata/generated/schema/api/feed/createPost.py +1 -1
- metadata/generated/schema/api/feed/createSuggestion.py +1 -1
- metadata/generated/schema/api/feed/createThread.py +1 -1
- metadata/generated/schema/api/feed/resolveTask.py +1 -1
- metadata/generated/schema/api/feed/threadCount.py +1 -1
- metadata/generated/schema/api/governance/__init__.py +1 -1
- metadata/generated/schema/api/governance/createWorkflowDefinition.py +1 -1
- metadata/generated/schema/api/governance/createWorkflowInstanceState.py +1 -1
- metadata/generated/schema/api/lineage/__init__.py +1 -1
- metadata/generated/schema/api/lineage/addLineage.py +1 -1
- metadata/generated/schema/api/lineage/esLineageData.py +1 -1
- metadata/generated/schema/api/lineage/lineageDirection.py +1 -1
- metadata/generated/schema/api/lineage/nodeInformation.py +1 -1
- metadata/generated/schema/api/lineage/searchLineageRequest.py +1 -1
- metadata/generated/schema/api/lineage/searchLineageResult.py +1 -1
- metadata/generated/schema/api/mcp/__init__.py +1 -1
- metadata/generated/schema/api/mcp/mcpSearchResponse.py +1 -1
- metadata/generated/schema/api/mcp/mcpToolDefinition.py +1 -1
- metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
- metadata/generated/schema/api/policies/__init__.py +1 -1
- metadata/generated/schema/api/policies/createPolicy.py +1 -1
- metadata/generated/schema/api/scim/__init__.py +1 -1
- metadata/generated/schema/api/scim/scimGroup.py +1 -1
- metadata/generated/schema/api/scim/scimPatchOp.py +1 -1
- metadata/generated/schema/api/scim/scimUser.py +1 -1
- metadata/generated/schema/api/search/__init__.py +1 -1
- metadata/generated/schema/api/search/previewSearchRequest.py +1 -1
- metadata/generated/schema/api/services/__init__.py +1 -1
- metadata/generated/schema/api/services/createApiService.py +1 -1
- metadata/generated/schema/api/services/createDashboardService.py +1 -1
- metadata/generated/schema/api/services/createDatabaseService.py +1 -1
- metadata/generated/schema/api/services/createDriveService.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/createSecurityService.py +1 -1
- metadata/generated/schema/api/services/createStorageService.py +1 -1
- metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
- metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
- metadata/generated/schema/api/setOwner.py +1 -1
- metadata/generated/schema/api/teams/__init__.py +1 -1
- metadata/generated/schema/api/teams/createPersona.py +1 -1
- metadata/generated/schema/api/teams/createRole.py +1 -1
- metadata/generated/schema/api/teams/createTeam.py +1 -1
- metadata/generated/schema/api/teams/createUser.py +1 -1
- metadata/generated/schema/api/tests/__init__.py +1 -1
- metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
- metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
- metadata/generated/schema/api/tests/createTestCase.py +1 -1
- metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
- metadata/generated/schema/api/tests/createTestCaseResult.py +1 -1
- metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
- metadata/generated/schema/api/tests/createTestSuite.py +1 -1
- metadata/generated/schema/api/tests/moveGlossaryTermRequest.py +1 -1
- metadata/generated/schema/api/validateGlossaryTagsRequest.py +1 -1
- metadata/generated/schema/api/voteRequest.py +1 -1
- metadata/generated/schema/auth/__init__.py +1 -1
- metadata/generated/schema/auth/basicAuth.py +1 -1
- metadata/generated/schema/auth/basicLoginRequest.py +1 -1
- metadata/generated/schema/auth/changePasswordRequest.py +1 -1
- metadata/generated/schema/auth/createPersonalToken.py +1 -1
- metadata/generated/schema/auth/emailRequest.py +1 -1
- metadata/generated/schema/auth/emailVerificationToken.py +1 -1
- metadata/generated/schema/auth/generateToken.py +1 -1
- metadata/generated/schema/auth/jwtAuth.py +1 -1
- metadata/generated/schema/auth/loginRequest.py +1 -1
- metadata/generated/schema/auth/logoutRequest.py +1 -1
- metadata/generated/schema/auth/passwordResetRequest.py +1 -1
- metadata/generated/schema/auth/passwordResetToken.py +1 -1
- metadata/generated/schema/auth/personalAccessToken.py +1 -1
- metadata/generated/schema/auth/refreshToken.py +1 -1
- metadata/generated/schema/auth/registrationRequest.py +1 -1
- metadata/generated/schema/auth/revokePersonalToken.py +1 -1
- metadata/generated/schema/auth/revokeToken.py +1 -1
- metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
- metadata/generated/schema/auth/ssoAuth.py +1 -1
- metadata/generated/schema/auth/supportToken.py +1 -1
- metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
- metadata/generated/schema/configuration/__init__.py +1 -1
- metadata/generated/schema/configuration/aiPlatformConfiguration.py +1 -1
- metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
- metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
- metadata/generated/schema/configuration/authConfig.py +1 -1
- metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
- metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
- metadata/generated/schema/configuration/cacheConfiguration.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/entityRulesSettings.py +1 -1
- metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
- metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
- metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
- metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
- metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
- metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
- metadata/generated/schema/configuration/lineageSettings.py +1 -1
- metadata/generated/schema/configuration/loginConfiguration.py +1 -1
- metadata/generated/schema/configuration/logoConfiguration.py +1 -1
- metadata/generated/schema/configuration/openMetadataBaseUrlConfiguration.py +1 -1
- metadata/generated/schema/configuration/opertionalConfiguration.py +1 -1
- metadata/generated/schema/configuration/opsConfig.py +1 -1
- metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
- metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
- metadata/generated/schema/configuration/searchSettings.py +1 -1
- metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
- metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
- metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
- metadata/generated/schema/configuration/themeConfiguration.py +1 -1
- metadata/generated/schema/configuration/uiThemePreference.py +1 -1
- metadata/generated/schema/configuration/workflowSettings.py +1 -1
- metadata/generated/schema/dataInsight/__init__.py +1 -1
- metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
- metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
- metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -1
- metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
- metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
- metadata/generated/schema/dataInsight/custom/lineChart.py +1 -1
- metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
- metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
- metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
- metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
- metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
- metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
- metadata/generated/schema/dataInsight/type/__init__.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
- metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
- metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
- metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
- metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
- metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
- metadata/generated/schema/email/__init__.py +1 -1
- metadata/generated/schema/email/emailRequest.py +1 -1
- metadata/generated/schema/email/emailTemplate.py +1 -1
- metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
- metadata/generated/schema/email/smtpSettings.py +1 -1
- metadata/generated/schema/email/templateValidationReponse.py +1 -1
- metadata/generated/schema/entity/__init__.py +1 -1
- metadata/generated/schema/entity/applications/__init__.py +1 -1
- metadata/generated/schema/entity/applications/app.py +15 -1
- metadata/generated/schema/entity/applications/appExtension.py +1 -1
- metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
- metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addCustomProperties.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addDataProductAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addTermsAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addTestCaseAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/propagationStopConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeCustomPropertiesAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDataProductAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTermsAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTestCaseAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/metadataExporterAppConfig.py +103 -0
- metadata/generated/schema/entity/applications/configuration/external/metadataExporterConnectors/__init__.py +3 -0
- metadata/generated/schema/entity/applications/configuration/external/metadataExporterConnectors/bigQueryConnection.py +90 -0
- metadata/generated/schema/entity/applications/configuration/external/metadataExporterConnectors/databricksConnection.py +89 -0
- metadata/generated/schema/entity/applications/configuration/external/metadataExporterConnectors/redshiftConnection.py +76 -0
- metadata/generated/schema/entity/applications/configuration/external/metadataExporterConnectors/snowflakeConnection.py +115 -0
- metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/autoPilotAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/collateAIQualityAgentAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/collateAITierAgentAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataRetentionConfiguration.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/helloPipelinesConfiguration.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/internal/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/internal/collateAITierAgentAppPrivateConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/limits.py +1 -1
- metadata/generated/schema/entity/applications/createAppRequest.py +9 -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 +8 -1
- metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +8 -1
- metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
- metadata/generated/schema/entity/automations/__init__.py +1 -1
- metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
- metadata/generated/schema/entity/automations/workflow.py +1 -1
- metadata/generated/schema/entity/bot.py +1 -1
- metadata/generated/schema/entity/classification/__init__.py +1 -1
- metadata/generated/schema/entity/classification/classification.py +1 -1
- metadata/generated/schema/entity/classification/tag.py +1 -1
- metadata/generated/schema/entity/data/__init__.py +1 -1
- metadata/generated/schema/entity/data/apiCollection.py +1 -1
- metadata/generated/schema/entity/data/apiEndpoint.py +1 -1
- metadata/generated/schema/entity/data/chart.py +1 -1
- metadata/generated/schema/entity/data/container.py +1 -1
- metadata/generated/schema/entity/data/dashboard.py +1 -1
- metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
- metadata/generated/schema/entity/data/dataContract.py +1 -1
- metadata/generated/schema/entity/data/database.py +1 -1
- metadata/generated/schema/entity/data/databaseSchema.py +1 -1
- metadata/generated/schema/entity/data/directory.py +1 -1
- metadata/generated/schema/entity/data/file.py +1 -1
- metadata/generated/schema/entity/data/glossary.py +1 -1
- metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
- metadata/generated/schema/entity/data/metric.py +1 -1
- metadata/generated/schema/entity/data/mlmodel.py +1 -1
- metadata/generated/schema/entity/data/pipeline.py +1 -1
- metadata/generated/schema/entity/data/query.py +1 -1
- metadata/generated/schema/entity/data/queryCostRecord.py +1 -1
- metadata/generated/schema/entity/data/queryCostSearchResult.py +1 -1
- metadata/generated/schema/entity/data/report.py +1 -1
- metadata/generated/schema/entity/data/searchIndex.py +1 -1
- metadata/generated/schema/entity/data/spreadsheet.py +1 -1
- metadata/generated/schema/entity/data/storedProcedure.py +1 -1
- metadata/generated/schema/entity/data/table.py +8 -1
- metadata/generated/schema/entity/data/topic.py +1 -1
- metadata/generated/schema/entity/data/worksheet.py +1 -1
- metadata/generated/schema/entity/datacontract/__init__.py +1 -1
- metadata/generated/schema/entity/datacontract/dataContractResult.py +1 -1
- metadata/generated/schema/entity/datacontract/qualityValidation.py +1 -1
- metadata/generated/schema/entity/datacontract/schemaValidation.py +1 -1
- metadata/generated/schema/entity/datacontract/semanticsValidation.py +1 -1
- metadata/generated/schema/entity/datacontract/slaValidation.py +1 -1
- metadata/generated/schema/entity/docStore/__init__.py +1 -1
- metadata/generated/schema/entity/docStore/document.py +1 -1
- metadata/generated/schema/entity/domains/__init__.py +1 -1
- metadata/generated/schema/entity/domains/dataProduct.py +1 -1
- metadata/generated/schema/entity/domains/domain.py +1 -1
- metadata/generated/schema/entity/events/__init__.py +1 -1
- metadata/generated/schema/entity/events/webhook.py +1 -1
- metadata/generated/schema/entity/feed/__init__.py +1 -1
- metadata/generated/schema/entity/feed/assets.py +1 -1
- metadata/generated/schema/entity/feed/customProperty.py +1 -1
- metadata/generated/schema/entity/feed/description.py +1 -1
- metadata/generated/schema/entity/feed/domain.py +1 -1
- metadata/generated/schema/entity/feed/entityInfo.py +1 -1
- metadata/generated/schema/entity/feed/owner.py +1 -1
- metadata/generated/schema/entity/feed/suggestion.py +1 -1
- metadata/generated/schema/entity/feed/tag.py +1 -1
- metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
- metadata/generated/schema/entity/feed/thread.py +1 -1
- metadata/generated/schema/entity/policies/__init__.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
- metadata/generated/schema/entity/policies/filters.py +1 -1
- metadata/generated/schema/entity/policies/policy.py +1 -1
- metadata/generated/schema/entity/services/__init__.py +1 -1
- metadata/generated/schema/entity/services/apiService.py +1 -1
- metadata/generated/schema/entity/services/connections/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/api/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/api/restConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
- metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
- metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/grafanaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/thoughtSpotConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/cassandra/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/cassandra/cloudConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/cassandraConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/cockroachConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
- metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/epicConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/exasolConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/serviceNowConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/ssasConnection.py +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/drive/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/drive/customDriveConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/drive/googleDriveConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/drive/sharePointConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/matillion/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/matillion/matillionETL.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/nifi/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/nifi/basicAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/nifi/clientCertificateAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/ssisConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/wherescapeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/security/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/security/ranger/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/security/ranger/basicAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/security/rangerConnection.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/driveService.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/reverseIngestionResponse.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
- metadata/generated/schema/entity/services/messagingService.py +1 -1
- metadata/generated/schema/entity/services/metadataService.py +1 -1
- metadata/generated/schema/entity/services/mlmodelService.py +1 -1
- metadata/generated/schema/entity/services/pipelineService.py +1 -1
- metadata/generated/schema/entity/services/searchService.py +1 -1
- metadata/generated/schema/entity/services/securityService.py +1 -1
- metadata/generated/schema/entity/services/serviceType.py +1 -1
- metadata/generated/schema/entity/services/storageService.py +1 -1
- metadata/generated/schema/entity/teams/__init__.py +1 -1
- metadata/generated/schema/entity/teams/persona.py +1 -1
- metadata/generated/schema/entity/teams/role.py +1 -1
- metadata/generated/schema/entity/teams/team.py +1 -1
- metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
- metadata/generated/schema/entity/teams/user.py +1 -1
- metadata/generated/schema/entity/type.py +1 -1
- metadata/generated/schema/entity/utils/__init__.py +1 -1
- metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
- metadata/generated/schema/entity/utils/servicesCount.py +1 -1
- metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
- metadata/generated/schema/events/__init__.py +1 -1
- metadata/generated/schema/events/alertMetrics.py +1 -1
- metadata/generated/schema/events/api/__init__.py +1 -1
- metadata/generated/schema/events/api/createEventSubscription.py +1 -1
- metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +1 -1
- metadata/generated/schema/events/api/eventsRecord.py +1 -1
- metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
- metadata/generated/schema/events/api/typedEvent.py +1 -1
- metadata/generated/schema/events/emailAlertConfig.py +1 -1
- metadata/generated/schema/events/eventFilterRule.py +1 -1
- metadata/generated/schema/events/eventSubscription.py +1 -1
- metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
- metadata/generated/schema/events/failedEvent.py +1 -1
- metadata/generated/schema/events/failedEventResponse.py +1 -1
- metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
- metadata/generated/schema/events/statusContext.py +1 -1
- metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
- metadata/generated/schema/events/subscriptionStatus.py +1 -1
- metadata/generated/schema/events/testDestinationStatus.py +1 -1
- metadata/generated/schema/governance/workflows/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/edge.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodeSubType.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodeType.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/createAndRunIngestionPipelineTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/runAppTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/gateway/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/gateway/parallelGateway.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/noOpTrigger.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +1 -1
- metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
- metadata/generated/schema/governance/workflows/workflowInstance.py +1 -1
- metadata/generated/schema/governance/workflows/workflowInstanceState.py +1 -1
- metadata/generated/schema/jobs/__init__.py +1 -1
- metadata/generated/schema/jobs/backgroundJob.py +1 -1
- metadata/generated/schema/jobs/enumCleanupArgs.py +1 -1
- metadata/generated/schema/metadataIngestion/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/application.py +1 -1
- metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
- metadata/generated/schema/metadataIngestion/driveServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/engine/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/engine/nativeEngineConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/engine/sparkEngineConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/reverseIngestionPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/descriptionConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/ownerConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/tagsConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/securityServiceMetadataPipeline.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 +9 -1
- metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
- metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/workflow.py +1 -1
- metadata/generated/schema/monitoring/__init__.py +1 -1
- metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
- metadata/generated/schema/scim/__init__.py +1 -1
- metadata/generated/schema/scim/scimConfiguration.py +1 -1
- metadata/generated/schema/search/__init__.py +1 -1
- metadata/generated/schema/search/aggregationRequest.py +1 -1
- metadata/generated/schema/search/searchRequest.py +1 -1
- metadata/generated/schema/security/__init__.py +1 -1
- metadata/generated/schema/security/client/__init__.py +1 -1
- metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
- metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
- metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
- metadata/generated/schema/security/credentials/__init__.py +1 -1
- metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
- metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
- metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
- metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
- metadata/generated/schema/security/credentials/basicAuth.py +1 -1
- metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
- metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
- metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
- metadata/generated/schema/security/credentials/gcpValues.py +1 -1
- metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
- metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
- metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
- metadata/generated/schema/security/credentials/kubernetesCredentials.py +1 -1
- metadata/generated/schema/security/sasl/__init__.py +1 -1
- metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
- metadata/generated/schema/security/secrets/__init__.py +1 -1
- metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
- metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
- metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
- metadata/generated/schema/security/securityConfiguration.py +1 -1
- metadata/generated/schema/security/ssl/__init__.py +1 -1
- metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
- metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
- metadata/generated/schema/settings/__init__.py +1 -1
- metadata/generated/schema/settings/settings.py +1 -1
- metadata/generated/schema/system/__init__.py +1 -1
- metadata/generated/schema/system/entityError.py +1 -1
- metadata/generated/schema/system/eventPublisherJob.py +1 -1
- metadata/generated/schema/system/indexingError.py +1 -1
- metadata/generated/schema/system/limitsResponse.py +1 -1
- metadata/generated/schema/system/ui/__init__.py +1 -1
- metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
- metadata/generated/schema/system/ui/navigationItem.py +1 -1
- metadata/generated/schema/system/ui/page.py +1 -1
- metadata/generated/schema/system/ui/tab.py +1 -1
- metadata/generated/schema/system/ui/uiCustomization.py +1 -1
- metadata/generated/schema/system/validationResponse.py +1 -1
- metadata/generated/schema/tests/__init__.py +1 -1
- metadata/generated/schema/tests/assigned.py +1 -1
- metadata/generated/schema/tests/basic.py +1 -1
- metadata/generated/schema/tests/customMetric.py +1 -1
- metadata/generated/schema/tests/dataQualityReport.py +1 -1
- metadata/generated/schema/tests/resolved.py +1 -1
- metadata/generated/schema/tests/testCase.py +1 -1
- metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
- metadata/generated/schema/tests/testDefinition.py +1 -1
- metadata/generated/schema/tests/testSuite.py +8 -1
- metadata/generated/schema/type/__init__.py +1 -1
- metadata/generated/schema/type/apiSchema.py +1 -1
- metadata/generated/schema/type/assetCertification.py +1 -1
- metadata/generated/schema/type/auditLog.py +1 -1
- metadata/generated/schema/type/basic.py +1 -1
- metadata/generated/schema/type/bulkOperationResult.py +1 -1
- metadata/generated/schema/type/changeEvent.py +1 -1
- metadata/generated/schema/type/changeEventType.py +1 -1
- metadata/generated/schema/type/changeSummaryMap.py +1 -1
- metadata/generated/schema/type/collectionDescriptor.py +1 -1
- metadata/generated/schema/type/contractExecutionStatus.py +1 -1
- metadata/generated/schema/type/csvDocumentation.py +1 -1
- metadata/generated/schema/type/csvErrorType.py +1 -1
- metadata/generated/schema/type/csvFile.py +1 -1
- metadata/generated/schema/type/csvImportResult.py +1 -1
- metadata/generated/schema/type/customProperties/__init__.py +1 -1
- metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
- metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
- metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
- metadata/generated/schema/type/customProperty.py +1 -1
- metadata/generated/schema/type/dailyCount.py +1 -1
- metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
- metadata/generated/schema/type/entityHierarchy.py +1 -1
- metadata/generated/schema/type/entityHistory.py +1 -1
- metadata/generated/schema/type/entityLineage.py +1 -1
- metadata/generated/schema/type/entityProfile.py +45 -0
- metadata/generated/schema/type/entityReference.py +1 -1
- metadata/generated/schema/type/entityReferenceList.py +1 -1
- metadata/generated/schema/type/entityRelationship/__init__.py +1 -1
- metadata/generated/schema/type/entityRelationship/nodeInformation.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/layerPaging.py +1 -1
- metadata/generated/schema/type/lifeCycle.py +1 -1
- metadata/generated/schema/type/paging.py +1 -1
- metadata/generated/schema/type/personaPreferences.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/api/status.py +6 -1
- metadata/ingestion/api/step.py +3 -1
- metadata/ingestion/connections/builders.py +5 -1
- metadata/ingestion/lineage/models.py +4 -0
- metadata/ingestion/ometa/mixins/profile_mixin.py +77 -0
- metadata/ingestion/ometa/ometa_api.py +2 -0
- metadata/ingestion/ometa/routes.py +2 -0
- metadata/ingestion/source/dashboard/metabase/client.py +2 -2
- metadata/ingestion/source/dashboard/metabase/models.py +49 -1
- metadata/ingestion/source/database/athena/utils.py +1 -1
- metadata/ingestion/source/database/bigquery/connection.py +29 -13
- metadata/ingestion/source/database/bigquery/queries.py +6 -1
- metadata/ingestion/source/database/dbt/metadata.py +5 -0
- metadata/ingestion/source/database/glue/metadata.py +2 -2
- metadata/ingestion/source/database/oracle/connection.py +2 -18
- metadata/ingestion/source/database/oracle/queries.py +25 -6
- metadata/ingestion/source/database/stored_procedures_mixin.py +3 -0
- metadata/ingestion/source/database/trino/metadata.py +43 -4
- metadata/ingestion/source/database/trino/queries.py +4 -0
- metadata/ingestion/source/storage/storage_service.py +1 -0
- metadata/profiler/interface/sqlalchemy/bigquery/profiler_interface.py +17 -0
- metadata/profiler/metrics/system/bigquery/system.py +4 -1
- metadata/profiler/orm/functions/table_metric_computer.py +4 -8
- metadata/sampler/sqlalchemy/bigquery/sampler.py +17 -0
- metadata/workflow/base.py +8 -1
- {openmetadata_ingestion-1.9.7.1.dist-info → openmetadata_ingestion-1.9.8.0.dist-info}/METADATA +540 -540
- {openmetadata_ingestion-1.9.7.1.dist-info → openmetadata_ingestion-1.9.8.0.dist-info}/RECORD +801 -792
- {openmetadata_ingestion-1.9.7.1.dist-info → openmetadata_ingestion-1.9.8.0.dist-info}/LICENSE +0 -0
- {openmetadata_ingestion-1.9.7.1.dist-info → openmetadata_ingestion-1.9.8.0.dist-info}/WHEEL +0 -0
- {openmetadata_ingestion-1.9.7.1.dist-info → openmetadata_ingestion-1.9.8.0.dist-info}/entry_points.txt +0 -0
- {openmetadata_ingestion-1.9.7.1.dist-info → openmetadata_ingestion-1.9.8.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Copyright 2025 Collate
|
|
2
|
+
# Licensed under the Collate Community License, Version 1.0 (the "License");
|
|
3
|
+
# you may not use this file except in compliance with the License.
|
|
4
|
+
# You may obtain a copy of the License at
|
|
5
|
+
# https://github.com/open-metadata/OpenMetadata/blob/main/ingestion/LICENSE
|
|
6
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
7
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
8
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
+
# See the License for the specific language governing permissions and
|
|
10
|
+
# limitations under the License.
|
|
11
|
+
"""
|
|
12
|
+
Mixin class containing Pipeline specific methods
|
|
13
|
+
|
|
14
|
+
To be used by OpenMetadata class
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
from typing import Optional, Type, TypeVar
|
|
18
|
+
|
|
19
|
+
from pydantic import BaseModel
|
|
20
|
+
|
|
21
|
+
from metadata.generated.schema.type.entityProfile import EntityProfile, ProfileTypeEnum
|
|
22
|
+
from metadata.ingestion.ometa.client import REST
|
|
23
|
+
from metadata.ingestion.ometa.models import EntityList
|
|
24
|
+
from metadata.ingestion.ometa.utils import get_entity_type
|
|
25
|
+
from metadata.utils.logger import ometa_logger
|
|
26
|
+
|
|
27
|
+
logger = ometa_logger()
|
|
28
|
+
|
|
29
|
+
T = TypeVar("T", bound=BaseModel)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class OMetaProfileMixin:
|
|
33
|
+
"""
|
|
34
|
+
OpenMetadata API methods related to Profiles.
|
|
35
|
+
|
|
36
|
+
To be inherited by OpenMetadata
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
client: REST
|
|
40
|
+
|
|
41
|
+
def get_profile_data_by_type(
|
|
42
|
+
self,
|
|
43
|
+
entity_type: Type[T],
|
|
44
|
+
start_ts: int,
|
|
45
|
+
end_ts: int,
|
|
46
|
+
profile_type: Optional[ProfileTypeEnum] = None,
|
|
47
|
+
) -> EntityList[EntityProfile]:
|
|
48
|
+
"""List all profile data for a given entity type. To get all the profile for
|
|
49
|
+
a specific profile type use the profile_type parameter.
|
|
50
|
+
|
|
51
|
+
Args:
|
|
52
|
+
entity_type (Type[T]): Entity type
|
|
53
|
+
start_ts (int): Start timestamp
|
|
54
|
+
end_ts (int): End timestamp
|
|
55
|
+
profile_type (Optional[ProfileTypeEnum]): Profile type
|
|
56
|
+
|
|
57
|
+
Returns:
|
|
58
|
+
EntityList[EntityProfile]: EntityList list object
|
|
59
|
+
"""
|
|
60
|
+
entity_type = get_entity_type(entity_type)
|
|
61
|
+
params = {
|
|
62
|
+
"startTs": start_ts,
|
|
63
|
+
"endTs": end_ts,
|
|
64
|
+
}
|
|
65
|
+
if profile_type:
|
|
66
|
+
params["profileType"] = profile_type.value
|
|
67
|
+
resp = self.client.get(
|
|
68
|
+
f"{self.get_suffix(EntityProfile)}/{entity_type}",
|
|
69
|
+
data=params,
|
|
70
|
+
)
|
|
71
|
+
paging = resp["paging"]
|
|
72
|
+
return EntityList[EntityProfile](
|
|
73
|
+
entities=[EntityProfile(**entity) for entity in resp["data"]],
|
|
74
|
+
total=paging["total"],
|
|
75
|
+
after=paging["after"],
|
|
76
|
+
before=paging["before"],
|
|
77
|
+
)
|
|
@@ -47,6 +47,7 @@ from metadata.ingestion.ometa.mixins.ingestion_pipeline_mixin import (
|
|
|
47
47
|
from metadata.ingestion.ometa.mixins.mlmodel_mixin import OMetaMlModelMixin
|
|
48
48
|
from metadata.ingestion.ometa.mixins.patch_mixin import OMetaPatchMixin
|
|
49
49
|
from metadata.ingestion.ometa.mixins.pipeline_mixin import OMetaPipelineMixin
|
|
50
|
+
from metadata.ingestion.ometa.mixins.profile_mixin import OMetaProfileMixin
|
|
50
51
|
from metadata.ingestion.ometa.mixins.query_mixin import OMetaQueryMixin
|
|
51
52
|
from metadata.ingestion.ometa.mixins.role_policy_mixin import OMetaRolePolicyMixin
|
|
52
53
|
from metadata.ingestion.ometa.mixins.search_index_mixin import OMetaSearchIndexMixin
|
|
@@ -129,6 +130,7 @@ class OpenMetadata(
|
|
|
129
130
|
OMetaCustomPropertyMixin,
|
|
130
131
|
OMetaSuggestionsMixin,
|
|
131
132
|
OMetaDomainMixin,
|
|
133
|
+
OMetaProfileMixin,
|
|
132
134
|
Generic[T, C],
|
|
133
135
|
):
|
|
134
136
|
"""
|
|
@@ -193,6 +193,7 @@ from metadata.generated.schema.tests.basic import TestCaseResult
|
|
|
193
193
|
from metadata.generated.schema.tests.testCase import TestCase
|
|
194
194
|
from metadata.generated.schema.tests.testDefinition import TestDefinition
|
|
195
195
|
from metadata.generated.schema.tests.testSuite import TestSuite
|
|
196
|
+
from metadata.generated.schema.type.entityProfile import EntityProfile
|
|
196
197
|
|
|
197
198
|
ROUTES = {
|
|
198
199
|
MlModel.__name__: "/mlmodels",
|
|
@@ -327,4 +328,5 @@ ROUTES = {
|
|
|
327
328
|
# Data Contracts
|
|
328
329
|
DataContract.__name__: "/dataContracts",
|
|
329
330
|
CreateDataContractRequest.__name__: "/dataContracts",
|
|
331
|
+
EntityProfile.__name__: "/entity/profiles",
|
|
330
332
|
}
|
|
@@ -160,9 +160,9 @@ class MetabaseClient:
|
|
|
160
160
|
chart = MetabaseChart.model_validate(chart_data)
|
|
161
161
|
charts_dict[chart.id] = chart
|
|
162
162
|
return charts_dict
|
|
163
|
-
except Exception:
|
|
163
|
+
except Exception as e:
|
|
164
164
|
logger.debug(traceback.format_exc())
|
|
165
|
-
logger.warning("Failed to fetch the cards")
|
|
165
|
+
logger.warning(f"Failed to fetch the cards : {e}")
|
|
166
166
|
return {}
|
|
167
167
|
|
|
168
168
|
def _create_default_dashboard_details(
|
|
@@ -11,9 +11,11 @@
|
|
|
11
11
|
"""
|
|
12
12
|
Metabase Models
|
|
13
13
|
"""
|
|
14
|
+
import ast
|
|
15
|
+
import json
|
|
14
16
|
from typing import List, Optional
|
|
15
17
|
|
|
16
|
-
from pydantic import BaseModel, BeforeValidator, Field
|
|
18
|
+
from pydantic import BaseModel, BeforeValidator, Field, field_validator
|
|
17
19
|
from typing_extensions import Annotated
|
|
18
20
|
|
|
19
21
|
MetabaseStrId = Annotated[str, BeforeValidator(lambda x: str(x))]
|
|
@@ -84,6 +86,52 @@ class MetabaseChart(BaseModel):
|
|
|
84
86
|
display: Optional[str] = None
|
|
85
87
|
dashboard_ids: List[str] = []
|
|
86
88
|
|
|
89
|
+
@field_validator("dataset_query", mode="before")
|
|
90
|
+
@classmethod
|
|
91
|
+
def parse_dataset_query(cls, v):
|
|
92
|
+
if v is None:
|
|
93
|
+
return None
|
|
94
|
+
|
|
95
|
+
# If it's already a dict or DatasetQuery object, return as is
|
|
96
|
+
if isinstance(v, (dict, DatasetQuery)):
|
|
97
|
+
return v
|
|
98
|
+
|
|
99
|
+
# If it's a string, try multiple parsing strategies
|
|
100
|
+
if isinstance(v, str):
|
|
101
|
+
# Strategy 1: Try standard JSON parsing
|
|
102
|
+
try:
|
|
103
|
+
return json.loads(v)
|
|
104
|
+
except json.JSONDecodeError:
|
|
105
|
+
pass
|
|
106
|
+
|
|
107
|
+
# Strategy 2: Try ast.literal_eval for Python dict strings
|
|
108
|
+
try:
|
|
109
|
+
parsed = ast.literal_eval(v)
|
|
110
|
+
if isinstance(parsed, dict):
|
|
111
|
+
return parsed
|
|
112
|
+
except (ValueError, SyntaxError):
|
|
113
|
+
pass
|
|
114
|
+
|
|
115
|
+
# Strategy 3: More sophisticated quote replacement
|
|
116
|
+
try:
|
|
117
|
+
# Handle None values and booleans
|
|
118
|
+
json_str = (
|
|
119
|
+
v.replace("'", '"')
|
|
120
|
+
.replace("None", "null")
|
|
121
|
+
.replace("True", "true")
|
|
122
|
+
.replace("False", "false")
|
|
123
|
+
)
|
|
124
|
+
return json.loads(json_str)
|
|
125
|
+
except json.JSONDecodeError:
|
|
126
|
+
pass
|
|
127
|
+
|
|
128
|
+
# If all strategies fail, log and return None
|
|
129
|
+
print(f"Failed to parse dataset_query string: {v[:100]}...")
|
|
130
|
+
return None
|
|
131
|
+
|
|
132
|
+
# For any other type, return as is and let Pydantic handle validation
|
|
133
|
+
return v
|
|
134
|
+
|
|
87
135
|
|
|
88
136
|
class DashCard(BaseModel):
|
|
89
137
|
card: MetabaseChart
|
|
@@ -173,7 +173,7 @@ def get_columns(self, connection, table_name, schema=None, **kw):
|
|
|
173
173
|
for glue_col in glue_columns:
|
|
174
174
|
col_name = glue_col["Name"]
|
|
175
175
|
col_type = glue_col["Type"]
|
|
176
|
-
col_comment = glue_col.get("Comment"
|
|
176
|
+
col_comment = glue_col.get("Comment")
|
|
177
177
|
col_parameters = glue_col.get("Parameters", {})
|
|
178
178
|
|
|
179
179
|
# Check if this is a non-current Iceberg column
|
|
@@ -31,6 +31,7 @@ from metadata.generated.schema.entity.services.connections.testConnectionResult
|
|
|
31
31
|
TestConnectionResult,
|
|
32
32
|
)
|
|
33
33
|
from metadata.generated.schema.security.credentials.gcpCredentials import (
|
|
34
|
+
GcpADC,
|
|
34
35
|
GcpCredentialsPath,
|
|
35
36
|
)
|
|
36
37
|
from metadata.generated.schema.security.credentials.gcpValues import (
|
|
@@ -68,25 +69,21 @@ def get_connection_url(connection: BigQueryConnection) -> str:
|
|
|
68
69
|
connection.credentials.gcpConfig.projectId, SingleProjectId
|
|
69
70
|
):
|
|
70
71
|
if not connection.credentials.gcpConfig.projectId.root:
|
|
71
|
-
return f"{connection.scheme.value}://{connection.
|
|
72
|
+
return f"{connection.scheme.value}://{connection.credentials.gcpConfig.projectId.root or ''}"
|
|
72
73
|
if (
|
|
73
74
|
not connection.credentials.gcpConfig.privateKey
|
|
74
75
|
and connection.credentials.gcpConfig.projectId.root
|
|
75
76
|
):
|
|
76
77
|
project_id = connection.credentials.gcpConfig.projectId.root
|
|
77
|
-
os.environ["GOOGLE_CLOUD_PROJECT"] =
|
|
78
|
-
|
|
79
|
-
)
|
|
80
|
-
return f"{connection.scheme.value}://{connection.billingProjectId or connection.credentials.gcpConfig.projectId.root}"
|
|
78
|
+
os.environ["GOOGLE_CLOUD_PROJECT"] = project_id
|
|
79
|
+
return f"{connection.scheme.value}://{connection.credentials.gcpConfig.projectId.root}"
|
|
81
80
|
elif isinstance(connection.credentials.gcpConfig.projectId, MultipleProjectId):
|
|
82
81
|
for project_id in connection.credentials.gcpConfig.projectId.root:
|
|
83
82
|
if not connection.credentials.gcpConfig.privateKey and project_id:
|
|
84
83
|
# Setting environment variable based on project id given by user / set in ADC
|
|
85
|
-
os.environ["GOOGLE_CLOUD_PROJECT"] =
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
return f"{connection.scheme.value}://{connection.billingProjectId or project_id}"
|
|
89
|
-
return f"{connection.scheme.value}://{connection.billingProjectId or ''}"
|
|
84
|
+
os.environ["GOOGLE_CLOUD_PROJECT"] = project_id
|
|
85
|
+
return f"{connection.scheme.value}://{project_id}"
|
|
86
|
+
return f"{connection.scheme.value}://"
|
|
90
87
|
|
|
91
88
|
# If gcpConfig is the JSON key path and projectId is defined, we use it by default
|
|
92
89
|
elif (
|
|
@@ -96,13 +93,27 @@ def get_connection_url(connection: BigQueryConnection) -> str:
|
|
|
96
93
|
if isinstance( # pylint: disable=no-else-return
|
|
97
94
|
connection.credentials.gcpConfig.projectId, SingleProjectId
|
|
98
95
|
):
|
|
99
|
-
return f"{connection.scheme.value}://{connection.
|
|
96
|
+
return f"{connection.scheme.value}://{connection.credentials.gcpConfig.projectId.root}"
|
|
97
|
+
|
|
98
|
+
elif isinstance(connection.credentials.gcpConfig.projectId, MultipleProjectId):
|
|
99
|
+
for project_id in connection.credentials.gcpConfig.projectId.root:
|
|
100
|
+
return f"{connection.scheme.value}://{project_id}"
|
|
101
|
+
|
|
102
|
+
# If gcpConfig is the GCP ADC and projectId is defined, we use it by default
|
|
103
|
+
elif (
|
|
104
|
+
isinstance(connection.credentials.gcpConfig, GcpADC)
|
|
105
|
+
and connection.credentials.gcpConfig.projectId
|
|
106
|
+
):
|
|
107
|
+
if isinstance( # pylint: disable=no-else-return
|
|
108
|
+
connection.credentials.gcpConfig.projectId, SingleProjectId
|
|
109
|
+
):
|
|
110
|
+
return f"{connection.scheme.value}://{connection.credentials.gcpConfig.projectId.root}"
|
|
100
111
|
|
|
101
112
|
elif isinstance(connection.credentials.gcpConfig.projectId, MultipleProjectId):
|
|
102
113
|
for project_id in connection.credentials.gcpConfig.projectId.root:
|
|
103
|
-
return f"{connection.scheme.value}://{
|
|
114
|
+
return f"{connection.scheme.value}://{project_id}"
|
|
104
115
|
|
|
105
|
-
return f"{connection.scheme.value}://
|
|
116
|
+
return f"{connection.scheme.value}://"
|
|
106
117
|
|
|
107
118
|
|
|
108
119
|
def get_connection(connection: BigQueryConnection) -> Engine:
|
|
@@ -110,10 +121,15 @@ def get_connection(connection: BigQueryConnection) -> Engine:
|
|
|
110
121
|
Prepare the engine and the GCP credentials
|
|
111
122
|
"""
|
|
112
123
|
set_google_credentials(gcp_credentials=connection.credentials)
|
|
124
|
+
kwargs = {}
|
|
125
|
+
if connection.billingProjectId:
|
|
126
|
+
kwargs["billing_project_id"] = connection.billingProjectId
|
|
127
|
+
|
|
113
128
|
return create_generic_db_connection(
|
|
114
129
|
connection=connection,
|
|
115
130
|
get_connection_url_fn=get_connection_url,
|
|
116
131
|
get_connection_args_fn=get_connection_args_common,
|
|
132
|
+
**kwargs,
|
|
117
133
|
)
|
|
118
134
|
|
|
119
135
|
|
|
@@ -211,13 +211,18 @@ class BigQueryQueryResult(BaseModel):
|
|
|
211
211
|
usage_location: str,
|
|
212
212
|
dataset_id: str,
|
|
213
213
|
project_id: str,
|
|
214
|
+
billing_project_id: Optional[str] = None,
|
|
214
215
|
):
|
|
216
|
+
# Use billing project for the INFORMATION_SCHEMA query if provided
|
|
217
|
+
query_project_id = billing_project_id or project_id
|
|
218
|
+
|
|
215
219
|
rows = session.execute(
|
|
216
220
|
text(
|
|
217
221
|
JOBS.format(
|
|
218
222
|
usage_location=usage_location,
|
|
219
223
|
dataset_id=dataset_id,
|
|
220
224
|
project_id=project_id,
|
|
225
|
+
query_project_id=query_project_id,
|
|
221
226
|
insert=DatabaseDMLOperations.INSERT.value,
|
|
222
227
|
update=DatabaseDMLOperations.UPDATE.value,
|
|
223
228
|
delete=DatabaseDMLOperations.DELETE.value,
|
|
@@ -240,7 +245,7 @@ JOBS = """
|
|
|
240
245
|
dml_statistics.deleted_row_count as deleted_row_count,
|
|
241
246
|
dml_statistics.updated_row_count as updated_row_count
|
|
242
247
|
FROM
|
|
243
|
-
`region-{usage_location}`.INFORMATION_SCHEMA.JOBS
|
|
248
|
+
`{query_project_id}`.`region-{usage_location}`.INFORMATION_SCHEMA.JOBS
|
|
244
249
|
WHERE
|
|
245
250
|
DATE(creation_time) >= CURRENT_DATE() - 1 AND
|
|
246
251
|
destination_table.dataset_id = '{dataset_id}' AND
|
|
@@ -511,6 +511,7 @@ class DbtSource(DbtServiceSource):
|
|
|
511
511
|
self.context.get().exposures = {}
|
|
512
512
|
self.context.get().dbt_tests = {}
|
|
513
513
|
self.context.get().run_results_generate_time = None
|
|
514
|
+
|
|
514
515
|
# Since we'll be processing multiple run_results for a single project
|
|
515
516
|
# we'll only consider the first run_results generated_at time
|
|
516
517
|
if (
|
|
@@ -520,6 +521,9 @@ class DbtSource(DbtServiceSource):
|
|
|
520
521
|
self.context.get().run_results_generate_time = (
|
|
521
522
|
dbt_objects.dbt_run_results[0].metadata.generated_at
|
|
522
523
|
)
|
|
524
|
+
dbt_project_name = getattr(
|
|
525
|
+
dbt_objects.dbt_manifest.metadata, "project_name", None
|
|
526
|
+
)
|
|
523
527
|
for key, manifest_node in manifest_entities.items():
|
|
524
528
|
try:
|
|
525
529
|
resource_type = getattr(
|
|
@@ -644,6 +648,7 @@ class DbtSource(DbtServiceSource):
|
|
|
644
648
|
catalog_node=catalog_node,
|
|
645
649
|
),
|
|
646
650
|
tags=dbt_table_tags_list or [],
|
|
651
|
+
dbtSourceProject=dbt_project_name,
|
|
647
652
|
),
|
|
648
653
|
)
|
|
649
654
|
yield Either(right=data_model_link)
|
|
@@ -406,7 +406,7 @@ class GlueSource(ExternalTableLineageMixin, DatabaseServiceSource):
|
|
|
406
406
|
for glue_col in glue_columns:
|
|
407
407
|
col_name = glue_col["Name"]
|
|
408
408
|
col_type = glue_col["Type"]
|
|
409
|
-
col_comment = glue_col.get("Comment"
|
|
409
|
+
col_comment = glue_col.get("Comment")
|
|
410
410
|
col_parameters = glue_col.get("Parameters", {})
|
|
411
411
|
|
|
412
412
|
# Check if this is a non-current Iceberg column
|
|
@@ -427,7 +427,7 @@ class GlueSource(ExternalTableLineageMixin, DatabaseServiceSource):
|
|
|
427
427
|
for glue_col in partition_keys:
|
|
428
428
|
col_name = glue_col["Name"]
|
|
429
429
|
col_type = glue_col["Type"]
|
|
430
|
-
col_comment = glue_col.get("Comment"
|
|
430
|
+
col_comment = glue_col.get("Comment")
|
|
431
431
|
col_parameters = glue_col.get("Parameters", {})
|
|
432
432
|
|
|
433
433
|
# Check if this is a non-current Iceberg column
|
|
@@ -48,8 +48,7 @@ from metadata.ingestion.connections.test_connections import test_connection_db_c
|
|
|
48
48
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
49
49
|
from metadata.ingestion.source.database.oracle.queries import (
|
|
50
50
|
CHECK_ACCESS_TO_ALL,
|
|
51
|
-
|
|
52
|
-
ORACLE_GET_STORED_PACKAGES,
|
|
51
|
+
TEST_ORACLE_GET_STORED_PACKAGES,
|
|
53
52
|
)
|
|
54
53
|
from metadata.utils.constants import THREE_MIN
|
|
55
54
|
from metadata.utils.logger import ingestion_logger
|
|
@@ -97,18 +96,9 @@ class OracleConnection(BaseConnection[OracleConnectionConfig, Engine]):
|
|
|
97
96
|
of a metadata workflow or during an Automation Workflow
|
|
98
97
|
"""
|
|
99
98
|
|
|
100
|
-
def test_oracle_package_access(engine):
|
|
101
|
-
try:
|
|
102
|
-
schema_name = engine.execute(ORACLE_GET_SCHEMA).scalar()
|
|
103
|
-
return ORACLE_GET_STORED_PACKAGES.format(schema=schema_name)
|
|
104
|
-
except Exception as e:
|
|
105
|
-
raise OraclePackageAccessError(
|
|
106
|
-
f"Failed to access Oracle stored packages: {e}"
|
|
107
|
-
)
|
|
108
|
-
|
|
109
99
|
test_conn_queries = {
|
|
110
100
|
"CheckAccess": CHECK_ACCESS_TO_ALL,
|
|
111
|
-
"PackageAccess":
|
|
101
|
+
"PackageAccess": TEST_ORACLE_GET_STORED_PACKAGES,
|
|
112
102
|
}
|
|
113
103
|
|
|
114
104
|
return test_connection_db_common(
|
|
@@ -225,9 +215,3 @@ class OracleConnection(BaseConnection[OracleConnectionConfig, Engine]):
|
|
|
225
215
|
return url
|
|
226
216
|
|
|
227
217
|
raise ValueError(f"Unknown connection type {connection.oracleConnectionType}")
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
class OraclePackageAccessError(Exception):
|
|
231
|
-
"""
|
|
232
|
-
Raised when unable to access Oracle stored packages
|
|
233
|
-
"""
|
|
@@ -95,12 +95,7 @@ WHERE
|
|
|
95
95
|
type = 'PROCEDURE' and owner = '{schema}'
|
|
96
96
|
"""
|
|
97
97
|
)
|
|
98
|
-
|
|
99
|
-
SELECT USERNAME AS SCHEMA_NAME
|
|
100
|
-
FROM ALL_USERS
|
|
101
|
-
WHERE ROWNUM = 1
|
|
102
|
-
ORDER BY USERNAME
|
|
103
|
-
"""
|
|
98
|
+
|
|
104
99
|
ORACLE_GET_STORED_PACKAGES = textwrap.dedent(
|
|
105
100
|
"""
|
|
106
101
|
SELECT
|
|
@@ -115,6 +110,30 @@ FROM
|
|
|
115
110
|
WHERE TYPE IN ('PACKAGE', 'PACKAGE BODY') AND owner = '{schema}'
|
|
116
111
|
"""
|
|
117
112
|
)
|
|
113
|
+
|
|
114
|
+
TEST_ORACLE_GET_STORED_PACKAGES = textwrap.dedent(
|
|
115
|
+
"""
|
|
116
|
+
SELECT
|
|
117
|
+
OWNER,
|
|
118
|
+
NAME,
|
|
119
|
+
LINE,
|
|
120
|
+
TEXT,
|
|
121
|
+
'StoredPackage' as procedure_type
|
|
122
|
+
FROM
|
|
123
|
+
DBA_SOURCE
|
|
124
|
+
WHERE
|
|
125
|
+
TYPE IN ('PACKAGE', 'PACKAGE BODY')
|
|
126
|
+
AND owner = (
|
|
127
|
+
SELECT
|
|
128
|
+
USERNAME
|
|
129
|
+
FROM
|
|
130
|
+
ALL_USERS
|
|
131
|
+
WHERE
|
|
132
|
+
ROWNUM = 1
|
|
133
|
+
)
|
|
134
|
+
"""
|
|
135
|
+
)
|
|
136
|
+
|
|
118
137
|
CHECK_ACCESS_TO_ALL = "SELECT table_name FROM DBA_TABLES where ROWNUM < 2"
|
|
119
138
|
ORACLE_GET_STORED_PROCEDURE_QUERIES = textwrap.dedent(
|
|
120
139
|
"""
|
|
@@ -168,6 +168,9 @@ class StoredProcedureLineageMixin(ABC):
|
|
|
168
168
|
|
|
169
169
|
# Yield the ProcedureAndQuery for filtered stored procedure
|
|
170
170
|
for query_by_procedure in queries:
|
|
171
|
+
if not query_by_procedure.procedure_name:
|
|
172
|
+
continue
|
|
173
|
+
|
|
171
174
|
procedure_name = query_by_procedure.procedure_name.lower()
|
|
172
175
|
queries_count_per_procedure[procedure_name] += 1
|
|
173
176
|
|
|
@@ -35,7 +35,10 @@ from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
|
35
35
|
from metadata.ingestion.source.connections import get_connection
|
|
36
36
|
from metadata.ingestion.source.database.column_type_parser import ColumnTypeParser
|
|
37
37
|
from metadata.ingestion.source.database.common_db_source import CommonDbSourceService
|
|
38
|
-
from metadata.ingestion.source.database.trino.queries import
|
|
38
|
+
from metadata.ingestion.source.database.trino.queries import (
|
|
39
|
+
TRINO_TABLE_COMMENTS,
|
|
40
|
+
TRINO_VIEW_DEFINITION,
|
|
41
|
+
)
|
|
39
42
|
from metadata.utils import fqn
|
|
40
43
|
from metadata.utils.filters import filter_by_database
|
|
41
44
|
from metadata.utils.logger import ingestion_logger
|
|
@@ -168,9 +171,43 @@ def get_table_comment( # pylint: disable=unused-argument
|
|
|
168
171
|
raise
|
|
169
172
|
|
|
170
173
|
|
|
174
|
+
def get_view_definition(
|
|
175
|
+
self, connection: Connection, view_name: str, schema: str = None, **kw
|
|
176
|
+
) -> Optional[str]:
|
|
177
|
+
"""
|
|
178
|
+
Get the view definition using SHOW CREATE VIEW for Trino
|
|
179
|
+
|
|
180
|
+
Default implementation from sqlalchemy uses view_definition column value
|
|
181
|
+
from "information_schema"."views" view, which does not return the full definition
|
|
182
|
+
of view. Hence, we should use SHOW CREATE VIEW statement to get full view definition.
|
|
183
|
+
"""
|
|
184
|
+
catalog_name = self._get_default_catalog_name( # pylint: disable=protected-access
|
|
185
|
+
connection
|
|
186
|
+
)
|
|
187
|
+
schema = schema or self._get_default_schema_name(
|
|
188
|
+
connection
|
|
189
|
+
) # pylint: disable=protected-access
|
|
190
|
+
if schema is None:
|
|
191
|
+
raise exc.NoSuchTableError("schema is required")
|
|
192
|
+
|
|
193
|
+
if catalog_name:
|
|
194
|
+
full_view_name = f"{catalog_name}.{schema}.{view_name}"
|
|
195
|
+
else:
|
|
196
|
+
full_view_name = f"{schema}.{view_name}"
|
|
197
|
+
|
|
198
|
+
try:
|
|
199
|
+
# Use SHOW CREATE VIEW to get the full DDL
|
|
200
|
+
query = TRINO_VIEW_DEFINITION.format(view_name=full_view_name)
|
|
201
|
+
res = connection.execute(sql.text(query))
|
|
202
|
+
return res.scalar()
|
|
203
|
+
except Exception:
|
|
204
|
+
logger.warning(f"Could not get view definition for view [{full_view_name}]")
|
|
205
|
+
|
|
206
|
+
|
|
171
207
|
TrinoDialect._get_columns = _get_columns # pylint: disable=protected-access
|
|
172
208
|
TrinoDialect.get_all_table_comments = get_all_table_comments
|
|
173
209
|
TrinoDialect.get_table_comment = get_table_comment
|
|
210
|
+
TrinoDialect.get_view_definition = get_view_definition
|
|
174
211
|
|
|
175
212
|
|
|
176
213
|
class TrinoSource(CommonDbSourceService):
|
|
@@ -226,9 +263,11 @@ class TrinoSource(CommonDbSourceService):
|
|
|
226
263
|
)
|
|
227
264
|
if filter_by_database(
|
|
228
265
|
self.source_config.databaseFilterPattern,
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
266
|
+
(
|
|
267
|
+
database_fqn
|
|
268
|
+
if self.source_config.useFqnForFiltering
|
|
269
|
+
else new_catalog
|
|
270
|
+
),
|
|
232
271
|
):
|
|
233
272
|
self.status.filter(database_fqn, "Database Filtered Out")
|
|
234
273
|
continue
|
|
@@ -274,6 +274,7 @@ class StorageServiceSource(TopologyRunnerMixin, Source, ABC):
|
|
|
274
274
|
isPartitioned=entry.isPartitioned,
|
|
275
275
|
partitionColumns=entry.partitionColumns,
|
|
276
276
|
separator=entry.separator,
|
|
277
|
+
depth=entry.depth,
|
|
277
278
|
)
|
|
278
279
|
for entry in manifest.entries
|
|
279
280
|
if entry.containerName == container_name
|
|
@@ -13,11 +13,13 @@
|
|
|
13
13
|
Interfaces with database for all database engine
|
|
14
14
|
supporting sqlalchemy abstraction layer
|
|
15
15
|
"""
|
|
16
|
+
from copy import deepcopy
|
|
16
17
|
from typing import List, Type, cast
|
|
17
18
|
|
|
18
19
|
from sqlalchemy import Column, inspect
|
|
19
20
|
|
|
20
21
|
from metadata.generated.schema.entity.data.table import SystemProfile
|
|
22
|
+
from metadata.generated.schema.security.credentials.gcpValues import SingleProjectId
|
|
21
23
|
from metadata.profiler.interface.sqlalchemy.profiler_interface import (
|
|
22
24
|
SQAProfilerInterface,
|
|
23
25
|
)
|
|
@@ -27,6 +29,7 @@ from metadata.profiler.metrics.system.bigquery.system import (
|
|
|
27
29
|
from metadata.profiler.metrics.system.system import System
|
|
28
30
|
from metadata.profiler.processor.runner import QueryRunner
|
|
29
31
|
from metadata.utils.logger import profiler_interface_registry_logger
|
|
32
|
+
from metadata.utils.ssl_manager import get_ssl_connection
|
|
30
33
|
|
|
31
34
|
logger = profiler_interface_registry_logger()
|
|
32
35
|
|
|
@@ -34,6 +37,19 @@ logger = profiler_interface_registry_logger()
|
|
|
34
37
|
class BigQueryProfilerInterface(SQAProfilerInterface):
|
|
35
38
|
"""BigQuery profiler interface"""
|
|
36
39
|
|
|
40
|
+
def create_session(self):
|
|
41
|
+
connection_config = deepcopy(self.service_connection_config)
|
|
42
|
+
# Create a modified connection for BigQuery with the correct project ID
|
|
43
|
+
if (
|
|
44
|
+
hasattr(connection_config.credentials.gcpConfig, "projectId")
|
|
45
|
+
and self.table_entity.database
|
|
46
|
+
):
|
|
47
|
+
connection_config.credentials.gcpConfig.projectId = SingleProjectId(
|
|
48
|
+
root=self.table_entity.database.name
|
|
49
|
+
)
|
|
50
|
+
self.connection = get_ssl_connection(connection_config)
|
|
51
|
+
return super().create_session()
|
|
52
|
+
|
|
37
53
|
def _compute_system_metrics(
|
|
38
54
|
self,
|
|
39
55
|
metrics: Type[System],
|
|
@@ -49,6 +65,7 @@ class BigQueryProfilerInterface(SQAProfilerInterface):
|
|
|
49
65
|
session=self.session,
|
|
50
66
|
runner=runner,
|
|
51
67
|
usage_location=self.service_connection_config.usageLocation,
|
|
68
|
+
billing_project_id=self.service_connection_config.billingProjectId,
|
|
52
69
|
)
|
|
53
70
|
return instance.get_system_metrics()
|
|
54
71
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""BigQuery system metric source"""
|
|
2
2
|
|
|
3
|
-
from typing import List
|
|
3
|
+
from typing import List, Optional
|
|
4
4
|
|
|
5
5
|
from pydantic import TypeAdapter
|
|
6
6
|
from sqlalchemy.orm import Session
|
|
@@ -30,12 +30,14 @@ class BigQuerySystemMetricsComputer(SystemMetricsComputer, CacheProvider):
|
|
|
30
30
|
session: Session,
|
|
31
31
|
runner: QueryRunner,
|
|
32
32
|
usage_location: str,
|
|
33
|
+
billing_project_id: Optional[str] = None,
|
|
33
34
|
):
|
|
34
35
|
self.session = session
|
|
35
36
|
self.table = runner.table_name
|
|
36
37
|
self.project_id = runner.session.get_bind().url.host
|
|
37
38
|
self.dataset_id = runner.schema_name
|
|
38
39
|
self.usage_location = usage_location
|
|
40
|
+
self.billing_project_id = billing_project_id or self.project_id
|
|
39
41
|
|
|
40
42
|
def get_deletes(self) -> List[SystemProfile]:
|
|
41
43
|
return self.get_system_profile(
|
|
@@ -116,6 +118,7 @@ class BigQuerySystemMetricsComputer(SystemMetricsComputer, CacheProvider):
|
|
|
116
118
|
usage_location=usage_location,
|
|
117
119
|
project_id=project_id,
|
|
118
120
|
dataset_id=dataset_id,
|
|
121
|
+
billing_project_id=self.billing_project_id,
|
|
119
122
|
)
|
|
120
123
|
|
|
121
124
|
@staticmethod
|
|
@@ -304,8 +304,7 @@ class BigQueryTableMetricComputer(BaseTableMetricComputer):
|
|
|
304
304
|
]
|
|
305
305
|
|
|
306
306
|
where_clause = [
|
|
307
|
-
Column("project_id")
|
|
308
|
-
== self.conn_config.credentials.gcpConfig.projectId.root,
|
|
307
|
+
Column("project_id") == self._entity.database.name,
|
|
309
308
|
Column("table_schema") == self.schema_name,
|
|
310
309
|
Column("table_name") == self.table_name,
|
|
311
310
|
]
|
|
@@ -338,17 +337,14 @@ class BigQueryTableMetricComputer(BaseTableMetricComputer):
|
|
|
338
337
|
*self._get_col_names_and_count(),
|
|
339
338
|
]
|
|
340
339
|
where_clause = [
|
|
341
|
-
Column("project_id")
|
|
342
|
-
== self.conn_config.credentials.gcpConfig.projectId.root,
|
|
340
|
+
Column("project_id") == self._entity.database.name,
|
|
343
341
|
Column("dataset_id") == self.schema_name,
|
|
344
342
|
Column("table_id") == self.table_name,
|
|
345
343
|
]
|
|
346
344
|
schema = (
|
|
347
|
-
self.schema_name.startswith(
|
|
348
|
-
f"{self.conn_config.credentials.gcpConfig.projectId.root}."
|
|
349
|
-
)
|
|
345
|
+
self.schema_name.startswith(f"{self._entity.database.name}.")
|
|
350
346
|
and self.schema_name
|
|
351
|
-
or f"{self.
|
|
347
|
+
or f"{self._entity.database.name}.{self.schema_name}"
|
|
352
348
|
)
|
|
353
349
|
query = self._build_query(
|
|
354
350
|
columns,
|