<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>article Best Practices for Building the Presentation Layer in a Lakehouse in Technical Blog</title>
    <link>https://community.databricks.com/t5/technical-blog/best-practices-for-building-the-presentation-layer-in-a/ba-p/117425</link>
    <description>&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="shyam_rao_0-1746119066033.png" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/16406iA757713E3A6425AB/image-size/large?v=v2&amp;amp;px=999" role="button" title="shyam_rao_0-1746119066033.png" alt="shyam_rao_0-1746119066033.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="5"&gt;&lt;SPAN&gt;&lt;FONT face="times new roman,times"&gt;&lt;FONT face="tahoma,arial,helvetica,sans-serif"&gt;&lt;FONT face="arial,helvetica,sans-serif" size="4"&gt;The&lt;/FONT&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Presentation Layer&lt;/STRONG&gt; is the final stage in the Lakehouse data architecture. This layer contains curated, user-friendly data for business analysts, decision-makers, and BI applications. The data is generally organized into star schemas, aggregated summary tables, business views, and APIs, enabling integration with BI tools such as &lt;A href="https://www.databricks.com/product/business-intelligence" target="_blank" rel="noopener"&gt;Databricks AI/BI&lt;/A&gt;, Tableau, and Power BI for interactive analysis and reporting.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Key Features&lt;/SPAN&gt;&lt;/H3&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;User-Centric&lt;/STRONG&gt;&lt;SPAN&gt;: Tailored for analysts and decision-makers, providing clean and accessible data.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Abstracts Complexity&lt;/STRONG&gt;&lt;SPAN&gt;: Simplifies raw data into enriched, pre-aggregated views, encapsulating business logic.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Supports Reporting&lt;/STRONG&gt;&lt;SPAN&gt;: Optimizes for fast querying, visualizations, and calculated measures.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Secure&lt;/STRONG&gt;&lt;SPAN&gt;: Enables governed, masked, and role-based access to sensitive data.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;&lt;SPAN&gt;Best Practices&lt;/SPAN&gt;&lt;/H3&gt;
