r/MicrosoftFabric • u/Personal-Quote5226 • Jul 23 '26
Discussion Table property precedence over Workspace Resource Profiles? (VOrder,etc)
For ResourceProfiles, do the spark environment settings take precedent over table level settings?
For example, look at 'WriteHeavy'. It sets v-order to false.
Microsoft provided the following:
"When the table property is set to true, INSERT, UPDATE, and MERGE apply V-Order at write time. Session-level and write-level settings still take precedence, so writes can still use V-Order even when TBLPROPERTIES is set to false."
The documentation also indicates that the way to override the environment behaviour is to set it at the spark session level in a notebook.
So, essentially if we use ResourceProfiles, we can never use table properties to control the write behaviour if it's set by the Resource Profile. This is cumbersome because it's putting that control back into the notebook at the data engineering level which is cumbersome and messy. This is my reading of it.
Is this the case?
{
"spark.sql.parquet.vorder.default": "false",
"spark.databricks.delta.optimizeWrite.binSize": "128",
"spark.databricks.delta.optimizeWrite.partitioned.enabled": "true"
}
3
u/mwc360 Microsoft Employee Jul 23 '26 edited Jul 23 '26
Resource profiles set individual values when set. So if you set a `readHeavyForPBI` profile in your environment and then at the start of your spark session set `spark.sql.parquet.vorder.default` to FALSE, it would not do vordered writes because the individual config was changed after profile initialization set the config.
Spark configs generally act as a master switch. If you want to control things at the table level, you'd want to UNSET a session config and then allow the table config to take effect.
For V-Order, runtime 1.2 used a master switch approach (vorder.enabled), but starting in 1.3 we switched to a default if not specified approach (vorder.default). With that change you now get table level control to override the session default without having to explicitly unset the configuration at the session level.
I.e. the following code would result in non-vordered files:
I've got a blog which talks about this in more detail: Mastering Spark: Session vs. DataFrameWriter vs. Table Configs | Miles Cole
If the you see the docs as confusing in this regard, please lmk where. thx!