Row Filters
Recent items mentioning Row Filters across the Databricks ecosystem — releases, news, videos, and community Q&A. Updated hourly.
Row filters surface mostly in governance discussion this month: a Unity Catalog demo covers governing AI agents with access policies, user-defined functions, and role filters to control data and model interactions 2. Community threads from mid-October focus on fail-closed ABAC policies with early error detection 3 and on the security questions of using Lakehouse Federation to skip Bronze ingestion 4. dbt-databricks v1.13.0 adds no row-filter feature, but its view_update_via_alter change alters Unity Catalog views in place and fails on Hive metastore views when use_materialization_v2 is off 1.
Generated daily from the 4 most recent items mentioning Row Filters. Click any [N] to jump to the source.
The v1.13.0 release adds additive merging of tblproperties across config levels and opt-in invocation telemetry, and it includes a breaking change for some view models: views now use one materialization regardless of use_materialization_v2, so view_update_via_alter alters Unity Catalog views in place and fails on Hive metastore views. Fixes cover view updates with dropped or renamed columns, Predictive Optimization for auto_liquid_cluster models, transaction: false hooks, materialized view recreation on schema drift, and persist_docs.columns warnings and comments.
TutorialsGoverning AI Agents with Unity Catalog and Unity Gateway on Databricks | Unity Catalog Demo
The video demonstrates how to govern AI agents using Unity Catalog and Unity Gateway on Databricks. It shows setting up access policies, user defined functions, and role filters to control data and model interactions.
Fail-closed ABAC Policies and early Error detection
Hello everybody, since we are gonna use ABAC Policies extensively in the near Future I was wondering If there is a good/Standard method of checking all tables for conflictinf Policies? Let's slay WE have a catalog-wide RowFilter Policy in place and implement a Schema-level row Filter Policy inside this catalog. Is there an easy way to find all tables this causes conflicting row-filters without going through alles tables as each relevant Principal? submitted by /u/Coco_Games [link] [comments]
Using Lakehouse Federation to bypass Bronze ingestion for near real-time pipelines; feasibility and security questions
(Used AI to refine my question better and structure the question) TL;DR: Trying to reduce our pipeline runtime to under 3 minutes by bypassing Bronze ingestion and using Lakehouse Federation. Looking for: A setup guide/checklist I can hand to our IT Admins to establish the initial connection. Advice on a security flaw: How do I prevent users from bypassing our custom Unity Catalog RLS/PII controls simply by materializing (CTAS) data out of the federated catalog? Hey everyone, I’m working through a performance optimization challenge in Azure Databricks and wanted to bounce my intended approach and a few assumptions off the community. The Context -> The Workflow: 10–15 users trigger a Databricks job multiple times a day, sometimes concurrently. -> The Process: We pull data from a source database, apply transformations, and write out about 8 tables into Unity Catalog using a Medallion architecture. The largest table is 20M rows, which we ingest incrementally with a 2-day lookback. -> The Bottleneck: The pipeline currently takes 4–5 minutes (optimized down from 9). Our target is under 3 minutes. Since the source-to-Bronze ingestion alone takes 1.5 to 2 minutes, I am looking into Lakehouse Federation. If we bypass the initial ingestion and query the frequently refreshed datasets directly from a federated catalog, we should comfortably hit that sub-3-minute target. Before I commit to this architecture, I’m hoping to validate a couple of things since I don't have an admin playground environment to test this out myself: Division of Setup / Admin Privileges Because I don't have Account Admin access, I want to understand exactly what I need to ask IT to configure versus what I can do myself. Is there a clear guide or documentation that outlines the standard division of setup? For example, do admins just need to create the CONNECTION object and grant me CREATE FOREIGN CATALOG on the metastore, leaving me to map the schemas? I just want to know the exact steps so I can submit a precise IT ticket. RLS & PII via Control Tables on Federated Data I am independently working on refactoring our data security posture. Currently, we manage PII and Row-Level Security (RLS) using custom "control" tables in Unity Catalog. This works perfectly for our native Databricks tables. My assumption with Federation is that while I can apply these same functions to the foreign tables, anyone with read access to the federated catalog could simply run a CREATE TABLE AS SELECT... (materialize the data), bypassing the dynamic filters entirely and exposing the raw PII. -> Is my understanding of this design flaw accurate? -> Has anyone successfully implemented control-table-based RLS on federated catalogs, or is there a better, more standard way to handle this in a federated setup? Appreciate any insights or reality checks from anyone who has implemented this in production! submitted by /u/aRTy_k1d [link] [comments]
Databricks ABAC Now Follows Your Data: External Engines and Views
Databricks ABAC row filters and column masks now reach external Apache Spark (GA) and Unity Catalog views (Beta) submitted by /u/Lenkz [link] [comments]
Build a Document Knowledge Base on Databricks
Locking the folder does not lock the answer. On Databricks you can grant the volume, the table, and the search index. None of those grants decides which page a person may read. The index does not apply the row filter. Someone who can query it gets whatever the question asks for.The label on each chunk has to be set by your own service. The person asking does not get to choose it. submitted by /u/Worth_Phase1358 [link] [comments]
ABAC on Views is now in Beta in Azure Databricks!
Until now, ABAC row filters and column masks were primarily applied to tables. With this update, the same policy model can now be enforced when sensitive data is exposed through views as well. September 2026 - Azure Databricks | Microsoft Learn For example, a view such as sales.customer_view can expose customer data while a policy masks sensitive columns or filters rows depending on the querying principal. Here's a simple example of usage: CREATE POLICY mask_pii APPLY TO all_account_users EXCEPT admins ON tables.tagged sensitivity=high USING COLUMN MASK mask_email(email) Notice one thing - because Unity Catalog considers views as tables, use ON TABLE view_name to target a specific view. There is no separate FOR or ON VIEW syntax. I’m really glad to finally see this feature. I’ve personally been waitng for it for quite some time, since our team relies heavily on views as the consumption layer ;) submitted by /u/szymon_dybczak [link] [comments]
Time-Travel on Tables with ABAC RLS/CM - Beta
Hey all! I’m a Product Manager at Databricks who just launched Beta support for time travel on tables with ABAC policies. You can now query historical data using VERSION AS OF or TIMESTAMP AS OF while keeping ABAC row-filters and column-masks enforced. The main design question we faced was how policies should interact with historical schemas. We chose a security-first model: Load the requested historical snapshot. Match it against the current schema. Validate the match. Renamed or dropped historical columns block the query to prevent data leak, while columns added later are excluded from the result. Apply the active ABAC policies to the historical data and return query results. Here's an example: How time-travel works on ABAC-protected tables This fail-closed behavior is especially important when a policy references a column that did not exist historically. Treating the missing column as null or assigning a default could change the row filter’s result and expose restricted rows. Databricks blocks the query instead. Why fail-closed behavior is critical I'm curious if the community has any feedback on the approach. Any input will be valuable as we step towards the GA milestone. For more information, please see our documentation . submitted by /u/alicks22 [link] [comments]
Row-level security for a RAG agent: what Unity Catalog enforces, and what you have to build
Ontology ranked the snippet. I wrote the gate I wanted before trusting a Genie space.
A commercial user asked what yield was last season. Two definitions live in the same lakehouse. One is plot-level, moisture-adjusted, borders out. The other is as-harvested, and a dashboard still uses it. Genie returned the second number. Not a hallucination. OntoRank did what it does: creator, usage, link to a certified asset, freshness. The loud dashboard won. Nobody had certified the measure the board pack is allowed to quote. That is the failure I care about. A green demo is not a release gate. What I actually require before that space faces a user who will paste the sentence into Slack: Golden questions written before the space exists. If you write them after you have tuned instructions, you are scoring an overfit prompt. Benchmarks are not instructions. Genie does not learn from the benchmark SQL. The number lives in a Metric View. A column comment and a knowledge-store formula are hints. Ontology will rank all three. Only the Metric View is a contract every surface compiles. Same KPI from MEASURE(), from the certified dashboard, and from Genie. If they disagree, the space stays off Slack. Permissions checked as the asker. Inside a Genie Agent, compute is the author’s warehouse and data access is the end user. That split does not automatically hold in Teams, Copilot on maker credentials, or a Databricks App on its default service principal. The row filter still runs. It runs for whoever showed up on the SQL. A written kill line. I use Databricks’ “above 80% before UAT” as the hold line, not the ship line. Ship is 90% and zero fails on a regulated definition. Any miss on that definition takes the space down. A person does that. Not a service principal. Genie Code can draft the Metric View and the MERGE. ZeroOps can propose a fix and wait for Approve. Neither owns the definition. If the job stays green for eleven days because a key was slightly wrong, that is still your incident. I wrote the four pieces up so I would stop re-explaining this in reviews. Argue the 80 vs 90 line if you want. I will not move a regulated KPI to “looks fine in the demo.” submitted by /u/Worth_Phase1358 [link] [comments]
Row-level security when the filter column is not on your table
Managing Row-Level Security (RLS) vs. Views: Performance impacts at scale
Best practice to enforcing row-level security across multiple catalogs sharing same schema structure
Read this if you use Streaming Tables in Lakeflow Spark Declarative Pipelines
🚀 We’re excited to announce that Lakeflow Spark Declarative Pipelines (SDP) now supports creating “vanilla” (i.e., non STREAMING) MANAGED TABLES and writing to them via one or more append flows , using the new CREATE TABLE ... FLOW ( SQL ) and create_table() (Python) APIs . What is this Beta? This Beta allows creating a managed table that is populated by append flows: CREATE TABLE ... FLOW (SQL) / create_table() + @append_flow (Python) create a managed table written by one or more flows. Fan multiple sources into one table — declare several flows targeting the same managed table. Full table surface works: partitioning, liquid clustering, expectations, row filters, table properties, and private (pipeline-local) tables. import_checkpoint on append_flow , which migrates an existing Structured Streaming workload into a pipeline without reprocessing the source — the flow imports the query's existing checkpoint and resumes from the last committed offset with state intact. Example (Python): from pyspark import pipelines as dp dp.create_table("combined") dp.append_flow(target="combined") def from_a(): return spark.readStream.table("source_a") u/dp.append_flow(target="combined") def from_b(): return spark.readStream.table("source_b") Example (SQL): CREATE TABLE events PARTITIONED BY (bucket) FLOW INSERT BY NAME SELECT id, bucket FROM STREAM read_files('abfss://my_path', format => 'json'); Where do we need help? We are in Beta, so there might be some rough edges. Please take this for a spin and share your feedback here . What’s next? Managed Tables support for other flow types (AutoCDC, Replace Using, and Replace Where) is coming soon! Learn more CREATE TABLE ... FLOW (SQL reference) — https://docs.databricks.com/aws/en/ldp/developer/ldp-sql-ref-create-table-flow create_table (Python reference) — https://docs.databricks.com/aws/en/ldp/developer/ldp-python-ref-create-table import_checkpoint on append_flow — https://docs.databricks.com/aws/en/ldp/developer/ldp-python-ref-append-flow Questions, feedback, or help: comment below or share feedback in the form: https://forms.gle/7bGP5FYN7P1Z4WP27 submitted by /u/SlightImagination250 [link] [comments]
Beyond embedding: How to secure AI/BI Dashboards for every viewer
A single AI/BI dashboard can now serve every viewer securely: one entitlements table plus the signed embed token's __aibi_external_value control row-level access per viewer, so teams avoid duplicating dashboards or repeating filters across queries. Access is driven by identity-provider group membership rather than manually maintained user lists, and the pattern layers default-deny protections—masked columns, refused tokens for unentitled viewers, and Unity Catalog row filters—for defense in depth.
Ingest image in databricks for powerbi ? a poc and any idea welcome
Spent some time this week on a POC that started from a business constraint: about 3,000 photos to ingest every week, sensitive enough that we can't just drop a shareable link in a dashboard, and they need to end up in Power BI where people already work, with row-level security. That combination rules out the easy answer. No public links, no loose files in blob storage floating around outside governance. The images had to live inside Delta on Databricks so Unity Catalog could handle access control, and Power BI had to be able to render them directly from the table. What the simple poc below does: Reads the images with Spark's binaryFile source (recursive lookup, glob filter on *.jpg) to pull path, modification time, size and raw bytes into one DataFrame. Encodes the binary content as a base64 data URL, so the image itself lives inside the row instead of behind a link. Then the actual blocker: Power BI caps text fields at roughly 32,766 characters, and a real photo's base64 string blows straight past that. So each string gets split into ~32,000-character segments and exploded into multiple rows, each tagged with its index and total length. On the Power BI side, a single DAX measure puts it back together in the right order before rendering: Image_concat = IF( HASONEVALUE(images_in_delta[image_name]), CONCATENATEX( images_in_delta, images_in_delta[segment], , images_in_delta[split_index] ) ) Not elegant, but it's what gets a full-resolution image through a hard platform limit without touching the sensitivity requirement. The PySpark side, stripped to what matters — reading the images and doing the chunking: from pyspark.sql import functions as F from pyspark.sql import DataFrame #READ ALL THE IMAGES images_df = spark.read.format("binaryFile") \ .option("recursiveFileLookup", "true") \ .option("pathGlobFilter", "*.jpg") \ .load("/Volumes/main/image_ingest/image_sample") def add_base64url_from_image_binary(df: DataFrame, max_len: int = 32000) -> DataFrame: df_with_b64 = df.select( "*", F.concat(F.lit("data:image/jpg;base64,"), F.base64(F.col("content"))).alias("base64url") ) df_with_split_info = df_with_b64.select( "*", F.ceil(F.length(F.col("base64url")) / F.lit(max_len)).cast("int").alias("num_segments"), F.length(F.col("base64url")).alias("total_length") ) df_split = ( df_with_split_info .withColumn( "split_index", F.explode(F.sequence(F.lit(0), F.col("num_segments") - 1)) ) .select( "*", F.substring( F.col("base64url"), F.col("split_index") * max_len + 1, F.least(F.lit(max_len), F.col("total_length") - F.col("split_index") * max_len) ).alias("segment") ) .drop("base64url", "content") ) return df_split def add_image_name(df : DataFrame) -> DataFrame : return df.withColumn("image_name", F.regexp_replace(F.col("path"),".*/([^/]+)$", "$1")) df_images = add_base64url_from_image_binary(images_df) df_images = add_image_name(df_images) df_images.write.mode("overwrite").format("delta") \ .option("mergeSchema", "true") \ .saveAsTable("main.image_ingest.images_in_delta") Nothing here is exotic engineering — the interesting part was realizing early that the constraint wasn't really "how do we store images in Delta," it was "how do we get a sensitive image through Power BI's text field limit without ever exposing it outside the governed table." Once that was clear, the chunking workaround fell out naturally. At 3,000 images a week this holds up. If volume goes up meaningfully, I'd want to revisit whether inlining every image is still the right call versus resolving binary content on demand. Curious if others have hit the same Power BI ceiling with sensitive image data and landed on something cleaner than manual chunking. Have you any other idea than this ? submitted by /u/Data-space_men [link] [comments]
Your Row Filter Works. The Agent Just Isn't Who It's Filtering
How to ground Genie Agents in both structured data and documents without losing governance
Ground Genie Agents across structured data and unstructured Unity Catalog Volumes so a single agent can answer questions across all of your data. By enforcing governance at the catalog layer rather than the model layer, agents run under the user's identity to filter every answer through Unity Catalog object privileges, row filters, and column masks.
Introduces catalogs.yml v2 support, a skip_optimize config for opting out of post-materialization OPTIMIZE, and Rust kernel backend for SQL warehouses. Fixes numerous incremental model bugs around constraints and tags, but now requires --full-refresh to apply changes to primary/foreign key expressions.
Barracuda makes security logs conversational with Genie
Barracuda Managed XDR now uses Genie to enable natural language search of security logs, letting analysts investigate threats across thousands of customers without SQL or schema expertise. Unity Catalog's row-level security enforces tenant isolation at the data layer, ensuring safe multi-tenant threat detection.
NewsUnity Catalog Fine-Grained Access Controls on External Engines
Unity Catalog enables fine-grained access controls (FGAC) defined once to be enforced consistently across Databricks and external engines like Apache Spark. External engines can also create and write to UC-managed tables, benefiting from centralized governance, automatic optimization, and transactional safety.
What is row-level security?
Row-level security filters table data by user identity, role, or session context, ensuring each person sees only the rows they are authorized to access across dashboards, notebooks, APIs, and other tools. Effective RLS depends on clear access logic, reliable keying columns, separate read/write controls, and testing across multiple user roles, and is most effective as part of layered governance.
Transforming solar and wind maintenance reports with Genie and AI agents
Plenitude now converts unstructured solar and wind maintenance PDFs into a unified, queryable data model using Databricks Genie and AI agents. This enables natural-language querying and visualizations across plants, accelerating multi-plant analysis and laying the groundwork for predictive maintenance.
Introducing Cross-Engine ABAC
Unity Catalog now enforces attribute-based access controls (ABAC) on external engines, allowing you to define tag-based row filters and column masks once for enforcement from any engine. This centralized governance at the catalog layer, built on Iceberg REST Catalog scan APIs, ensures policies are enforced before data reaches the engine.
v1.12.0 adds metric views, row filters, and Python UDFs as new materializations, along with SCHEDULE EVERY and TRIGGER ON UPDATE refresh modes for materialized views and streaming tables. databricks_tags now merge additively across hierarchy levels instead of child replacing parent (breaking change), and the release includes fixes for metric view validation, pydantic v1 compatibility, and streaming table refresh scheduling.
Backstage with Lakebase, part 2
Lakebase enables running production OLTP applications like Backstage on a serverless Postgres surface within Databricks, offering 1-second database branching and sub-4-second point-in-time recovery for schema migrations. Unity Catalog unifies governance for operational databases, providing single SQL query auditing, automatic row-level security propagation to branches, and zero-ETL cost attribution for FinOps.
What is the recommended approach to enforce row-level security in Unity Catalog for external BI tool
TutorialsGoverned Tags & Data Classification in Databricks | ABAC Foundations
Databricks now offers governed tags and automated data classification to identify sensitive information like PII. This enables Attribute-Based Access Control (ABAC) policies for masking or hiding data based on user roles, without altering query patterns.
dbt-databricks v1.12.0a1 introduces row filter functionality for implementing row-level access controls and adds support for metric views. These features expand SQL modeling capabilities within the Databricks environment.
TutorialsSponsored by: ThoughtSpot | Drive Self-Service Adoption Through the Roof with Embedded Analytics
The video demonstrates how ThoughtSpot's cloud-based embedded analytics platform integrates with Databricks to enable self-service search, natural language AI queries, and interactive data apps. It also features a customer case study from Emerald detailing how they scaled embedded reporting and row-level security for hundreds of thousands of users.
NewsAdvanced Governance with Collibra on Databricks
The video demonstrates how to integrate Collibra with Databricks Unity Catalog for advanced enterprise data governance. It showcases capabilities such as automated metadata ingestion, data profiling, lineage tracking, and the enforcement of row-level security and column-level masking policies.