<?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>topic Re: Partitioning vs Liquid Clustering (per-table): in Data Engineering</title>
    <link>https://community.databricks.com/t5/data-engineering/partitioning-vs-liquid-clustering-per-table/m-p/167248#M55657</link>
    <description>&lt;P&gt;Hey @AshokB, good question. To add on to what &lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/210897"&gt;@balajij8&lt;/a&gt;&amp;nbsp;and &lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/250064"&gt;@Satyasai&lt;/a&gt;&amp;nbsp;&amp;nbsp;already said:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;On combining PARTITION BY and CLUSTER BY:&lt;/STRONG&gt; you can't do it, as they are mutually exclusive. Delta will throw an error if you try to define both on the same table. Have to commit to one strategy per table.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;On whether keeping PARTITION BY hurts MV refresh:&lt;/STRONG&gt; the refresh itself isn't really affected, since incremental refresh cares about which rows changed upstream, not how the table is physically laid out. Where it matters most is after the refresh, in read performance and file management. If the partition column has any skew or high cardinality (something like customer_id or a fine grained timestamp), you'll end up with a ton of tiny partition folders and small files that never get cleaned up efficiently. Liquid Clustering doesn't have that problem because OPTIMIZE only rewrites the files that actually need re-clustering instead of touching a whole partition every time.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;On whether Liquid Clustering is redundant for an MV that only reads incremental deltas:&lt;/STRONG&gt;&amp;nbsp;Incremental refresh and physical layout are two completely different things. Incremental refresh is about which rows the engine needs to reprocess. Liquid clustering is about how the resulting files from the MV are arranged on storage once they're written. Even if only a tiny fraction of rows changed on a given run, those new rows still land as small, scattered files unless something comes along and compacts/co-locates them. That's exactly what liquid clustering does through OPTIMIZE. So skip it and your "incrementally refreshed" MV quietly turns into a small file mess over time even though the refresh logic is working exactly as intended.&lt;BR /&gt;&lt;BR /&gt;Additionally, combining LC + Predictive Optimization on UC managed tables handles the incremental re-clustering automatically and avoids the need for periodic OPTIMIZE jobs. It also takes care of VACUUM and ANALYZE the same way, so no manual maintenance scheduling is needed. A step further with CLUSTER BY AUTO, Predictive Optimization even picks the clustering keys based on query history, not just the re-clustering cadence. Just make sure to disable any existing scheduled OPTIMIZE jobs once this is on, running both is redundant.&lt;/P&gt;</description>
    <pubDate>Wed, 02 Sep 2026 06:49:20 GMT</pubDate>
    <dc:creator>VenuD</dc:creator>
    <dc:date>2026-09-02T06:49:20Z</dc:date>
    <item>
      <title>Partitioning vs Liquid Clustering (per-table):</title>
      <link>https://community.databricks.com/t5/data-engineering/partitioning-vs-liquid-clustering-per-table/m-p/167180#M55652</link>
      <description>&lt;P&gt;Can PARTITION BY and CLUSTER BY (Liquid Clustering) be used simultaneously on the same table? If we use only PARTITION BY, is there a negative performance impact on materialized-view refreshes in Silver/Gold? Since materialized views read only incremental delta files, is Liquid Clustering redundant in this scenario, or does it still provide benefits for file compaction and read optimization?&lt;/P&gt;</description>
      <pubDate>Tue, 01 Sep 2026 20:16:23 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/partitioning-vs-liquid-clustering-per-table/m-p/167180#M55652</guid>
      <dc:creator>AshokB</dc:creator>
      <dc:date>2026-09-01T20:16:23Z</dc:date>
    </item>
    <item>
      <title>Re: Partitioning vs Liquid Clustering (per-table):</title>
      <link>https://community.databricks.com/t5/data-engineering/partitioning-vs-liquid-clustering-per-table/m-p/167242#M55654</link>
      <description>&lt;P&gt;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/250185"&gt;@AshokB&lt;/a&gt;&amp;nbsp;PARTITION BY and CLUSTER BY cannot be used simultaneously on the same table. You can pick one strategy as Liquid Clustering cannot be combined with PARTITIONED BY. You can use CLUSTER BY over legacy partitioning for Silver and Gold layers. Liquid clustering functions as a flexible, self-tuning replacement of Partitioning and it eliminates partitioning rigidity. It&amp;nbsp;allows you to redefine clustering keys on the fly without rewriting the underlying data.&lt;/P&gt;&lt;P&gt;Traditional partitioning still works. You can take advantage of &lt;STRONG&gt;layout and query optimizations&lt;/STRONG&gt; on the table by using &lt;STRONG&gt;Liquid Clustering&lt;/STRONG&gt;. You can keep liquid clustering as default for all greenfield tables because traditional partitioning remains rigid, high maintenance and generally prone to performance degradation under heavy data skew. Liquid clustering is built to handle varied access patterns, skewed datasets and queries filtering on high cardinality columns without the risk of over partitioning.&lt;/P&gt;&lt;P&gt;Liquid Clustering is far from redundant in an incremental pipeline. While the engine only reads incremental delta files from upstream sources to refresh the view, liquid clustering dictates how that materialized view is physically organized on object storage for downstream consumers. It clusters similar records together to maximize data skipping, continuously compacts the small files generated by repeated incremental writes via OPTIMIZE, and allows the physical layout to evolve alongside consumption patterns. If you use &lt;STRONG&gt;CLUSTER BY AUTO&lt;/STRONG&gt;, Databricks dynamically identifies and tunes the optimal clustering keys based on the actual downstream query workloads&amp;nbsp; making it especially effective when multiple consumers query the Silver and Gold tables with differing filter requirements.&lt;/P&gt;&lt;P&gt;You can use below configs for good performance if feasible&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;ALTER TABLE workspace.files.files SET TBLPROPERTIES (
  delta.enableDeletionVectors = true,
  delta.enableRowTracking = true,
  delta.enableChangeDataFeed = true
);&lt;/LI-CODE&gt;&lt;P&gt;More details &lt;A href="https://docs.databricks.com/aws/en/tables/clustering#when-to-use-liquid-clustering" target="_self"&gt;here&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 02 Sep 2026 03:53:13 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/partitioning-vs-liquid-clustering-per-table/m-p/167242#M55654</guid>
      <dc:creator>balajij8</dc:creator>
      <dc:date>2026-09-02T03:53:13Z</dc:date>
    </item>
    <item>
      <title>Re: Partitioning vs Liquid Clustering (per-table):</title>
      <link>https://community.databricks.com/t5/data-engineering/partitioning-vs-liquid-clustering-per-table/m-p/167246#M55656</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/250185"&gt;@AshokB&lt;/a&gt;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;I Agree with&amp;nbsp;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/210897"&gt;@balajij8&lt;/a&gt;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Use Liquid Clustering on columns frequently used in WHERE clauses, join keys, or aggregation keys (e.g., CLUSTER BY (tenant_id, event_date)).&lt;/P&gt;&lt;P&gt;Traditional partitioning should generally only be used for legacy compatibility or extremely low-cardinality keys (such as year or environment) where file counts stay minimal.&lt;/P&gt;</description>
      <pubDate>Wed, 02 Sep 2026 05:56:53 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/partitioning-vs-liquid-clustering-per-table/m-p/167246#M55656</guid>
      <dc:creator>Satyasai</dc:creator>
      <dc:date>2026-09-02T05:56:53Z</dc:date>
    </item>
    <item>
      <title>Re: Partitioning vs Liquid Clustering (per-table):</title>
      <link>https://community.databricks.com/t5/data-engineering/partitioning-vs-liquid-clustering-per-table/m-p/167248#M55657</link>
      <description>&lt;P&gt;Hey @AshokB, good question. To add on to what &lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/210897"&gt;@balajij8&lt;/a&gt;&amp;nbsp;and &lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/250064"&gt;@Satyasai&lt;/a&gt;&amp;nbsp;&amp;nbsp;already said:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;On combining PARTITION BY and CLUSTER BY:&lt;/STRONG&gt; you can't do it, as they are mutually exclusive. Delta will throw an error if you try to define both on the same table. Have to commit to one strategy per table.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;On whether keeping PARTITION BY hurts MV refresh:&lt;/STRONG&gt; the refresh itself isn't really affected, since incremental refresh cares about which rows changed upstream, not how the table is physically laid out. Where it matters most is after the refresh, in read performance and file management. If the partition column has any skew or high cardinality (something like customer_id or a fine grained timestamp), you'll end up with a ton of tiny partition folders and small files that never get cleaned up efficiently. Liquid Clustering doesn't have that problem because OPTIMIZE only rewrites the files that actually need re-clustering instead of touching a whole partition every time.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;On whether Liquid Clustering is redundant for an MV that only reads incremental deltas:&lt;/STRONG&gt;&amp;nbsp;Incremental refresh and physical layout are two completely different things. Incremental refresh is about which rows the engine needs to reprocess. Liquid clustering is about how the resulting files from the MV are arranged on storage once they're written. Even if only a tiny fraction of rows changed on a given run, those new rows still land as small, scattered files unless something comes along and compacts/co-locates them. That's exactly what liquid clustering does through OPTIMIZE. So skip it and your "incrementally refreshed" MV quietly turns into a small file mess over time even though the refresh logic is working exactly as intended.&lt;BR /&gt;&lt;BR /&gt;Additionally, combining LC + Predictive Optimization on UC managed tables handles the incremental re-clustering automatically and avoids the need for periodic OPTIMIZE jobs. It also takes care of VACUUM and ANALYZE the same way, so no manual maintenance scheduling is needed. A step further with CLUSTER BY AUTO, Predictive Optimization even picks the clustering keys based on query history, not just the re-clustering cadence. Just make sure to disable any existing scheduled OPTIMIZE jobs once this is on, running both is redundant.&lt;/P&gt;</description>
      <pubDate>Wed, 02 Sep 2026 06:49:20 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/partitioning-vs-liquid-clustering-per-table/m-p/167248#M55657</guid>
      <dc:creator>VenuD</dc:creator>
      <dc:date>2026-09-02T06:49:20Z</dc:date>
    </item>
  </channel>
</rss>

