Dynamic Views are specialized data layers that allow users to interact with specific, filtered subsets of information without accessing the original source. These tools enable secure data sharing, fine-grained access control, and high-volume data exploration across platforms like Databricks, Smartsheet, and Qlik Sense.
What is Dynamic Views?
The term refers to different mechanisms depending on the platform, but the core function remains constant: presenting the right data to the right user at the right time.
- Security and Governance: In Databricks Unity Catalog, it is a security feature used to mask data or restrict access to specific rows and columns.
- Process Management: In Smartsheet, it is a premium app that allows business owners to share specific elements of a project with vendors or internal teams without giving them access to the underlying sheet.
- Data Exploration: In Qlik Sense, it connects a base application to a template application, allowing users to refresh visualizations using specific subsets of large data sets.
- Visual Organization: Within the Obsidian ecosystem, a plugin provides masonry and grid-style card views for browsing notes and media libraries.
Why Dynamic Views matters
Using these views helps organizations manage data sensitivity while maintaining operational speed.
- Granular access control: Secure data at the row or column level, ensuring users only see what they are authorized to view.
- Reduced administrative cost: Manage critical processes with external vendors or mixed teams without them knowing about each other.
- Performance efficiency: Perform data aggregations on the database side to avoid latency when dealing with high-volume data.
- Data integrity: Guide users through multi-step processes with clear guardrails and required fields, preventing accidental data corruption.
How Dynamic Views works
The implementation process depends on whether the goal is security, project management, or analysis.
Column and row level security
In Databricks, users create views using SQL functions like current_user() or is_account_group_member(). When a query is run, the system checks the user identity and dynamically replaces sensitive data with redacted strings or filters out entire rows based on permissions. This strategy results in [no negative impact on the query performance] (Databricks on AWS).
Selective sharing
Smartsheet uses identity or condition-based controls to govern data access. It simplifies the user experience by emphasizing only critical information relevant to that user's role, such as a specific step in an approval workflow.
Template-based refreshing
Qlik Sense uses a three-part mechanism: 1. Template Apps: Sources that contain data connections and master visualizations. 2. Binding Expressions: Scripts that filter the template data based on selections made in a separate base app. 3. Dynamic Charts: Visualizations that users can manually refresh to see up-to-date data for specific subsets.
Best practices
Follow these guidelines to maintain security and system performance.
- Restrict direct table access: Do not grant users permission to read the raw tables referenced in a dynamic view. This ensures the security logic in the view cannot be bypassed.
- Use account-level groups: When working in Unity Catalog, prioritize
is_account_group_member()over workspace-level functions to ensure better compatibility with centralized data. - Apply data masking: Use SQL regular expressions to show partial data, such as email domains, while hiding the full identity of the user.
- Enable serverless compute: To use advanced data filtering in Databricks, verify that your [workspace is enabled for serverless compute] (Azure Databricks).
Common mistakes
- Runtime Version Mismatch: Attempting to read views using dedicated compute on [Databricks Runtime 15.3 or below] (Databricks on AWS) will result in failure.
- Using Standard Runtimes: Using
is_member()for Unity Catalog data. This function only evaluates workspace-level groups and ignores account-level memberships. - Static Thinking: Forgetting to refresh charts in analysis tools. Qlik Sense charts may display a "stale data" icon when the selection state in the base app no longer matches the last refresh.
- Over-sharing: Providing access to the underlying sheet in Smartsheet. The purpose of the view is to collaborate only on certain fields without exposing the source sheet.
Examples
Example scenario (Security):
A sales table contains user_id, email, and total_sales. A dynamic view is created so that "Auditors" see the full email, while all other users see the email domain only using a regexp_extract function.
Example scenario (Analysis): A marketer at a large retail chain uses a base app showing monthly sales logs. They connect a dynamic view to a template app containing granular daily weather data. By selecting "January" and a specific "Region," they refresh a dynamic chart to see if temperature spikes correlate with specific product purchases.
FAQ
Do dynamic views slow down my queries? In Databricks environments, the logic used to filter or redact columns has no negative impact on query performance during analysis.
When should I use a dynamic view instead of a standard view? Use a dynamic view when you need to show different data to different users from the same source. Standard views show the same fixed results to everyone who has access.
What compute resources are required for dynamic views? In Databricks, you must use a SQL warehouse, compute with standard access mode, or [Databricks Runtime 15.4 LTS or above] (Databricks on AWS) for dedicated access mode.
Can I use dynamic views in mobile apps? Platform support varies. For instance, dynamic views are not supported in the Qlik Analytics mobile app or Qlik Sense Desktop.
How do I refresh the data in a dynamic view? In analytical tools like Qlik, users refresh data manually via a refresh option on individual charts. In security-focused tools like Databricks, the data is dynamically filtered every time the view is queried based on the current user's identity.