What Databricks is, why connecting it to Prizm unlocks data intelligence, and what capabilities Prizm supports for Unity Catalog workspaces.
Databricks is a unified analytics platform built around Delta Lake and the Lakehouse architecture. Once connected, Prizm continuously monitors your Databricks Unity Catalog tables for quality anomalies, tracks schema and volume changes, builds column-level lineage from system tables, and surfaces pipeline performance and cost insights — without ever accessing or copying raw customer data.
Connecting Databricks gives Prizm access to three layers of intelligence:Catalog & Context Prizm discovers every catalog, schema, table, view, and column in your Unity Catalog workspace and indexes them in the Prizm catalog. Tags defined in Databricks are imported automatically. Descriptions, owners, and classifications can be managed in Prizm.Data Quality & Profiling Prizm runs profile scans on your Delta tables to compute null rates, cardinality, min/max, distribution, and completeness scores at the column level. Quality scores are tracked over time so you can see trends and catch degradation before it reaches consumers.Observability Prizm monitors every in-scope table for freshness (latest Delta commit timestamp), volume (row count changes), and schema drift (added, removed, or renamed columns). Machine-learning anomaly detection sets adaptive thresholds so alerts fire on real deviations — not noise.
Every metric in Prizm belongs to a context — the stakeholder lens that defines who the metric serves and why it matters. All seven contexts are supported for Databricks.
Operational
Performance
Structural
Business
Reconciliation
Semantics
Pipeline
Operational metrics monitor the day-to-day health of data assets — whether data is arriving on time, in the expected volume, and with the correct structure. They run at the Asset level and are the primary driver of alerting and anomaly detection in Prizm.
All Operational metrics feed directly into the Alerts dashboard. They are the most actively monitored metrics in a typical Prizm deployment, with Execution Status and Freshness generating the highest alert volumes in production.
Metric
Subcategory
Dimension
Level
Monitor
Description
Row
Volume
Completeness
Asset
Yes
Total number of rows at the time of last scan. Tracks volume over time and triggers alerts on drops or spikes.
Volume
Volume
Completeness
Asset
Yes
Higher-level measure combining row count and data size signals. Used to detect significant changes in the amount of data arriving.
Data size
Volume
Completeness
Asset
Yes
Physical size of the asset in bytes. Complements row count — a large size increase with no row increase may indicate wide or bloated records.
Freshness
Freshness
Availability
Asset
Yes
Time elapsed since the asset was last updated. Fires an alert when data has not been refreshed within the expected window.
Last updated
Freshness
Timeliness
Asset
Yes
Timestamp of the most recent data load or write. Verifies pipelines are running on schedule and consumers are not working with stale records.
Column
Schema
Validity
Asset
Yes
Current number of columns. Detects column additions or removals indicating an unannounced schema change at the source.
Schema
Schema
Validity
Asset
Yes
Snapshot of the full column schema — names, types, and order. Alerts when any column name or type changes, which can silently break downstream transformations.
Schema name
Schema
Validity
Asset
Yes
Name of the schema the asset belongs to. Tracks unexpected schema renames that would break hard-coded references.
Duplicates
Duplicate
Uniqueness
—
Yes
Count of duplicate rows based on a defined key or all columns. Unexpected duplicates often indicate a pipeline re-run without deduplication or broken merge logic.
Operational metrics do not contribute to trust scoring (Score: No). They are observability signals — designed to trigger alerts, not to roll up into a quality score.
Performance metrics measure how efficiently the data platform itself is running — query execution time, compute utilization, job duration, and credit consumption. Unlike other contexts, they operate at the Source and System level (Warehouse, Database, Account) rather than the individual asset level.
Metric
Level
Profile Type
Description
Total queries per day
Warehouse, Database
Performance
Total queries executed per day. Tracks usage trends and surfaces unexpected spikes from runaway jobs or inefficient query patterns.
Query success rate
Warehouse, Database
Performance
Percentage of queries completing without error. A falling rate signals pipeline instability, permission issues, or timeouts.
Execution time
Warehouse, Database
Performance
Average query execution time. Rising times indicate compute pressure, missing indexes, or poorly optimised SQL.
Job duration
Warehouse, Database
Performance
Total elapsed time for a data job or pipeline run. Monitors whether batch jobs complete within their SLA windows.
Test execution time
Warehouse, Database
Performance
Time to run data quality test suites. Tracks whether test runtime grows as asset counts increase.
Avg blocked
Warehouse, Database
Performance
Average queries in a blocked state — waiting on locks or resource conflicts. High counts indicate concurrency issues or long-running transactions.
Avg queue load
Warehouse, Database
Performance
Average queries waiting in the execution queue. A persistently high value means the warehouse is under-provisioned for current workload.
Avg running
Warehouse, Database
Performance
Average queries actively running at any given time. Combined with queue load, gives a full picture of warehouse throughput.
Database storage
Database
Performance
Total storage consumed by the database including tables, indexes, and staging data. Tracks growth trends and flags databases approaching capacity thresholds.
Total credits per day
Warehouse, Database
Cost
Total compute credits consumed per day. Primary metric for cloud cost management — used to set budgets and trigger cost alerts.
Credits used
Warehouse, Database
Cost
Cumulative credits over a defined period. Used for chargeback reporting and team-level cost allocation.
Performance metrics do not contribute to trust scoring (Score: No). They are platform observability signals for infrastructure and platform teams.
Structural metrics profile the internal shape of data at the column level — how values are distributed, how often patterns repeat, and what the numbers say. This is the largest context with 33K+ metrics. All structural metrics are auto-generated when an asset is profiled — no configuration required.Distribution — How values are composed and spread:
Metric
Subcategory
Dimension
Profile Type
Description
Null count
Completeness
Completeness
Essential
Total null values. High null count signals missing data that may break downstream logic or skew analysis.
Empty
Completeness
Completeness
Essential
Count of empty strings (""). Distinct from null — present but containing no meaningful content.
Non-empty
Completeness
Completeness
Advanced
Count of values that are neither null nor empty. Baseline for how much of the column actually has content.
Space
Completeness
Completeness
Essential
Values containing only whitespace. Appear non-empty but carry no data — a common data entry artefact.
Zero value
Numeric
Completeness
Essential
Numeric values equal to zero. Flags columns where zero may be a placeholder for missing data.
Distinct
Uniqueness
Uniqueness
Essential
Count of unique values. Low distinct counts on a high-cardinality column can indicate data collapse.
Repeating
Uniqueness
Uniqueness
Advanced
Count of values appearing more than once. High repeating counts on columns expected to be unique (e.g. IDs) signal duplicates.
Leading space
Space
Validity
Advanced
Values with spaces at the start. Can cause join failures and mismatches in downstream queries.
Trailing space
Space
Validity
Advanced
Values with spaces at the end. A frequent cause of silent quality issues in string comparisons.
Values with spaces at either end — combined view of leading and trailing space issues.
Whitespace
Space
Validity
Advanced
Values consisting entirely of whitespace characters (spaces, tabs, newlines).
Character
Character
Validity
Advanced
Distribution of character types — letters, digits, special characters, and mixed.
Alpha numeric
Character
Validity
Advanced
Values containing only alphabetic and numeric characters. Validates ID and code columns.
Digit
Character
Validity
Advanced
Values composed entirely of numeric digits. Useful for columns stored as strings (e.g. zip codes, phone numbers).
Special character
Character
Validity
Advanced
Values containing at least one special character (e.g. @, #, !).
Alphabet
Character
Validity
Advanced
Values containing only alphabetic characters — no digits or special characters.
Positive
Numeric
Validity
Advanced
Count of numeric values greater than zero.
Negative
Numeric
Validity
Advanced
Count of numeric values less than zero. Unexpected negatives in columns like age or price typically indicate bad data.
Frequency — How often values, lengths, and ranges repeat:
Metric
Subcategory
Dimension
Profile Type
Description
Enum
Value
Validity
Advanced
Distinct values and their frequencies — a value histogram. Reveals category distribution and flags values outside an expected allowed list.
Min value
Value
Validity
Essential
Smallest value in the column. Establishes the lower bound and flags records below expected thresholds.
Max value
Value
Validity
Essential
Largest value in the column. Detects outliers or values exceeding business-defined limits.
Value range
Range
Validity
Advanced
Spread between minimum and maximum values. Sudden changes signal data drift or pipeline contamination.
Min length
Length
Validity
Essential
Shortest string length found. Catches truncated values — e.g. a phone number column where some values are unexpectedly short.
Max length
Length
Validity
Essential
Longest string length found. Detects values exceeding expected character limits that can cause issues in downstream systems.
Length
Length
Validity
Advanced
Full distribution of string lengths. Reveals whether values cluster around a consistent length or vary widely.
Length range
Range
Validity
Advanced
Spread between minimum and maximum string lengths. A wide range on a uniform column (e.g. country codes) signals a format problem.
Pattern — Structural format templates:
Metric
Subcategory
Dimension
Profile Type
Description
Short pattern
Pattern
Validity
Advanced
Condensed format — collapses consecutive identical character types into a single token (e.g. "John" → A). Useful for spotting high-level format anomalies quickly.
Long pattern
Pattern
Validity
Advanced
Character-by-character format — preserves full length and composition (e.g. "John" → AAAA). Reveals length drift and mixed-format issues.
Regular expressions
Pattern
Validity
Essential
User-defined regex patterns to validate that column values conform to a known format — e.g. email addresses, phone numbers, or custom ID formats.
Use Short pattern for a quick high-level view of format variety in a column, and Long pattern when you need to detect subtle length or composition changes — for example, a country code column that sometimes contains 3 characters instead of 2.
Statistics — Numeric summaries:
Metric
Subcategory
Dimension
Profile Type
Description
Mean
Descriptive
Accuracy
Advanced
Arithmetic average of all non-null values. A shift in the mean is one of the earliest signals of data drift or a change in the upstream source.
Median
Descriptive
Accuracy
Advanced
Middle value when sorted. Less sensitive to outliers than the mean — useful for skewed distributions like revenue or transaction amounts.
Mode
Descriptive
Accuracy
Advanced
Most frequently occurring value. A sudden change can indicate a default value being injected or a new dominant category appearing.
Standard deviation
Descriptive
Accuracy
Advanced
Spread of values around the mean. A rising stddev indicates increasing variability — often a sign of data quality degradation.
Sum
Descriptive
Accuracy
Advanced
Total of all non-null numeric values. Useful for financial columns where totals should remain consistent across pipeline stages.
Q1
Quantile
Accuracy
Advanced
25th percentile — 25% of values fall below this point. Used with Q3 to define the interquartile range.
Q3
Quantile
Accuracy
Advanced
75th percentile — 75% of values fall below this point. Together with Q1 defines the middle 50% of the data distribution.
Range
Shape
Accuracy
Advanced
Difference between max and minimum values. Quick measure of the total spread of the data in a column.
Skewness
Shape
Accuracy
Advanced
Asymmetry of the distribution. Positive skew = long right tail; negative skew = long left tail. Useful for detecting non-normal distributions.
Kurtosis
Shape
Accuracy
Advanced
Tail weight of the distribution. High kurtosis indicates more extreme outliers than a normal distribution.
Variance
Shape
Accuracy
Advanced
Average of squared differences from the mean. Used in statistical tests and anomaly detection models.
Margin of error
Shape
Accuracy
Advanced
Uncertainty estimate in the sample statistics. Indicates reliability when profiling on a sample rather than the full dataset.
Business metrics are user-defined measurements aligned to domain rules, KPIs, and data contracts. Unlike structural and operational metrics which are auto-generated, business metrics are created by analysts, engineers, and domain SMEs to capture logic the platform cannot infer automatically. This is the second-largest context with 8.8K+ metrics.
Type
Description
Custom
User-defined metric applied to a specific asset using filters, expressions, or threshold rules. Covers the majority of domain-specific quality checks — e.g. “percentage of orders with a valid product ID” or “revenue column must not be negative.”
Conditional
Metric applying different logic or thresholds depending on another column’s value — e.g. if region = 'US', check for a 10-digit phone format; otherwise apply a different rule. Useful for mixed-population assets.
Query
Metric defined by a SQL query returning a scalar value. Enables joins, aggregations, and CTEs — ideal for rules requiring data from multiple sources.
Standalone
Metric not bound to a specific asset. Used for org-wide KPIs, cross-domain aggregations, or summary metrics drawing from multiple datasets.
Behavioral
Metric evaluating patterns over time rather than a single point. Detects trend changes, seasonal deviations, or gradual drift — e.g. daily sales volume trending 20% below its 30-day moving average.
Custom, Conditional, and Standalone business metrics do contribute to trust scoring (Score: Yes). Behavioral metrics do not.
When to use business metrics:
Scenario
Recommended type
Example
Domain rule the platform cannot infer
Custom
”The discount_pct column must never exceed 100”
Same column, different valid formats by segment
Conditional
”If country = 'US', zip_code must be 5 digits; otherwise 6–8 characters”
Rule spans multiple tables or requires a JOIN
Query
”Count of orders with no matching customer record in the CRM table”
KPI that rolls up across many assets
Standalone
”% of customer records with a valid email across all regional tables”
Catch gradual drift by dimension or segment
Behavioral
”Alert if daily transaction volume for Product A drops >15% below the 30-day rolling average”
Auto profiling scores don’t reflect real business impact
Custom
”Flag any claim where claim_status = 'closed' but settlement_amount is null”
Enforce a data contract with a downstream consumer
Custom or Query
”Revenue in the mart must match the source system to within 0.1%“
Column passes structural checks but violates a business constraint
Custom
”age is non-null and numeric, but values below 18 are not valid for this product”
Reconciliation metrics compare data across sources, snapshots, or reference tables to verify consistency and correctness. The smallest context by metric count, but critical for cross-system data contracts, ETL validation, and regulatory compliance. Reconciliation metrics support scheduling, alerting, and manual run triggers.
Exact metric counts vary by tenant and change over time — check the live count on your Metric page rather than a number documented here.
Type
Description
Comparison
Compares a column or aggregate value between two registered assets — e.g. the row count in a source table versus the same table after an ETL load, or a revenue total in the warehouse versus the source system. Returns a match score and flags discrepancies exceeding a defined tolerance. Typical use cases: source vs target row count match, delta scoring, cross-system segment comparison.
Lookup
Validates that every value in a column exists in a reference dataset or allowed set. Used for referential integrity — e.g. every product_id in a fact table must exist in the product dimension. Typical use cases: FK validation, reference table match, allowed-value conformity checks.
When to use reconciliation:
Two sources should contain the same data — e.g. a data warehouse and an operational database after an overnight sync.
Before and after a load — verifying row counts and key values match between source and destination.
Reference table validation — ensuring foreign key values in a fact table exist in the corresponding dimension.
Regulatory reporting — finance and compliance use cases where exact value matching is required.
ETL pipeline validation — confirming upstream row counts are preserved through each transformation step.
Comparison metrics require both source and target assets to be registered and accessible in Prizm. If a source asset is unreachable, the metric shows Score: NA and raises an availability alert rather than a comparison result.
Semantic metrics are derived at a logical or business grouping level — domain, product, application, tag, or connection — rather than at the individual asset level. They aggregate quality signals across ownership boundaries to enable domain- and product-level KPIs and SLOs.
Grouping
Example Metric
Description
Domain
DQ score for Customer360 domain
Weighted quality score rolled up across all assets assigned to a domain
Product
Data product health score
Aggregate quality and freshness across all assets in a defined data product
Application
App-level SLO compliance
% of assets in an application meeting their quality and freshness SLOs
Tag
PII tag coverage
% of assets with PII columns that have sensitivity tags applied and approved
Connection
Source reliability score
Aggregate quality score across all assets from a given Databricks connection
Semantic metrics align Prizm quality signals with your organisation’s ownership model — making it possible for domain owners, product managers, and data stewards to track the health of their data without navigating individual asset pages.
Semantic metrics are the right lens for SLO reporting and executive dashboards — they answer “how healthy is the Customer360 domain?” rather than “how healthy is this one table?”
Pipeline metrics apply specifically to Databricks Job and Pipeline objects — Delta Live Tables, job runs, and orchestrated pipeline executions. They track operational health at the pipeline level rather than the individual asset level, and are the primary signals for pipeline SLA monitoring and incident detection.
Metric
Description
Execution Status
Whether the most recent pipeline run succeeded, failed, or was cancelled. The primary signal for pipeline health alerting — any non-success state triggers an immediate alert.
Freshness
Time elapsed since the last successful pipeline completion. Fires when a pipeline has not completed a successful run within its expected window, signalling a stalled or skipped execution.
Rows Affected
Number of rows written, updated, or deleted by the pipeline run. Sudden drops indicate partial loads or upstream data gaps; spikes may signal duplicate processing.
Execution Time
Total elapsed wall-clock time for the pipeline run from start to finish. Tracks SLA compliance and detects regressions — a rising trend often precedes outright failures.
Failure Rate
Percentage of pipeline runs that have failed over a rolling window. A rising failure rate surfaces flaky pipelines before they cause persistent data outages.
Dropped Records
Count of records silently discarded during pipeline execution — typically due to schema mismatches, filter conditions, or quarantine rules. Unexpected spikes indicate upstream format changes or corrupted input data.
Failed Records
Count of records that failed validation or processing rules and were not written to the target. Distinct from dropped records — these are records the pipeline attempted to process but could not.
Platform Outage
Indicates whether a pipeline failure is attributable to a Databricks platform-level incident rather than a data or logic error. Prizm correlates run failures with Databricks status signals to suppress false-positive alerts during outage windows.
Pipeline metrics operate at the Job / Pipeline object level. They are surfaced on the Pipeline asset page in Prizm and feed into the Pipeline observability dashboard. Alerting thresholds for Execution Status and Freshness are configured per pipeline.
The Databricks connector targets Unity Catalog workspaces on AWS, Azure, and GCP. Hive Metastore (legacy) workspaces without Unity Catalog enabled are not supported.
Connect Databricks to Prizm — prerequisites, authentication, and configuration.
What We Collect
Full field-level breakdown of every metadata object Prizm extracts from Databricks.
FAQ
Common questions about the Databricks connector.
Snowflake Connector
Connect your Snowflake data warehouse.
Glossary
Definitions for key terms used across Prizm.
Was this page helpful?
⌘I
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"DQLabs PRIZM","description":"Industry's first AI Native platform where Data Observability, Data Quality, and Context work as one system—turning trust from a manual, reactive process into autonomous operations governed by the enterprise.","colors":{"primary":"#e40404","light":"#f9cdcd","dark":"#747474"},"logo":{"light":"https://media.brand.dev/332adc35-5bc4-4d2b-bf78-256aa4a5e414.svg","dark":"https://media.brand.dev/332adc35-5bc4-4d2b-bf78-256aa4a5e414.svg"},"favicon":"https://media.brand.dev/9afdd2b1-c5b5-4aba-87dd-63e926be4e0e.jpg","navbar":{"primary":{"type":"github","href":"https://github.com/DQLabs-Inc/prizm-ui"}},"seo":{"metatags":{"robots":"index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1","canonical":"https://docs.dqlabs.ai"},"organization":{"name":"DQLabs Inc","logo":"https://media.brand.dev/332adc35-5bc4-4d2b-bf78-256aa4a5e414.svg"}},"integrations":{"ga4":{"measurementId":"G-9XW6S04GGD"}},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"dqlabs","hasAudioNarration":false,"actualSubdomain":"dqlabs","customDomains":["docs.dqlabs.ai"],"gitSource":{"type":"github","owner":"dqlabs-inc","repo":"prizm-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6af49520c5d18096e67ffded","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"Documentation","count":217},{"language":"default","tag":"Architecture","count":88},{"language":"default","tag":"Data Sources","count":54},{"language":"default","tag":"Metric","count":44},{"language":"default","tag":"Integrations","count":40},{"language":"default","tag":"Metric Types","count":40},{"language":"default","tag":"API Reference","count":34},{"language":"default","tag":"Business","count":12},{"language":"default","tag":"Collaboration","count":12},{"language":"default","tag":"Security \u0026 Access Control","count":11}],"searchSettings":{"maxResults":9}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"sources/databricks/overview","slug":"/sources/databricks/overview","pageMetadata":{"title":"Databricks Overview","icon":"fire","description":"What Databricks is, why connecting it to Prizm unlocks data intelligence, and what capabilities Prizm supports for Unity Catalog workspaces.","href":"/sources/databricks/overview"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"What Databricks is, why connecting it to Prizm unlocks data intelligence, and what capabilities Prizm supports for Unity Catalog workspaces.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Card,CardGroup,Heading,Info,Note,Tab,Table,Tabs,Tip,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(`script`,{type:`application/ld+json`,children:`{\n \"@context\": \"https://schema.org\",\n \"@type\": \"TechArticle\",\n \"headline\": \"Databricks Overview\",\n \"description\": \"What Databricks is, why connecting it to Prizm unlocks data intelligence, and what capabilities Prizm supports for Unity Catalog workspaces.\",\n \"url\": \"https://docs.dqlabs.ai/sources/databricks/overview\",\n \"publisher\": {\n \"@type\": \"Organization\",\n \"name\": \"DQLabs Inc\",\n \"logo\": \"https://media.brand.dev/332adc35-5bc4-4d2b-bf78-256aa4a5e414.svg\"\n }\n }`}),`\n`,_jsx(_components.p,{children:`Databricks is a unified analytics platform built around Delta Lake and the Lakehouse architecture. Once connected, Prizm continuously monitors your Databricks Unity Catalog tables for quality anomalies, tracks schema and volume changes, builds column-level lineage from system tables, and surfaces pipeline performance and cost insights — without ever accessing or copying raw customer data.`}),`\n`,_jsx(Heading,{level:`2`,id:`why-connect-databricks-to-prizm`,children:`Why Connect Databricks to Prizm?`}),`\n`,_jsx(_components.p,{children:`Connecting Databricks gives Prizm access to three layers of intelligence:`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Catalog \u0026 Context`}),` Prizm discovers every catalog, schema, table, view, and column in your Unity Catalog workspace and indexes them in the Prizm catalog. Tags defined in Databricks are imported automatically. Descriptions, owners, and classifications can be managed in Prizm.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Data Quality \u0026 Profiling`}),` Prizm runs profile scans on your Delta tables to compute null rates, cardinality, min/max, distribution, and completeness scores at the column level. Quality scores are tracked over time so you can see trends and catch degradation before it reaches consumers.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Observability`}),` Prizm monitors every in-scope table for freshness (latest Delta commit timestamp), volume (row count changes), and schema drift (added, removed, or renamed columns). Machine-learning anomaly detection sets adaptive thresholds so alerts fire on real deviations — not noise.`]}),`\n`,_jsx(Heading,{level:`2`,id:`metric-support`,children:`Metric Support`}),`\n`,_jsxs(_components.p,{children:[`Every metric in Prizm belongs to a `,_jsx(_components.strong,{children:`context`}),` — the stakeholder lens that defines who the metric serves and why it matters. All seven contexts are supported for Databricks.`]}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Operational`,id:`operational`,children:[_jsxs(_components.p,{children:[`Operational metrics monitor the `,_jsx(_components.strong,{children:`day-to-day health of data assets`}),` — whether data is arriving on time, in the expected volume, and with the correct structure. They run at the `,_jsx(_components.strong,{children:`Asset`}),` level and are the primary driver of alerting and anomaly detection in Prizm.`]}),_jsx(Note,{children:_jsx(_components.p,{children:`All Operational metrics feed directly into the Alerts dashboard. They are the most actively monitored metrics in a typical Prizm deployment, with Execution Status and Freshness generating the highest alert volumes in production.`})}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Metric`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Subcategory`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Dimension`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Level`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Monitor`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Row`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Volume`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Completeness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Asset`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Yes`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Total number of rows at the time of last scan. Tracks volume over time and triggers alerts on drops or spikes.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Volume`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Volume`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Completeness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Asset`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Yes`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Higher-level measure combining row count and data size signals. Used to detect significant changes in the amount of data arriving.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Data size`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Volume`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Completeness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Asset`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Yes`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Physical size of the asset in bytes. Complements row count — a large size increase with no row increase may indicate wide or bloated records.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Freshness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Freshness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Availability`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Asset`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Yes`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Time elapsed since the asset was last updated. Fires an alert when data has not been refreshed within the expected window.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Last updated`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Freshness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Timeliness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Asset`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Yes`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Timestamp of the most recent data load or write. Verifies pipelines are running on schedule and consumers are not working with stale records.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Column`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Schema`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Asset`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Yes`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Current number of columns. Detects column additions or removals indicating an unannounced schema change at the source.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Schema`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Schema`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Asset`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Yes`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Snapshot of the full column schema — names, types, and order. Alerts when any column name or type changes, which can silently break downstream transformations.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Schema name`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Schema`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Asset`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Yes`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Name of the schema the asset belongs to. Tracks unexpected schema renames that would break hard-coded references.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Duplicates`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Duplicate`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Uniqueness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`—`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Yes`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Count of duplicate rows based on a defined key or all columns. Unexpected duplicates often indicate a pipeline re-run without deduplication or broken merge logic.`})]})]})]}),_jsx(Info,{children:_jsxs(_components.p,{children:[`Operational metrics do `,_jsx(_components.strong,{children:`not`}),` contribute to trust scoring (`,_jsx(_components.code,{children:`Score: No`}),`). They are observability signals — designed to trigger alerts, not to roll up into a quality score.`]})})]}),_jsxs(Tab,{title:`Performance`,id:`performance`,children:[_jsxs(_components.p,{children:[`Performance metrics measure `,_jsx(_components.strong,{children:`how efficiently the data platform itself is running`}),` — query execution time, compute utilization, job duration, and credit consumption. Unlike other contexts, they operate at the `,_jsx(_components.strong,{children:`Source and System level`}),` (Warehouse, Database, Account) rather than the individual asset level.`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Metric`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Level`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Profile Type`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Total queries per day`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Warehouse, Database`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Performance`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Total queries executed per day. Tracks usage trends and surfaces unexpected spikes from runaway jobs or inefficient query patterns.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Query success rate`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Warehouse, Database`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Performance`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Percentage of queries completing without error. A falling rate signals pipeline instability, permission issues, or timeouts.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Execution time`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Warehouse, Database`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Performance`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Average query execution time. Rising times indicate compute pressure, missing indexes, or poorly optimised SQL.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Job duration`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Warehouse, Database`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Performance`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Total elapsed time for a data job or pipeline run. Monitors whether batch jobs complete within their SLA windows.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Test execution time`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Warehouse, Database`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Performance`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Time to run data quality test suites. Tracks whether test runtime grows as asset counts increase.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Avg blocked`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Warehouse, Database`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Performance`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Average queries in a blocked state — waiting on locks or resource conflicts. High counts indicate concurrency issues or long-running transactions.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Avg queue load`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Warehouse, Database`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Performance`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Average queries waiting in the execution queue. A persistently high value means the warehouse is under-provisioned for current workload.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Avg running`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Warehouse, Database`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Performance`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Average queries actively running at any given time. Combined with queue load, gives a full picture of warehouse throughput.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Database storage`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Database`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Performance`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Total storage consumed by the database including tables, indexes, and staging data. Tracks growth trends and flags databases approaching capacity thresholds.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Total credits per day`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Warehouse, Database`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Cost`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Total compute credits consumed per day. Primary metric for cloud cost management — used to set budgets and trigger cost alerts.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Credits used`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Warehouse, Database`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Cost`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Cumulative credits over a defined period. Used for chargeback reporting and team-level cost allocation.`})]})]})]}),_jsx(Info,{children:_jsxs(_components.p,{children:[`Performance metrics do `,_jsx(_components.strong,{children:`not`}),` contribute to trust scoring (`,_jsx(_components.code,{children:`Score: No`}),`). They are platform observability signals for infrastructure and platform teams.`]})})]}),_jsxs(Tab,{title:`Structural`,id:`structural`,children:[_jsxs(_components.p,{children:[`Structural metrics profile the `,_jsx(_components.strong,{children:`internal shape of data at the column level`}),` — how values are distributed, how often patterns repeat, and what the numbers say. This is the largest context with 33K+ metrics. All structural metrics are `,_jsx(_components.strong,{children:`auto-generated`}),` when an asset is profiled — no configuration required.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Distribution`}),` — How values are composed and spread:`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Metric`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Subcategory`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Dimension`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Profile Type`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Null count`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Completeness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Completeness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Essential`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Total null values. High null count signals missing data that may break downstream logic or skew analysis.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Empty`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Completeness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Completeness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Essential`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Count of empty strings (`,_jsx(_components.code,{children:`\"\"`}),`). Distinct from null — present but containing no meaningful content.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Non-empty`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Completeness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Completeness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Count of values that are neither null nor empty. Baseline for how much of the column actually has content.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Space`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Completeness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Completeness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Essential`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Values containing only whitespace. Appear non-empty but carry no data — a common data entry artefact.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Zero value`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Numeric`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Completeness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Essential`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Numeric values equal to zero. Flags columns where zero may be a placeholder for missing data.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Distinct`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Uniqueness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Uniqueness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Essential`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Count of unique values. Low distinct counts on a high-cardinality column can indicate data collapse.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Repeating`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Uniqueness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Uniqueness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Count of values appearing more than once. High repeating counts on columns expected to be unique (e.g. IDs) signal duplicates.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Leading space`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Space`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Values with spaces at the start. Can cause join failures and mismatches in downstream queries.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Trailing space`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Space`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Values with spaces at the end. A frequent cause of silent quality issues in string comparisons.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Inner space`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Space`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Values containing consecutive internal spaces (e.g. `,_jsx(_components.code,{children:`\"John Doe\"`}),`). Indicates formatting artefacts.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Outer space`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Space`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Values with spaces at either end — combined view of leading and trailing space issues.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Whitespace`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Space`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Values consisting entirely of whitespace characters (spaces, tabs, newlines).`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Character`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Character`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Distribution of character types — letters, digits, special characters, and mixed.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Alpha numeric`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Character`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Values containing only alphabetic and numeric characters. Validates ID and code columns.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Digit`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Character`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Values composed entirely of numeric digits. Useful for columns stored as strings (e.g. zip codes, phone numbers).`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Special character`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Character`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Values containing at least one special character (e.g. `,_jsx(_components.code,{children:`@`}),`, `,_jsx(_components.code,{children:`#`}),`, `,_jsx(_components.code,{children:`!`}),`).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Alphabet`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Character`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Values containing only alphabetic characters — no digits or special characters.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Positive`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Numeric`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Count of numeric values greater than zero.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Negative`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Numeric`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Count of numeric values less than zero. Unexpected negatives in columns like age or price typically indicate bad data.`})]})]})]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Frequency`}),` — How often values, lengths, and ranges repeat:`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Metric`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Subcategory`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Dimension`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Profile Type`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Enum`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Value`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Distinct values and their frequencies — a value histogram. Reveals category distribution and flags values outside an expected allowed list.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Min value`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Value`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Essential`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Smallest value in the column. Establishes the lower bound and flags records below expected thresholds.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Max value`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Value`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Essential`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Largest value in the column. Detects outliers or values exceeding business-defined limits.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Value range`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Range`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Spread between minimum and maximum values. Sudden changes signal data drift or pipeline contamination.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Min length`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Length`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Essential`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Shortest string length found. Catches truncated values — e.g. a phone number column where some values are unexpectedly short.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Max length`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Length`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Essential`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Longest string length found. Detects values exceeding expected character limits that can cause issues in downstream systems.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Length`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Length`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Full distribution of string lengths. Reveals whether values cluster around a consistent length or vary widely.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Length range`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Range`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Spread between minimum and maximum string lengths. A wide range on a uniform column (e.g. country codes) signals a format problem.`})]})]})]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Pattern`}),` — Structural format templates:`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Metric`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Subcategory`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Dimension`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Profile Type`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Short pattern`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Pattern`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Condensed format — collapses consecutive identical character types into a single token (e.g. `,_jsx(_components.code,{children:`\"John\"`}),` → `,_jsx(_components.code,{children:`A`}),`). Useful for spotting high-level format anomalies quickly.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Long pattern`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Pattern`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Character-by-character format — preserves full length and composition (e.g. `,_jsx(_components.code,{children:`\"John\"`}),` → `,_jsx(_components.code,{children:`AAAA`}),`). Reveals length drift and mixed-format issues.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Regular expressions`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Pattern`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Validity`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Essential`}),_jsx(_components.td,{style:{textAlign:`left`},children:`User-defined regex patterns to validate that column values conform to a known format — e.g. email addresses, phone numbers, or custom ID formats.`})]})]})]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`Use `,_jsx(_components.strong,{children:`Short pattern`}),` for a quick high-level view of format variety in a column, and `,_jsx(_components.strong,{children:`Long pattern`}),` when you need to detect subtle length or composition changes — for example, a country code column that sometimes contains 3 characters instead of 2.`]})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Statistics`}),` — Numeric summaries:`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Metric`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Subcategory`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Dimension`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Profile Type`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Mean`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Descriptive`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Accuracy`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Arithmetic average of all non-null values. A shift in the mean is one of the earliest signals of data drift or a change in the upstream source.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Median`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Descriptive`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Accuracy`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Middle value when sorted. Less sensitive to outliers than the mean — useful for skewed distributions like revenue or transaction amounts.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Mode`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Descriptive`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Accuracy`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Most frequently occurring value. A sudden change can indicate a default value being injected or a new dominant category appearing.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Standard deviation`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Descriptive`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Accuracy`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Spread of values around the mean. A rising stddev indicates increasing variability — often a sign of data quality degradation.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Sum`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Descriptive`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Accuracy`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Total of all non-null numeric values. Useful for financial columns where totals should remain consistent across pipeline stages.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Q1`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Quantile`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Accuracy`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`25th percentile — 25% of values fall below this point. Used with Q3 to define the interquartile range.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Q3`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Quantile`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Accuracy`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`75th percentile — 75% of values fall below this point. Together with Q1 defines the middle 50% of the data distribution.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Range`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Shape`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Accuracy`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Difference between max and minimum values. Quick measure of the total spread of the data in a column.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Skewness`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Shape`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Accuracy`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Asymmetry of the distribution. Positive skew = long right tail; negative skew = long left tail. Useful for detecting non-normal distributions.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Kurtosis`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Shape`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Accuracy`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Tail weight of the distribution. High kurtosis indicates more extreme outliers than a normal distribution.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Variance`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Shape`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Accuracy`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Average of squared differences from the mean. Used in statistical tests and anomaly detection models.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Margin of error`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Shape`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Accuracy`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Advanced`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Uncertainty estimate in the sample statistics. Indicates reliability when profiling on a sample rather than the full dataset.`})]})]})]})]}),_jsxs(Tab,{title:`Business`,id:`business`,children:[_jsxs(_components.p,{children:[`Business metrics are `,_jsx(_components.strong,{children:`user-defined measurements aligned to domain rules, KPIs, and data contracts`}),`. Unlike structural and operational metrics which are auto-generated, business metrics are created by analysts, engineers, and domain SMEs to capture logic the platform cannot infer automatically. This is the second-largest context with 8.8K+ metrics.`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Type`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Custom`}),_jsx(_components.td,{style:{textAlign:`left`},children:`User-defined metric applied to a specific asset using filters, expressions, or threshold rules. Covers the majority of domain-specific quality checks — e.g. “percentage of orders with a valid product ID” or “revenue column must not be negative.”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Conditional`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Metric applying different logic or thresholds depending on another column’s value — e.g. if `,_jsx(_components.code,{children:`region = 'US'`}),`, check for a 10-digit phone format; otherwise apply a different rule. Useful for mixed-population assets.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Query`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Metric defined by a SQL query returning a scalar value. Enables joins, aggregations, and CTEs — ideal for rules requiring data from multiple sources.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Standalone`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Metric not bound to a specific asset. Used for org-wide KPIs, cross-domain aggregations, or summary metrics drawing from multiple datasets.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Behavioral`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Metric evaluating patterns over time rather than a single point. Detects trend changes, seasonal deviations, or gradual drift — e.g. daily sales volume trending 20% below its 30-day moving average.`})]})]})]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`Custom, Conditional, and Standalone business metrics `,_jsx(_components.strong,{children:`do`}),` contribute to trust scoring (`,_jsx(_components.code,{children:`Score: Yes`}),`). Behavioral metrics do not.`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`When to use business metrics:`})}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Scenario`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Recommended type`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Example`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Domain rule the platform cannot infer`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Custom`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`”The `,_jsx(_components.code,{children:`discount_pct`}),` column must never exceed 100”`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Same column, different valid formats by segment`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Conditional`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`”If `,_jsx(_components.code,{children:`country = 'US'`}),`, `,_jsx(_components.code,{children:`zip_code`}),` must be 5 digits; otherwise 6–8 characters”`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Rule spans multiple tables or requires a JOIN`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Query`}),_jsx(_components.td,{style:{textAlign:`left`},children:`”Count of orders with no matching customer record in the CRM table”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`KPI that rolls up across many assets`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Standalone`}),_jsx(_components.td,{style:{textAlign:`left`},children:`”% of customer records with a valid email across all regional tables”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Catch gradual drift by dimension or segment`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Behavioral`}),_jsx(_components.td,{style:{textAlign:`left`},children:`”Alert if daily transaction volume for Product A drops >15% below the 30-day rolling average”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Auto profiling scores don’t reflect real business impact`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Custom`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`”Flag any claim where `,_jsx(_components.code,{children:`claim_status = 'closed'`}),` but `,_jsx(_components.code,{children:`settlement_amount`}),` is null”`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Enforce a data contract with a downstream consumer`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Custom or Query`}),_jsx(_components.td,{style:{textAlign:`left`},children:`”Revenue in the mart must match the source system to within 0.1%“`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Column passes structural checks but violates a business constraint`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Custom`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`”`,_jsx(_components.code,{children:`age`}),` is non-null and numeric, but values below 18 are not valid for this product”`]})]})]})]})]}),_jsxs(Tab,{title:`Reconciliation`,id:`reconciliation`,children:[_jsxs(_components.p,{children:[`Reconciliation metrics `,_jsx(_components.strong,{children:`compare data across sources, snapshots, or reference tables`}),` to verify consistency and correctness. The smallest context by metric count, but critical for cross-system data contracts, ETL validation, and regulatory compliance. Reconciliation metrics support scheduling, alerting, and manual run triggers.`]}),_jsx(Note,{children:_jsx(_components.p,{children:`Exact metric counts vary by tenant and change over time — check the live count on your Metric page rather than a number documented here.`})}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Type`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Comparison`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Compares a column or aggregate value between two registered assets — e.g. the row count in a source table versus the same table after an ETL load, or a revenue total in the warehouse versus the source system. Returns a match score and flags discrepancies exceeding a defined tolerance. Typical use cases: source vs target row count match, delta scoring, cross-system segment comparison.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Lookup`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Validates that every value in a column exists in a reference dataset or allowed set. Used for referential integrity — e.g. every `,_jsx(_components.code,{children:`product_id`}),` in a fact table must exist in the product dimension. Typical use cases: FK validation, reference table match, allowed-value conformity checks.`]})]})]})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`When to use reconciliation:`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Two sources should contain the same data`}),` — e.g. a data warehouse and an operational database after an overnight sync.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Before and after a load`}),` — verifying row counts and key values match between source and destination.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Reference table validation`}),` — ensuring foreign key values in a fact table exist in the corresponding dimension.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Regulatory reporting`}),` — finance and compliance use cases where exact value matching is required.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`ETL pipeline validation`}),` — confirming upstream row counts are preserved through each transformation step.`]}),`\n`]}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`Comparison metrics require both source and target assets to be registered and accessible in Prizm. If a source asset is unreachable, the metric shows `,_jsx(_components.code,{children:`Score: NA`}),` and raises an availability alert rather than a comparison result.`]})})]}),_jsxs(Tab,{title:`Semantics`,id:`semantics`,children:[_jsxs(_components.p,{children:[`Semantic metrics are derived at a `,_jsx(_components.strong,{children:`logical or business grouping level`}),` — domain, product, application, tag, or connection — rather than at the individual asset level. They aggregate quality signals across ownership boundaries to enable domain- and product-level KPIs and SLOs.`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Grouping`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Example Metric`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Domain`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`DQ score for Customer360 domain`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Weighted quality score rolled up across all assets assigned to a domain`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Product`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Data product health score`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Aggregate quality and freshness across all assets in a defined data product`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Application`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`App-level SLO compliance`}),_jsx(_components.td,{style:{textAlign:`left`},children:`% of assets in an application meeting their quality and freshness SLOs`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Tag`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`PII tag coverage`}),_jsx(_components.td,{style:{textAlign:`left`},children:`% of assets with PII columns that have sensitivity tags applied and approved`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Connection`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Source reliability score`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Aggregate quality score across all assets from a given Databricks connection`})]})]})]}),_jsx(_components.p,{children:`Semantic metrics align Prizm quality signals with your organisation’s ownership model — making it possible for domain owners, product managers, and data stewards to track the health of their data without navigating individual asset pages.`}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`Semantic metrics are the right lens for `,_jsx(_components.strong,{children:`SLO reporting and executive dashboards`}),` — they answer “how healthy is the Customer360 domain?” rather than “how healthy is this one table?”`]})})]}),_jsxs(Tab,{title:`Pipeline`,id:`pipeline`,children:[_jsxs(_components.p,{children:[`Pipeline metrics apply specifically to `,_jsx(_components.strong,{children:`Databricks Job and Pipeline objects`}),` — Delta Live Tables, job runs, and orchestrated pipeline executions. They track operational health at the pipeline level rather than the individual asset level, and are the primary signals for pipeline SLA monitoring and incident detection.`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Metric`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Execution Status`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Whether the most recent pipeline run succeeded, failed, or was cancelled. The primary signal for pipeline health alerting — any non-success state triggers an immediate alert.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Freshness`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Time elapsed since the last successful pipeline completion. Fires when a pipeline has not completed a successful run within its expected window, signalling a stalled or skipped execution.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Rows Affected`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Number of rows written, updated, or deleted by the pipeline run. Sudden drops indicate partial loads or upstream data gaps; spikes may signal duplicate processing.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Execution Time`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Total elapsed wall-clock time for the pipeline run from start to finish. Tracks SLA compliance and detects regressions — a rising trend often precedes outright failures.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Failure Rate`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Percentage of pipeline runs that have failed over a rolling window. A rising failure rate surfaces flaky pipelines before they cause persistent data outages.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Dropped Records`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Count of records silently discarded during pipeline execution — typically due to schema mismatches, filter conditions, or quarantine rules. Unexpected spikes indicate upstream format changes or corrupted input data.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Failed Records`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Count of records that failed validation or processing rules and were not written to the target. Distinct from dropped records — these are records the pipeline attempted to process but could not.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Platform Outage`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Indicates whether a pipeline failure is attributable to a Databricks platform-level incident rather than a data or logic error. Prizm correlates run failures with Databricks status signals to suppress false-positive alerts during outage windows.`})]})]})]}),_jsx(Info,{children:_jsxs(_components.p,{children:[`Pipeline metrics operate at the `,_jsx(_components.strong,{children:`Job / Pipeline`}),` object level. They are surfaced on the Pipeline asset page in Prizm and feed into the Pipeline observability dashboard. Alerting thresholds for Execution Status and Freshness are configured per pipeline.`]})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`supported-databricks-objects`,children:`Supported Databricks Objects`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Object`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Catalog`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Quality`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Observability`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Lineage`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Table (Managed)`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`left`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`left`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`left`},children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Table (External)`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`left`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`left`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`left`},children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`View`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`left`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Schema only`}),_jsx(_components.td,{style:{textAlign:`left`},children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Delta Live Table`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`left`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`left`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`left`},children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Job / Pipeline`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`left`},children:`—`}),_jsx(_components.td,{style:{textAlign:`left`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`left`},children:`—`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Stored Procedure`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`left`},children:`—`}),_jsx(_components.td,{style:{textAlign:`left`},children:`—`}),_jsx(_components.td,{style:{textAlign:`left`},children:`—`})]})]})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`The Databricks connector targets `,_jsx(_components.strong,{children:`Unity Catalog workspaces`}),` on AWS, Azure, and GCP. Hive Metastore (legacy) workspaces without Unity Catalog enabled are not supported.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next Steps`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Setup`,icon:`plug`,href:`/sources/databricks/setup`,children:_jsx(_components.p,{children:`Connect Databricks to Prizm — prerequisites, authentication, and configuration.`})}),_jsx(Card,{title:`What We Collect`,icon:`database`,href:`/sources/databricks/what-we-collect`,children:_jsx(_components.p,{children:`Full field-level breakdown of every metadata object Prizm extracts from Databricks.`})}),_jsx(Card,{title:`FAQ`,icon:`circle-question`,href:`/sources/databricks/faq`,children:_jsx(_components.p,{children:`Common questions about the Databricks connector.`})}),_jsx(Card,{title:`Snowflake Connector`,icon:`snowflake`,href:`/sources/snowflake/overview`,children:_jsx(_components.p,{children:`Connect your Snowflake data warehouse.`})}),_jsx(Card,{title:`Glossary`,icon:`book`,href:`/help/glossary`,children:_jsx(_components.p,{children:`Definitions for key terms used across Prizm.`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Databricks Overview","icon":"fire","description":"What Databricks is, why connecting it to Prizm unlocks data intelligence, and what capabilities Prizm supports for Unity Catalog workspaces.","href":"/sources/databricks/overview"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[891,1522,""]]},"mdxExtracts":{"tableOfContents":[{"title":"Why Connect Databricks to Prizm?","slug":"why-connect-databricks-to-prizm","depth":2,"children":[]},{"title":"Metric Support","slug":"metric-support","depth":2,"children":[]},{"title":"Supported Databricks Objects","slug":"supported-databricks-objects","depth":2,"children":[]},{"title":"Next Steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"dqlabs","siteName":"DQLabs PRIZM","title":"Databricks Overview - DQLabs PRIZM","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-22T16:01:43.615Z","originalFileLocation":"sources/databricks/overview.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"What Databricks is, why connecting it to Prizm unlocks data intelligence, and what capabilities Prizm supports for Unity Catalog workspaces.\">\u003cmeta data-mint-head name=\"application-name\" content=\"DQLabs PRIZM\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/jpeg\" sizes=\"180x180\" href=\"https://media.brand.dev/9afdd2b1-c5b5-4aba-87dd-63e926be4e0e.jpg\">\u003clink data-mint-head rel=\"icon\" type=\"image/jpeg\" sizes=\"32x32\" href=\"https://media.brand.dev/9afdd2b1-c5b5-4aba-87dd-63e926be4e0e.jpg\">\u003clink data-mint-head rel=\"icon\" type=\"image/jpeg\" sizes=\"16x16\" href=\"https://media.brand.dev/9afdd2b1-c5b5-4aba-87dd-63e926be4e0e.jpg\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/jpeg\" href=\"https://media.brand.dev/9afdd2b1-c5b5-4aba-87dd-63e926be4e0e.jpg\">\u003cmeta data-mint-head property=\"og:title\" content=\"Databricks Overview - DQLabs PRIZM\">\u003cmeta data-mint-head property=\"og:description\" content=\"What Databricks is, why connecting it to Prizm unlocks data intelligence, and what capabilities Prizm supports for Unity Catalog workspaces.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"DQLabs PRIZM\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.dqlabs.ai/sources/databricks/overview\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://dqlabs.mintlify.site/_mintlify/api/og/v2?division=Databricks\u0026amp;title=Databricks+Overview\u0026amp;description=What+Databricks+is%2C+why+connecting+it+to+Prizm+unlocks+data+intelligence%2C+and+what+capabilities+Prizm+supports+for+Unity+Catalog+workspaces.\u0026amp;theme=427ee605c16ad5234d5bc748\u0026amp;signature=1ab281b4ea63b8b1fdcf646ab7db44063c19557fd10e1cbcacf9209d38ed8711\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Databricks Overview - DQLabs PRIZM\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"What Databricks is, why connecting it to Prizm unlocks data intelligence, and what capabilities Prizm supports for Unity Catalog workspaces.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://dqlabs.mintlify.site/_mintlify/api/og/v2?division=Databricks\u0026amp;title=Databricks+Overview\u0026amp;description=What+Databricks+is%2C+why+connecting+it+to+Prizm+unlocks+data+intelligence%2C+and+what+capabilities+Prizm+supports+for+Unity+Catalog+workspaces.\u0026amp;theme=427ee605c16ad5234d5bc748\u0026amp;signature=1ab281b4ea63b8b1fdcf646ab7db44063c19557fd10e1cbcacf9209d38ed8711\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"https://mintlify.s3.us-west-1.amazonaws.com/dqlabs/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"DQLabs PRIZM\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#e40404\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.dqlabs.ai/sources/databricks/overview\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/sources/databricks/overview.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.dqlabs.ai/#organization\",\"name\":\"DQLabs Inc\",\"url\":\"https://docs.dqlabs.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://media.brand.dev/332adc35-5bc4-4d2b-bf78-256aa4a5e414.svg\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.dqlabs.ai#website\",\"name\":\"DQLabs PRIZM\",\"url\":\"https://docs.dqlabs.ai\",\"publisher\":{\"@id\":\"https://docs.dqlabs.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.dqlabs.ai/sources/databricks/overview#webpage\",\"url\":\"https://docs.dqlabs.ai/sources/databricks/overview\",\"name\":\"Databricks Overview\",\"description\":\"What Databricks is, why connecting it to Prizm unlocks data intelligence, and what capabilities Prizm supports for Unity Catalog workspaces.\",\"dateModified\":\"2026-09-22T16:01:43.615Z\",\"isPartOf\":{\"@id\":\"https://docs.dqlabs.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.dqlabs.ai/sources/databricks/overview#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.dqlabs.ai/sources/databricks/overview#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Data Sources\",\"item\":\"https://docs.dqlabs.ai/sources/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Databricks Overview\",\"item\":\"https://docs.dqlabs.ai/sources/databricks/overview\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.dqlabs.ai/sources/databricks/overview#article\",\"headline\":\"Databricks Overview\",\"name\":\"Databricks Overview\",\"description\":\"What Databricks is, why connecting it to Prizm unlocks data intelligence, and what capabilities Prizm supports for Unity Catalog workspaces.\",\"url\":\"https://docs.dqlabs.ai/sources/databricks/overview\",\"mainEntityOfPage\":{\"@id\":\"https://docs.dqlabs.ai/sources/databricks/overview#webpage\"},\"dateModified\":\"2026-09-22T16:01:43.615Z\",\"publisher\":{\"@id\":\"https://docs.dqlabs.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.dqlabs.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"DQLabs PRIZM\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"DQLabs Inc\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/sources/databricks/overview.md","siteName":"DQLabs PRIZM","nav":{"global":null,"tabs":[{"tab":"Documentation","icon":"dochub","groups":[{"group":"Get Started","icon":"running","pages":[{"title":"What is PRIZM? ","icon":"triangle","href":"/introduction"},{"title":"Sign in \u0026 Invite your team","icon":"user-check","href":"/quickstart"},{"title":"Get up and running with PRIZM: a step-by-step guide","icon":"rocket-launch","href":"/login"}]},{"group":"Core Concepts","icon":"apple-core","pages":[{"title":"Assets: Discover and manage your context in PRIZM","icon":"album-collection","mode":"wide","href":"/concepts/assets"},{"title":"Metrics: Monitor data quality and pipeline health in PRIZM","icon":"badge-check","href":"/concepts/metrics"},{"title":"Alerts: Automatic data drift and quality notifications","icon":"bolt-lightning","href":"/concepts/alerts"},{"title":"Issues: Manage data problems from detection to fix","icon":"bug","href":"/concepts/issues"}]},{"group":"Platform","icon":"laptop-code","pages":[{"title":"Platform Overview","icon":"grid","href":"/platform/overview"},{"title":"Multi-Agent Architecture","icon":"network-wired","href":"/platform/multi-agent-architecture"},{"title":"Autonomous Intelligence","icon":"brain","href":"/platform/autonomous-intelligence"},{"title":"AI \u0026 ML Capabilities","icon":"user-robot","href":"/platform/ai-and-ml-capabilities"},{"title":"Converse — AI Chat Interface","icon":"comments","href":"/platform/converse"},{"title":"AI Stewardship","icon":"robot","href":"/platform/ai-stewardship"}]},{"group":"Architecture","icon":"crate-apple","pages":[{"title":"Architecture Overview","icon":"server","href":"/architecture/overview"},{"title":"Criticality Scoring","icon":"star-sharp","href":"/architecture/criticality"},{"group":"Asset","icon":"album-collection","pages":[{"title":"Asset Overview","icon":"table-rows","href":"/architecture/asset"},{"title":"Asset Detail","icon":"table-rows","href":"/architecture/asset-details"},{"title":"Asset Type","icon":"computer-classic","href":"/architecture/asset-type"}]},{"group":"Entities (Child Objects)","icon":"list-tree","pages":[{"title":"Entities","icon":"objects-column","href":"/architecture/entities"},{"title":"Entity List","icon":"list-ul","href":"/architecture/entity-list"},{"title":"Attribute","icon":"table-columns-add-after","href":"/architecture/attribute"}]},{"group":"Profiling","icon":"creative-commons-sampling","pages":[{"title":"Data Profiling","icon":"magnifying-glass-chart","href":"/architecture/data-profiling"},{"title":"Profile Insights","icon":"box-isometric-tape","href":"/architecture/profile-insights"}]},{"group":"Metric","icon":"box-isometric-tape","pages":[{"title":"Metric Overview","icon":"chart-line","href":"/architecture/metric"},{"group":"Metric Types","icon":"shapes","pages":[{"group":"Operational","icon":"gears","pages":[{"group":"Volume","icon":"database","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/volume/overview"},{"title":"Configure","icon":"sliders","href":"/architecture/metrics/volume/configure"}]},{"group":"Freshness","icon":"clock","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/freshness/overview"},{"title":"Configure","icon":"sliders","href":"/architecture/metrics/freshness/configure"}]},{"group":"Schema","icon":"table-columns","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/schema/overview"},{"title":"Configure","icon":"sliders","href":"/architecture/metrics/schema/configure"}]}]},{"group":"Performance","icon":"gauge-high","pages":[{"group":"Credits","icon":"coins","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/credits/overview"},{"title":"Configure","icon":"sliders","href":"/architecture/metrics/credits/configure"}]},{"group":"Queries","icon":"bolt","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/queries/overview"},{"title":"Configure","icon":"sliders","href":"/architecture/metrics/queries/configure"}]},{"group":"Usage","icon":"chart-simple","pages":[{"title":"Overview","tag":"Ready For Review","icon":"circle-info","href":"/architecture/metrics/usage/overview"}]}]},{"group":"Structural","icon":"cubes","pages":[{"group":"Distribution","icon":"chart-column","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/distribution/overview"},{"title":"Configure","icon":"sliders","href":"/architecture/metrics/distribution/configure"}]},{"group":"Frequency","icon":"wave-square","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/frequency/overview"},{"title":"Configure","icon":"sliders","href":"/architecture/metrics/frequency/configure"}]},{"group":"Pattern","icon":"braille","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/pattern/overview"},{"title":"Configure","icon":"sliders","href":"/architecture/metrics/pattern/configure"}]},{"group":"Statistics","icon":"calculator","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/statistics/overview"},{"title":"Configure","icon":"sliders","href":"/architecture/metrics/statistics/configure"}]}]},{"group":"Business","icon":"briefcase","pages":[{"group":"Conditional","icon":"code-branch","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/conditional/overview"},{"title":"Setup","icon":"gear","href":"/architecture/metrics/conditional/setup"},{"title":"Use Cases","icon":"lightbulb","href":"/architecture/metrics/conditional/usecases"}]},{"group":"Query","icon":"terminal","pages":[{"title":"Overview","icon":"lightbulb","href":"/architecture/metrics/query/usecases"},{"title":"Setup","icon":"gear","href":"/architecture/metrics/query/setup"},{"title":"Use Cases","icon":"lightbulb","href":"/architecture/metrics/query/examples"}]},{"group":"Standalone","icon":"cube","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/standalone/overview"},{"title":"Setup","icon":"gear","href":"/architecture/metrics/standalone/setup"},{"title":"Use Cases","icon":"lightbulb","href":"/architecture/metrics/standalone/usecases"}]},{"group":"Behavioural","icon":"person-running","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/behavioural/overview"},{"title":"Setup","icon":"gear","href":"/architecture/metrics/behavioural/setup"},{"title":"Use Cases","icon":"lightbulb","href":"/architecture/metrics/behavioural/usecases"}]}]},{"group":"Reconciliation","icon":"scale-balanced","pages":[{"group":"Comparison","icon":"code-compare","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/comparison/overview"},{"title":"Setup","icon":"gear","href":"/architecture/metrics/comparison/setup"},{"title":"Use Cases","icon":"lightbulb","href":"/architecture/metrics/comparison/usecases"}]},{"group":"Lookup","icon":"magnifying-glass","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/lookup/overview"},{"title":"Setup","icon":"gear","href":"/architecture/metrics/lookup/setup"},{"title":"Use Cases","icon":"lightbulb","href":"/architecture/metrics/lookup/usecases"}]}]},{"group":"Semantic","icon":"folder-open","pages":[{"title":"Semantic Metrics","sidebarTitle":"overview","icon":"folder-open","href":"/architecture/metrics/semantic/overview"}]},{"group":"Metric Template","icon":"copy","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/metric-template/overview"},{"title":"Setup","icon":"gear","href":"/architecture/metrics/metric-template/setup"}]}]},{"title":"Anomaly Detection","icon":"wave-pulse","href":"/architecture/anomaly-detection"},{"title":"Metric Results","icon":"chart-simple","href":"/architecture/metric-result"},{"title":"Pipeline Metric","icon":"diagram-project","href":"/architecture/pipeline-metric"}]},{"group":"Lineage","icon":"arrow-left-arrow-right","pages":[{"title":"Lineage","icon":"diagram-project","href":"/architecture/lineage"},{"title":"Lineage Extraction","icon":"arrows-left-right","href":"/architecture/lineage-extraction"}]},{"title":"Usage","icon":"users","href":"/architecture/usage"},{"group":"Logs","icon":"money-check-pen","pages":[{"title":"Logging Overview","icon":"book-open-lines","href":"/architecture/log/logging-overview"},{"title":"Asset Audit","icon":"block-quote","href":"/architecture/log/asset-audit"},{"title":"Audit Log","icon":"train-track","href":"/architecture/log/audit-log"},{"title":"Activity Log","icon":"user-pen","href":"/architecture/log/activity-log"}]},{"group":"Command Center","icon":"terminal","pages":[{"title":"Overview","icon":"terminal","href":"/architecture/command-center/overview"},{"title":"Jobs","icon":"briefcase","href":"/architecture/command-center/jobs"},{"title":"Schedules","icon":"calendar","href":"/architecture/command-center/schedule"},{"title":"Utility: Import and Export","sidebarTitle":"Utility","icon":"arrows-left-right","href":"/architecture/command-center/utility"}]},{"title":"Documentation","icon":"file-doc","href":"/architecture/documentation"},{"title":"Scoring","icon":"star","href":"/architecture/score"},{"group":"Semantics","icon":"sitemap","pages":[{"title":"Overview","icon":"book-open","href":"/architecture/semantics/overview"},{"title":"Domain","icon":"globe","href":"/architecture/semantics/domain"},{"title":"Product","icon":"box","href":"/architecture/semantics/product"},{"title":"Application","icon":"window-maximize","href":"/architecture/semantics/application"},{"title":"Tag","icon":"tag","href":"/architecture/semantics/tag"},{"title":"Glossary","icon":"book","href":"/architecture/semantics/glossary"}]},{"group":"Exceptions","icon":"triangle-exclamation","pages":[{"title":"Exceptions Overview","icon":"triangle-exclamation","href":"/architecture/exceptions/overview"},{"title":"Exception Records","icon":"table-list","href":"/architecture/exceptions/exception-records"},{"title":"Notifications","icon":"bell","href":"/architecture/exceptions/notifications"},{"title":"Exception Dashboard","icon":"gauge","href":"/architecture/exceptions/exception-dashboard"}]},{"group":"Alerts","icon":"sensor-alert","pages":[{"title":"Alerts Overview","icon":"bell","href":"/architecture/alerts/overview"},{"title":"Alert Detail","icon":"circle-info","href":"/architecture/alerts/details"},{"title":"Alert Management","icon":"sliders","href":"/architecture/alerts/management"},{"title":"Alert Thresholds","icon":"gauge-high","href":"/architecture/alerts/thresholds"}]},{"title":"Actions","icon":"bolt","href":"/architecture/actions"},{"title":"SLA","icon":"stopwatch","href":"/architecture/sla"},{"group":"Dashboard","icon":"gauge","pages":[{"title":"Quality Dashboard","sidebarTitle":"quality-dashboard","icon":"shield-check","href":"/architecture/Quality-dashboard"},{"title":"Catalog Dashboard","icon":"book-open","href":"/architecture/catalog-dashboard"},{"title":"Observability Dashboard — Data","sidebarTitle":"Observability: Data","icon":"database","href":"/architecture/observability-data-dashboard"},{"title":"Observability Dashboard — Pipeline","sidebarTitle":"Observability: Pipeline","icon":"diagram-project","href":"/architecture/observability-pipeline-dashboard"},{"title":"Observability Dashboard — Report","sidebarTitle":"Observability: Report","icon":"chart-pie","href":"/architecture/observability-report-dashboard"}]}]},{"group":"Data Sources","icon":"sourcetree","pages":[{"title":"Data Sources Overview","icon":"database","href":"/sources/overview"},{"group":"ADLS","icon":"microsoft","pages":[{"title":"ADLS Overview","icon":"microsoft","href":"/sources/adls/overview"},{"title":"ADLS Setup","icon":"plug","href":"/sources/adls/setup"},{"title":"What We Collect","icon":"list-check","href":"/sources/adls/what-we-collect"},{"title":"FAQ","icon":"circle-question","href":"/sources/adls/faq"}]},{"group":"Snowflake","icon":"snowflake","pages":[{"title":"Snowflake Overview","icon":"snowflake","href":"/sources/snowflake/overview"},{"title":"Snowflake Setup","icon":"plug","href":"/sources/snowflake/setup"},{"title":"What Prizm Collects from Snowflake","icon":"database","href":"/sources/snowflake/what-we-collect"},{"title":"Snowflake FAQ","icon":"question","href":"/sources/snowflake/faq"}]},{"group":"Oracle","icon":"database","pages":[{"title":"Oracle Overview","icon":"database","href":"/sources/oracle/overview"},{"title":"Oracle Setup","icon":"plug","href":"/sources/oracle/setup"},{"title":"What We Collect","icon":"list-check","href":"/sources/oracle/what-we-collect"},{"title":"FAQ","icon":"circle-question","href":"/sources/oracle/faq"}]},{"group":"Sigma","icon":"chart-mixed","hidden":true,"pages":[{"title":"Sigma Overview","icon":"chart-mixed","href":"/sources/sigma/overview"},{"title":"Sigma Setup","icon":"plug","href":"/sources/sigma/setup"},{"title":"What We Collect","icon":"list-check","href":"/sources/sigma/what-we-collect"},{"title":"FAQ","icon":"circle-question","href":"/sources/sigma/faq"}]},{"group":"BigQuery","icon":"google","pages":[{"title":"BigQuery Overview","sidebarTitle":"Overview","icon":"database","href":"/sources/bigquery/overview"},{"title":"BigQuery Setup","sidebarTitle":"Setup","icon":"plug","href":"/sources/bigquery/setup"},{"title":"BigQuery — What We Collect","sidebarTitle":"What We Collect","icon":"database","href":"/sources/bigquery/what-we-collect"},{"title":"BigQuery FAQ","sidebarTitle":"FAQ","description":"Common questions about the BigQuery connector.","icon":"circle-question","href":"/sources/bigquery/faq"}]},{"group":"Databricks","icon":"fire","pages":[{"title":"Databricks Overview","icon":"fire","href":"/sources/databricks/overview"},{"title":"Setup","description":"Prerequisites, authentication options, and step-by-step instructions for connecting Databricks to Prizm.","icon":"plug","href":"/sources/databricks/setup"},{"title":"What Prizm Collects from Databricks","icon":"database","href":"/sources/databricks/what-we-collect"},{"title":"FAQ","icon":"question","href":"/sources/databricks/faq"}]},{"group":"SQL Server","icon":"server","pages":[{"title":"SQL Server Overview","icon":"database","href":"/sources/sql/overview"},{"title":"Setup","icon":"plug","href":"/sources/sql/setup"},{"title":"What Prizm Collects from SQL Server","icon":"database","href":"/sources/sql/what-we-collect"},{"title":"FAQ","icon":"question","href":"/sources/sql/faq"}]},{"group":"dbt","icon":"cube","pages":[{"title":"dbt Overview","icon":"cube","href":"/sources/dbt/overview"},{"title":"Setup","icon":"plug","href":"/sources/dbt/setup"},{"title":"What Prizm Collects from dbt","icon":"database","href":"/sources/dbt/what-prizm-collects"},{"title":"FAQ","icon":"question","href":"/sources/dbt/faq"}]},{"group":"Tableau","icon":"chart-column","pages":[{"title":"Tableau Overview","icon":"chart-bar","href":"/sources/tableau/overview"},{"title":"Tableau Setup","icon":"plug","href":"/sources/tableau/setup"},{"title":"What Prizm Collects from Tableau","icon":"database","href":"/sources/tableau/what-we-collect"},{"title":"Tableau FAQ","icon":"question","href":"/sources/tableau/faq"}]},{"group":"Power BI","icon":"chart-pie","pages":[{"title":"Overview","icon":"chart-bar","href":"/sources/powerbi/overview"},{"title":"Setup","icon":"plug","href":"/sources/powerbi/setup"},{"title":"What We Collect","icon":"database","href":"/sources/powerbi/what-we-collect"},{"title":"FAQ","icon":"circle-question","href":"/sources/powerbi/faq"}]},{"group":"Apache Airflow","icon":"wind","pages":[{"title":"Airflow Overview","icon":"wind","href":"/sources/airflow/overview"},{"title":"Setup","icon":"plug","href":"/sources/airflow/setup"},{"title":"What We Collect","icon":"database","href":"/sources/airflow/what-we-collect"},{"title":"Plugin Setup","icon":"puzzle-piece","href":"/sources/airflow/plugin-setup"}]},{"group":"SAP HANA","icon":"memory","pages":[{"title":"SAP HANA Overview","sidebarTitle":"Overview","icon":"database","href":"/sources/sap-hana/overview"},{"title":"SAP HANA Setup","sidebarTitle":"Setup","icon":"plug","href":"/sources/sap-hana/setup"},{"title":"SAP HANA — What We Collect","sidebarTitle":"What We Collect","icon":"database","href":"/sources/sap-hana/what-we-collect"},{"title":"SAP HANA FAQ","sidebarTitle":"FAQ","icon":"circle-question","href":"/sources/sap-hana/faq"}]},{"group":"Azure Data Factory","icon":"diagram-project","hidden":true,"pages":[{"title":"Azure Data Factory Overview","sidebarTitle":"Overview","icon":"database","href":"/sources/adf/overview"},{"title":"Azure Data Factory Setup","sidebarTitle":"Setup","icon":"plug","href":"/sources/adf/setup"},{"title":"Azure Data Factory — What We Collect","sidebarTitle":"What We Collect","icon":"database","href":"/sources/adf/what-we-collect"},{"title":"Azure Data Factory FAQ","sidebarTitle":"FAQ","icon":"circle-question","href":"/sources/adf/faq"}]},{"group":"Azure Synapse","icon":"warehouse","pages":[{"title":"Azure Synapse Overview","sidebarTitle":"Overview","icon":"database","href":"/sources/synapse/overview"},{"title":"Azure Synapse Setup","sidebarTitle":"Setup","icon":"plug","href":"/sources/synapse/setup"},{"title":"Azure Synapse — What We Collect","sidebarTitle":"What We Collect","icon":"database","href":"/sources/synapse/what-we-collect"},{"title":"Azure Synapse FAQ","sidebarTitle":"FAQ","icon":"circle-question","href":"/sources/synapse/faq"},{"title":"Pipelines","tag":"Internal","icon":"diagram-project","href":"/sources/synapse/pipelines"}]},{"group":"Salesforce Data Cloud","icon":"salesforce","pages":[{"title":"Salesforce Data Cloud Overview","sidebarTitle":"Overview","icon":"database","href":"/sources/salesforce-data-cloud/overview"},{"title":"Salesforce Data Cloud Setup","sidebarTitle":"Setup","icon":"plug","href":"/sources/salesforce-data-cloud/setup"},{"title":"Salesforce Data Cloud — What We Collect","sidebarTitle":"What We Collect","icon":"database","href":"/sources/salesforce-data-cloud/what-we-collect"},{"title":"Salesforce Data Cloud FAQ","sidebarTitle":"FAQ","icon":"circle-question","href":"/sources/salesforce-data-cloud/faq"}]},{"group":"WhereScape","icon":"diagram-project","pages":[{"title":"WhereScape Overview","sidebarTitle":"Overview","icon":"database","href":"/sources/wherescape/overview"},{"title":"WhereScape Setup","sidebarTitle":"Setup","icon":"plug","href":"/sources/wherescape/setup"},{"title":"WhereScape — What We Collect","sidebarTitle":"What We Collect","icon":"database","href":"/sources/wherescape/what-we-collect"},{"title":"WhereScape FAQ","sidebarTitle":"FAQ","icon":"circle-question","href":"/sources/wherescape/faq"}]},{"group":"Salesforce Marketing","icon":"salesforce","pages":[{"title":"Salesforce Marketing Overview","sidebarTitle":"Overview","icon":"database","href":"/sources/salesforce-marketing/overview"},{"title":"Salesforce Marketing Setup","sidebarTitle":"Setup","icon":"plug","href":"/sources/salesforce-marketing/setup"},{"title":"Salesforce Marketing — What We Collect","sidebarTitle":"What We Collect","icon":"database","href":"/sources/salesforce-marketing/what-we-collect"},{"title":"Salesforce Marketing FAQ","sidebarTitle":"FAQ","icon":"circle-question","href":"/sources/salesforce-marketing/faq"}]}]},{"group":"Integrations","icon":"connectdevelop","pages":[{"group":"Alation","icon":"book-open","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/alation/overview"},{"title":"Setup","icon":"gear","href":"/integrations/alation/setup"},{"title":"Integration","icon":"plug","href":"/integrations/alation/integration"}]},{"group":"Collibra","icon":"book-open","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/collibra/overview"},{"title":"Setup","icon":"gear","href":"/integrations/collibra/setup"}]},{"group":"Atlan","icon":"book-open","pages":[{"title":"Overview","tag":"Private","icon":"circle-info","href":"/integrations/atlan/overview"},{"title":"Setup","tag":"Private","icon":"gear","href":"/integrations/atlan/setup"}]},{"group":"Microsoft Purview","icon":"book-open","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/purview/overview"},{"title":"Setup","icon":"gear","href":"/integrations/purview/setup"}]},{"group":"Collaboration","icon":"people-group","pages":[{"group":"Jira","icon":"jira","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/jira/overview"},{"title":"Setup","icon":"gear","href":"/integrations/jira/setup"},{"title":"Integration","icon":"plug","href":"/integrations/jira/integration"}]},{"group":"Service Now","icon":"ticket","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/servicenow/overview"},{"title":"Setup","icon":"gear","href":"/integrations/servicenow/setup"},{"title":"Integration","icon":"plug","href":"/integrations/servicenow/integration"}]},{"group":"Github Action","icon":"circle-play","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/githubaction/overview"},{"title":"Setup","icon":"gear","href":"/integrations/githubaction/setup"},{"title":"Integration","icon":"plug","href":"/integrations/githubaction/integrations"}]},{"group":"Github App","icon":"github","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/githubapp/overview"},{"title":"Setup","icon":"gear","href":"/integrations/githubapp/setup"},{"title":"Integration","icon":"arrows-left-right","href":"/integrations/githubapp/integrations"}]}]},{"group":"Notification","icon":"bell","pages":[{"group":"Email","icon":"envelope","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/email/overview"},{"title":"Setup","icon":"gear","href":"/integrations/email/setup"}]},{"group":"Google Chat","icon":"google","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/googlechat/overview"},{"title":"Setup","icon":"gear","href":"/integrations/googlechat/setup"}]},{"group":"Microsoft Team","icon":"microsoft","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/teams/overview"},{"title":"Setup","icon":"gear","href":"/integrations/teams/setup"}]},{"group":"Slack","icon":"slack","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/slack/overview"},{"title":"Setup","icon":"gear","href":"/integrations/slack/setup"}]}]},{"group":"Vault","icon":"vault","pages":[{"group":"Azure Key Vault","icon":"key","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/azure-key-vault/overview"},{"title":"Prerequisites","icon":"list-check","href":"/integrations/azure-key-vault/prerequisites"},{"title":"Setup","icon":"gear","href":"/integrations/azure-key-vault/setup"}]},{"group":"HashiCorp Vault","icon":"vault","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/hashicorp-vault/overview"},{"title":"Prerequisites","icon":"list-check","href":"/integrations/hashicorp-vault/prerequisites"},{"title":"Setup","icon":"gear","href":"/integrations/hashicorp-vault/setup"}]},{"group":"AWS Secret Manager","icon":"aws","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/aws-secret-manager/overview"},{"title":"Prerequisites","icon":"list-check","href":"/integrations/aws-secret-manager/prerequisites"},{"title":"Setup","icon":"gear","href":"/integrations/aws-secret-manager/setup"}]}]}]},{"group":"Security \u0026 Access Control","icon":"user-lock","pages":[{"title":"Security Overview","icon":"shield","href":"/security/overview"},{"title":"RBAC","icon":"user-shield","href":"/security/rbac"},{"group":"SSO integration","icon":"right-to-bracket","pages":[{"title":"SSO Integration Overview","icon":"key","href":"/security/sso"},{"title":"Azure Active Directory/Entra ID","icon":"microsoft","href":"/security/sso/azure"},{"title":"Okta","icon":"id-badge","href":"/security/sso/okta"},{"title":"IBM Verify","icon":"shield-check","href":"/security/sso/ibm-verify"},{"title":"Ping Identity","icon":"fingerprint","href":"/security/sso/ping-identity"},{"title":"SCIM Integration","icon":"users-gear","tag":"Ready for review","href":"/security/sso/scim"}]},{"title":"Data Protection","icon":"shield-halved","href":"/security/data-protection"},{"title":"AI Governance","icon":"user-robot","href":"/security/aigovernance"},{"title":"Compliance","icon":"certificate","href":"/security/compliance"}]},{"group":"Deployment","icon":"octopus-deploy","pages":[{"title":"Deployment Overview","icon":"rectangle-terminal","href":"/deployment/overview"},{"group":"Hybrid","icon":"cloud","pages":[{"group":"Azure Agent Outbound","icon":"microsoft","pages":[]},{"group":"AWS Agent Outbound","icon":"aws","pages":[]},{"group":"GCP Agent Outbound","icon":"google","pages":[]},{"group":"On Prem Agent Outbound","icon":"container-storage","pages":[]}]},{"group":"Customer Hosted","icon":"building","pages":[{"group":"Online","icon":"wifi","pages":[]},{"group":"Offline(Private)","icon":"lock","pages":[]}]}]},{"group":"Help","icon":"hands-helping","pages":[{"title":"FAQ","icon":"circle-question","href":"/faq"},{"title":"Troubleshooting","icon":"wrench","href":"/help/troubleshooting"},{"title":"Glossary","icon":"book","href":"/help/glossary"}]},{"group":"Settings","icon":"cog","pages":[{"title":"Platform","icon":"layer-group","href":"/Platform"},{"title":"Security","icon":"lock","href":"/settings"},{"title":"Remediation","icon":"screwdriver-wrench","href":"/remediation"},{"title":"Color Mode","icon":"palette","href":"/color-mode"},{"title":"Overview","icon":"building","href":"/organization-overview"}]},{"group":"MCP","icon":"plug","pages":[{"title":"MCP Access Tokens","icon":"key","href":"/ai/mcp-access-tokens"}]},{"group":"Release Notes","icon":"clipboard-list","pages":[{"title":"1.3.3 Release Notes","icon":"tag","href":"/Release_Notes_v1.3.3"},{"title":"1.3.4 Release Notes","icon":"tag","href":"/Release_Notes_v1.3.4"},{"title":"1.4.1 Release Notes","icon":"tag","href":"/Release_Notes_v1.4.1"}]},{"group":"Placeholder reference - might remove","icon":"box-archive","hidden":true,"pages":[{"title":"security","icon":"shield","href":"/introduction/security"},{"title":"What is Prizm?","icon":"sparkles","href":"/introduction/overview"},{"title":"Key Concepts","icon":"lightbulb","href":"/introduction/key-concepts"},{"title":"Quick Start","icon":"rocket","href":"/introduction/quick-start"},{"group":"Data Quality","icon":"shield-check","pages":[{"title":"Data Quality Overview","icon":"shield-check","href":"/data-quality/overview"},{"title":"Quality Metrics","icon":"shield-check","href":"/data-quality/metrics"},{"title":"Quality Scoring","icon":"star","href":"/data-quality/scoring"},{"title":"Exception Management","icon":"triangle-exclamation","href":"/data-quality/exceptions"},{"title":"YAML Metrics - DQaC","icon":"code","href":"/data-quality/yaml-dqac"}]},{"group":"AI-Powered Experiences","icon":"robot","pages":[{"title":"AI-Powered Experiences","icon":"wand-magic-sparkles","href":"/ai/overview"},{"title":"GPT Prompts","icon":"wand-magic-sparkles","href":"/ai/gpt-prompts"},{"title":"Model Configuration","icon":"sliders","href":"/ai/model-configuration"},{"title":"Converse MCP Tools","icon":"plug","href":"/ai/converse-mcp"},{"title":"AI Recommendations","icon":"lightbulb","href":"/ai/recommendations"},{"title":"Glossary Generation","icon":"book","href":"/ai/glossary-generation"}]},{"group":"Guides","icon":"notes-sticky","pages":[{"title":"Navigate the PRIZM dashboard, nav bar, and search","icon":"compass","href":"/guides/navigating-dashboard"},{"title":"Search and discover assets across your data ecosystem","icon":"magnifying-glass","href":"/guides/searching-assets"},{"title":"Explore asset details, schema, lineage, and metrics","icon":"table","href":"/guides/asset-details"},{"title":"View, triage, and respond to PRIZM data quality alerts","icon":"bell","href":"/guides/managing-alerts"},{"title":"Track and resolve data quality issues with PRIZM Issues","icon":"bug","href":"/guides/tracking-issues"},{"title":"Explore insights with Analytics","icon":"chart-bar","href":"/guides/analytics"},{"title":"Use the PRIZM AI Chat Assistant to explore your data","icon":"comments","href":"/guides/chat-assistant"}]},{"group":"Architecture","icon":"sitemap","pages":[{"title":"Audience","icon":"users-gear","href":"/architecture/audience"},{"title":"Infrastructure","icon":"cloud","href":"/architecture/infrastructure"},{"title":"Data Model","icon":"table","href":"/architecture/data-model"},{"title":"Context Module","icon":"brain","href":"/architecture/context"},{"title":"Notifications","icon":"bell","href":"/architecture/notifications"},{"title":"Scheduling","icon":"calendar","href":"/architecture/scheduling"},{"title":"Impact Analysis","icon":"explosion","href":"/lineage/impact-analysis"}]}]}]},{"tab":"API Reference","icon":"code","pages":[{"title":"API Reference","href":"/api-reference/overview"}]}]},"basePath":"","title":"Databricks Overview - DQLabs PRIZM","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":[],"chunks":[]}