&lt;OL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Simplify Data&lt;/STRONG&gt;&lt;SPAN&gt;: Use business-friendly schemas with clear relationships.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Optimize Performance&lt;/STRONG&gt;&lt;SPAN&gt;: Precompute aggregations and materialize views for efficiency.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Enforce Security&lt;/STRONG&gt;&lt;SPAN&gt;: Implement role-based access control, data masking, and audit trails.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Monitor Usage&lt;/STRONG&gt;&lt;SPAN&gt;: Track query performance and usage patterns for optimization.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;The Presentation Layer bridges technical complexity and business needs, ensuring &lt;/SPAN&gt;&lt;STRONG&gt;fast, secure, and actionable data&lt;/STRONG&gt;&lt;SPAN&gt; for decision-making.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;How Databricks Fits into the Presentation Layer&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;Databricks has several tools to implement the presentation layer:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Delta Universal Format&lt;/STRONG&gt;&lt;SPAN&gt;: Store pre-aggregated or denormalized data for BI consumption.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Materialized Views&lt;/STRONG&gt;&lt;SPAN&gt;: Precompute results of complex queries and aggregations for optimized performance.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Databricks SQL&lt;/STRONG&gt;&lt;SPAN&gt;: Create queries, dashboards, and visualizations directly in Databricks.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Integration with BI Tools&lt;/STRONG&gt;&lt;SPAN&gt;: Connect Databricks directly with tools like Power BI, Tableau, or Looker for seamless visualization and reporting.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Unity Catalog (UC)&lt;/STRONG&gt;&lt;SPAN&gt;:&amp;nbsp; Unified data and AI governance for enhanced security and compliance.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;&lt;FONT color="#000000"&gt;&lt;SPAN&gt;How do I build my presentation layer?&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/H1&gt;
&lt;P&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;The presentation layer comprises queryable objects such as &lt;/SPAN&gt;&lt;STRONG&gt;tables&lt;/STRONG&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;STRONG&gt;materialized views,&lt;/STRONG&gt;&lt;SPAN&gt; and &lt;/SPAN&gt;&lt;STRONG&gt;views&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H2&gt;&lt;FONT color="#003366"&gt;&lt;U&gt;Materialized Views&lt;/U&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;H4&gt;What Are Materialized Views in Databricks?&lt;/H4&gt;
&lt;P&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;In Databricks SQL, materialized views are UC-managed tables that allow users to precompute results based on the latest version of data in source tables. CREATE and REFRESH operations on materialized views are powered by serverless DLT pipelines.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H4&gt;Why Use Materialized Views?&lt;/H4&gt;
&lt;H5&gt;&lt;FONT size="3"&gt;Performance Optimization&lt;/FONT&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Reduced Query Time&lt;/STRONG&gt;&lt;SPAN&gt;: Materialized views precompute and store the results of complex or computationally expensive queries. When users query the materialized view, they access the precomputed data, leading to faster query responses.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Efficient Aggregations&lt;/STRONG&gt;&lt;SPAN&gt;: Instead of recalculating aggregations (for example, sums, averages) each time, a materialized view can store these precomputed results. For repetitive queries, materialized views reduce compute overhead and optimize resources.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;&lt;FONT size="3"&gt;&lt;SPAN&gt;Simplified Querying&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Abstracts Complexity&lt;/STRONG&gt;&lt;SPAN&gt;: Users can query the materialized view without worrying about the underlying data's complexity or transformations. Transformations like joins, aggregations, and filters are encapsulated in the view.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Business-Friendly Data Models&lt;/STRONG&gt;&lt;SPAN&gt;: Materialized views can expose preprocessed data tailored for business use cases.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;&lt;FONT size="3"&gt;&lt;SPAN&gt;Incremental Updates&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;Many queries can be incrementally refreshed when running updates on materialized views using serverless pipelines. Incremental refreshes save compute costs by detecting changes in the data sources used to define the materialized view and incrementally computing the result.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;&lt;FONT size="3"&gt;&lt;SPAN&gt;Compatibility with BI Tools&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;Materialized views integrate well with BI tools (for example, Power BI, Tableau). They offer pre-aggregated or preprocessed datasets that speed up dashboard loading times.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;&lt;FONT size="3"&gt;&lt;SPAN&gt;Cost Savings&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Lower Compute Costs&lt;/STRONG&gt;&lt;SPAN&gt;: Precomputing results in materialized views reduces the need for repetitive expensive computations, saving on Databricks compute costs.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Resource Efficiency&lt;/STRONG&gt;&lt;SPAN&gt;: The cluster resources can be allocated more efficiently because fewer resources are needed to serve end-user queries.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;Limitations of Materialized Views&lt;/H4&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;Not real-time: Materialized views are not updated in real-time. The frequency of updates depends on your refresh schedule.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;Storage-overhead: Since materialized views store pre-computed data, they consume additional storage.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;How to Create and Refresh Materialized Views in Databricks&lt;/H4&gt;
&lt;H5&gt;&lt;FONT size="3"&gt;&lt;SPAN&gt;Create a Materialized View (&lt;/SPAN&gt;&lt;A href="https://docs.databricks.com/en/sql/language-manual/sql-ref-syntax-ddl-create-materialized-view.html" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;AWS&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;|&lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/databricks/sql/language-manual/sql-ref-syntax-ddl-create-materialized-view" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;Azure&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;|&lt;/SPAN&gt;&lt;A href="https://docs.databricks.com/gcp/en/sql/language-manual/sql-ref-syntax-ddl-create-materialized-view" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;GCP)&lt;/SPAN&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/H5&gt;
&lt;OL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;Write a query for your materialized view (for example, aggregations, joins).&lt;/SPAN&gt;&lt;/FONT&gt;
&lt;PRE&gt;&lt;FONT size="4"&gt;CREATE MATERIALIZED VIEW sales_by_region_mv&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4"&gt;AS&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;SELECT region, customer, item, SUM(sales) AS total_sales&lt;/SPAN&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;FROM transactions&lt;/SPAN&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;GROUP BY region&lt;/SPAN&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;CLUSTER BY AUTO;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;Note: &lt;/SPAN&gt;&lt;A href="https://www.databricks.com/resources/demos/tours/governance-uc/row-and-column-level-security-with-unity-catalog" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;Row-Level Security and Column-Level Masking&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt; can be defined on MVs.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H5&gt;&lt;FONT size="3"&gt;&lt;SPAN&gt;Refresh a Materialized View (&lt;/SPAN&gt;&lt;A href="https://docs.databricks.com/en/sql/language-manual/sql-ref-syntax-ddl-refresh-full.html" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;AWS&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;|&lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/databricks/sql/language-manual/sql-ref-syntax-ddl-refresh-full" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;Azure&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;|&lt;/SPAN&gt;&lt;A href="https://docs.databricks.com/gcp/en/sql/language-manual/sql-ref-syntax-ddl-refresh-full" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;GCP)&lt;/SPAN&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/H5&gt;
&lt;OL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;Refresh the materialized view periodically using a Databricks Workflows Job:&lt;/SPAN&gt;&lt;/FONT&gt;
&lt;PRE&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;REFRESH MATERIALIZED VIEW sales_by_region_mv;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;Configure the schedule with the SCHEDULE clause during CREATE or ALTER&lt;/SPAN&gt;&lt;/FONT&gt;
&lt;PRE&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;... SCHEDULE CRON '0 0 0 * * ? * ...&lt;BR /&gt;... SCHEDULE EVERY 2 HOURS ...&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;Note: Refresh can be performed in either &lt;/SPAN&gt;&lt;STRONG&gt;SYNC&lt;/STRONG&gt;&lt;SPAN&gt; or &lt;/SPAN&gt;&lt;STRONG&gt;ASYNC&lt;/STRONG&gt;&lt;SPAN&gt; mode.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H5&gt;&lt;FONT size="3"&gt;&lt;SPAN&gt;Monitoring Maintenance Activities&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/H5&gt;
&lt;PRE class="lia-indent-padding-left-30px"&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;SELECT&lt;/SPAN&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;FROM&lt;/SPAN&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;&amp;nbsp;event_log(TABLE(catalog.schema.table))&lt;/SPAN&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;WHERE&lt;/SPAN&gt;&lt;SPAN&gt; event_type&lt;/SPAN&gt; &lt;SPAN&gt;in&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'maintenance_progress', 'background_operation')&lt;/SPAN&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;ORDER BY&lt;/SPAN&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;&amp;nbsp;timestamp &lt;/SPAN&gt;&lt;SPAN&gt;desc&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;H4&gt;&lt;SPAN&gt;Improving Performance Using Materialized Views&lt;/SPAN&gt;&lt;/H4&gt;
&lt;OL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;Use Liquid Clustering to optimize the data layout and maximize query performance. Take advantage of &lt;/SPAN&gt;&lt;STRONG&gt;Predictive Optimization&lt;/STRONG&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;A href="https://docs.databricks.com/aws/en/optimizations/predictive-optimization" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;AWS&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;|&lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/databricks/optimizations/predictive-optimization" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;Azure&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;|&lt;/SPAN&gt;&lt;A href="https://docs.databricks.com/gcp/en/optimizations/predictive-optimization" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;GCP&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;) &lt;/SPAN&gt;&lt;SPAN&gt;and Auto Clustering.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;Creating a wide table, for example, including attributes from a dimension, can result in better data skipping based on column statistics.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;To generate optimized plans, specify constraints such as &lt;/SPAN&gt;&lt;A href="https://www.databricks.com/blog/primary-key-and-foreign-key-constraints-are-ga-and-now-enable-faster-queries" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;PRIMARY KEY..RELY&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt; and column constraints such as NOT NULL.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;H2&gt;&lt;FONT color="#003366"&gt;&lt;U&gt;Views&lt;/U&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;P&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;Enhance your dashboarding and reporting processes by creating and exposing views on top of dimension and fact tables. &lt;/SPAN&gt;&lt;STRONG&gt;Create a view on a table or a materialized view&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H4&gt;&lt;SPAN&gt;Views can be used to:&lt;/SPAN&gt;&lt;/H4&gt;
&lt;OL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Tailor the presentation&lt;/STRONG&gt;&lt;SPAN&gt;: Expose only essential attributes (for example, primary address).&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Simplify attribute representation&lt;/STRONG&gt;&lt;SPAN&gt;: ARRAY and STRUCT (and &lt;/SPAN&gt;&lt;A href="https://www.databricks.com/blog/introducing-open-variant-data-type-delta-lake-and-apache-spark" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;VARIANT&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;) types might not be compatible with all BI tools.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Create role-playing dimensions&lt;/STRONG&gt;&lt;SPAN&gt;: For example, shipping facility vs. receiving facility.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Use consistent formulas&lt;/STRONG&gt;&lt;SPAN&gt;: Encapsulate business logic.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Make extensible&lt;/STRONG&gt;&lt;SPAN&gt;: Easily include new calculated measures based on user request.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Focus on relevant data&lt;/STRONG&gt;&lt;SPAN&gt;: Use filters to include only the necessary data. For instance, exclude soft-deleted records or outdated versions based on your specific use case.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;H4&gt;&lt;SPAN&gt;Agile Data Modeling with Views&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;Views are beneficial in an agile environment, where business users frequently request new metrics. A well-designed Lakehouse architecture enables simple modifications, such as adding calculated columns in views. You also have the freedom to change the data representation in the backing table or materialized view. I have benefited from this design on multiple occasions.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Query Optimization Tip&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;When querying data, retrieve only the columns essential for analysis to optimize performance using predictive I/O and reduce fetch times.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;&lt;FONT color="#000000"&gt;&lt;SPAN&gt;Conclusion&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/H1&gt;
&lt;P&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;By following these guidelines, you can effectively design and optimize your Star Schema (or other models such as Business Views) in Databricks SQL, leveraging advanced features and best practices to enable high performance and scalability. &lt;/SPAN&gt;&lt;A href="https://www.databricks.com/product/databricks-sql" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;Get Started!&lt;/SPAN&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
    <pubDate>Thu, 08 May 2025 12:59:09 GMT</pubDate>
    <dc:creator>shyam_rao</dc:creator>
    <dc:date>2025-05-08T12:59:09Z</dc:date>
    <item>
      <title>Best Practices for Building the Presentation Layer in a Lakehouse</title>
      <link>https://community.databricks.com/t5/technical-blog/best-practices-for-building-the-presentation-layer-in-a/ba-p/117425</link>
      <description>&lt;P&gt;&lt;FONT size="4"&gt;&lt;SPAN&gt;The &lt;STRONG&gt;Presentation Layer&lt;/STRONG&gt; is the final stage in the Lakehouse data architecture. This layer contains curated, user-friendly data for business analysts, decision-makers, and BI applications. The data is generally organized into star schemas, aggregated summary tables, business views, and APIs, enabling integration with BI tools such as &lt;A href="https://www.databricks.com/product/business-intelligence" target="_blank" rel="noopener"&gt;Databricks AI/BI&lt;/A&gt;, Tableau, and Power BI for interactive analysis and reporting.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 08 May 2025 12:59:09 GMT</pubDate>
      <guid>https://community.databricks.com/t5/technical-blog/best-practices-for-building-the-presentation-layer-in-a/ba-p/117425</guid>
      <dc:creator>shyam_rao</dc:creator>
      <dc:date>2025-05-08T12:59:09Z</dc:date>
    </item>
    <item>
      <title>Re: Best Practices for Building the Presentation Layer in a Lakehouse</title>
      <link>https://community.databricks.com/t5/technical-blog/best-practices-for-building-the-presentation-layer-in-a/bc-p/118516#M632</link>
      <description>&lt;P&gt;Great summary of the core principles and tools for building an effective Lakehouse presentation layer. The emphasis on user-centric design, performance optimization, and strong security is spot on-especially as organizations increasingly rely on BI and AI to drive decisions. Materialized views and business-friendly schemas are key to bridging the gap between raw data and actionable insights, ensuring that analysts and decision-makers can trust and easily consume the data.&lt;/P&gt;
&lt;P&gt;One point that resonates is the focus on incremental updates and monitoring. These practices not only reduce costs but also make the architecture agile, allowing teams to adapt quickly to changing business needs. And, as you note, integrating with leading BI tools and leveraging Databricks SQL and Unity Catalog for governance ensures that data is both accessible and secure.&lt;/P&gt;
&lt;P&gt;Finally, the reminder to keep data models simple, monitor usage, and optimize for query performance is a must for any modern data team. This layer truly is the bridge between technical complexity and business value-well captured!&lt;/P&gt;
&lt;P&gt;Great Job Shyam!&lt;/P&gt;
&lt;P&gt;Cheers, Lou.&lt;/P&gt;</description>
      <pubDate>Thu, 08 May 2025 14:20:55 GMT</pubDate>
      <guid>https://community.databricks.com/t5/technical-blog/best-practices-for-building-the-presentation-layer-in-a/bc-p/118516#M632</guid>
      <dc:creator>Louis_Frolio</dc:creator>
      <dc:date>2025-05-08T14:20:55Z</dc:date>
    </item>
  </channel>
</rss>

