Skip to main content
If you’re using Prizm Spark (the default) rather than your own Databricks cluster, none of the Azure/Unity Catalog/Databricks setup below is required — skip straight to Step 1: Configure Your ADLS Source.

Prerequisites Checklist

Authentication Setup (Azure)

Prizm needs read-only access to the container holding source files, and read-write access to a separate container used as Unity Catalog’s managed storage location. Keeping these as two containers, each with its own role assignment, means the source container’s identity holds no write or delete permission at all.

Unity Catalog Setup

External locations

Create two external locations from the same storage credential — one per container:
Grant the Prizm execution identity access on each:
For ADLS + Databricks Unity Catalog clients, exception and metadata instruction JSON is staged under the write external location (abfss://…/staging/{run_id}/…) rather than uploaded to Prizm SaaS S3 or via a scheduled Azure Blob upload as in earlier releases. The WRITE FILES grant above already covers this — no separate grant is required. Open-network clients are unaffected and keep the existing S3 HTTPS path.

Catalog and schema

If your metastore already has default managed storage configured at the account level, the MANAGED LOCATION clause can be omitted.

Trino / external engine access

Because tables are written with Delta UniForm (Iceberg compatibility), any Iceberg REST catalog client — Trino, external Spark, Snowflake, DuckDB — can read them once pointed at your metastore’s Iceberg REST endpoint (/api/2.1/unity-catalog/iceberg-rest). This is governed independently of the grants above and requires two extra steps:
  1. Enable external data access on the metastore — a one-time, metastore-level setting a metastore admin turns on (Catalog → gear icon → metastore settings), not a SQL statement.
  2. Grant EXTERNAL USE SCHEMA to whichever identity Trino authenticates as:
This external-access pathway is currently in Public Preview on Databricks — confirm with your Databricks account team that it’s enabled if you haven’t used it before. For Trino catalog authentication, only client ID/secret/tenant ID are provided, not a pre-generated token; Trino requests its own token per call, so there’s nothing to rotate by hand.

Consolidated grant script

All grants above, in one pass (substitute your real values for every placeholder):

Databricks Workspace Access

Execution identity

Prizm authenticates using an OAuth service principal — a Databricks service principal with a client ID and OAuth secret, scoped only to what Prizm needs. Create it under Account Console → User management → Service principals, generate a secret on its Secrets tab, and store both values in a secrets manager.

Notebook paths

Two notebooks are deployed to workspace paths your team agrees on: The execution identity needs CAN_RUN (minimum) or CAN_MANAGE permission on both paths.

Compute

Provide either an existing all-purpose/job cluster ID, or permission for Prizm to launch a job cluster automatically with an agreed instance type, DBR version, and pool/AZ constraints.
Approximate load handling: a 100 MB / ~1M row file scans in 1–3 minutes; a 10 GB / ~100M row file takes roughly 30–90 minutes, depending on worker count. Actual timings vary with file format, column count, and configured checks.

Submitting Credentials to Prizm

Return credentials through a secure channel only — never by email, chat, or in a shared notebook cell. Accepted delivery methods: Azure Key Vault (preferred — grant Prizm’s service principal Get/List access on the specific secrets, share only the vault URI and secret names), Prizm’s secure credential intake form, or a password-protected secrets-manager entry with the password relayed out-of-band.
Treat any credential that has ever been pasted into a notebook cell, chat message, or shared document as compromised — rotate it before use, even if submitting through Key Vault going forward.

Setting Up the Connection

Steps 1–3 happen in the Prizm portal; Steps 4–5 happen in Databricks.
1

Configure Your ADLS Source

Click + Add Source, select Azure Data Lake Storage, and complete:Prizm validates credentials on save and uses them both to read files and to list containers in the account. If no containers appear, confirm list access on the storage account.
2

Choose Your Compute Engine

Keep your Databricks cluster running during setup — a stopped cluster will not appear in the dropdown.
3

Connect Your Databricks Cluster

Scope the crawl with Containers to Include, Root Directory Path, and Include/Exclude Folder Patterns (glob-style, e.g. gold/*, */_staging/*). Excludes apply after includes are resolved.
The container dropdown lists every container in the account, not just ones your credentials can read — Prizm can’t filter this for a service principal or access token. Selecting an unreadable container shows a toast and auto-removes it from your selection.
Crawl limits: Partition Depth (how many subfolder levels to scan; 0 = root only), Max Files Per Directory, and an Incremental Mode toggle (scan only files changed since the last crawl).Delta Lake tables: when a folder contains a _delta_log, Prizm’s technical catalog step identifies it as a Delta table and catalogs the whole table as one asset (named after the table folder) instead of one asset per part file — reading it via Spark’s Delta format at the table root rather than as standalone Parquet. Updates trigger incremental rematerialization and metric refresh the same way as other ADLS assets. Plain Parquet folders without a _delta_log are unaffected.External storage details (Iceberg tables): if Iceberg tables in this source live in a different storage account than the one configured above, toggle Use External Storage Details and, if needed, Override External Storage Details to enter separate Storage Provider, Tenant ID, Client ID/Secret (or Storage Account Key/SAS Token), Storage Account Name, Resource Group, Container, and Directory Path. This is separate from the Unity Catalog materialization flow — it governs where Prizm reads existing Iceberg tables, not where it writes new ones.Advanced options: define per-asset file-matching rules (Asset Name, File Path, File Pattern) layered on top of Include/Exclude.
4

Set Up the Generic Notebook

A single generic notebook is used for quality-check jobs (separate from the two Unity Catalog notebooks above — all three run independently).
  1. Import the notebook file (provided by your Prizm account team) into your Databricks workspace via Workspace → right-click → Import.
  2. Generate an API token: Prizm platform → your organization → Tokens → Create Token.
  3. Get your MCP host value from your Prizm account team.
  4. Add the token and MCP host to the notebook’s designated fields — or, better, store them as Databricks secrets:
    and reference them instead of pasting values directly: dbutils.secrets.get(scope="prizm_notebook_secrets", key="access-token").
  5. Save the notebook to the path entered in Step 3.
Pasting the API token and MCP host directly into the notebook stores them in plain text — treat the notebook as a credential and restrict access accordingly.
5

Service Principal & Databricks CLI Configuration

Monitoring Your Jobs

Every job Prizm triggers appears in Databricks under Jobs & Pipelines, named by run date, a static keyword, and the source file name. Job status and logs behave like any other Databricks job. Once a job finishes, results return to Prizm automatically via webhook — no manual step required.

Pre-Go-Live Validation Checklist

Before the first production run of Iceberg materialization, confirm from within Databricks:
  • SHOW STORAGE CREDENTIALS; lists the credential from setup
  • SHOW EXTERNAL LOCATIONS; lists both locations with the correct URLs
  • DESCRIBE EXTERNAL LOCATION <name>; plus Test connection on each confirms read / read-write access
  • SHOW SCHEMAS IN <catalog_name>; confirms the target catalog/schema exist
  • SHOW GRANTS ON CATALOG <catalog_name>;, SHOW GRANTS ON SCHEMA ...;, SHOW GRANTS ON EXTERNAL LOCATION ...; confirm the execution identity’s grants
  • The execution identity can list/attach to the designated cluster (or launch a job cluster per the agreed policy)
  • A manual test run of a small known file succeeds: the table appears under <catalog>.<schema>, DESCRIBE DETAIL shows Iceberg-compatible properties, and the webhook payload reaches Prizm with a success status
  • External data access is enabled on the metastore, the Trino principal has EXTERNAL USE SCHEMA, and Trino can list/query the table via the Iceberg REST endpoint
Once confirmed, notify your Prizm implementation contact to schedule production onboarding.

Next Steps

What We Collect

Job types, compute metric types, and Delta Lake table handling.

FAQ

Common questions and troubleshooting.