dbt-labs/dbt-core · error
update_tblproperties_for_uniform_iceberg is only supported i
Error message
update_tblproperties_for_uniform_iceberg is only supported in Databricks
What it means
The `update_tblproperties_for_uniform_iceberg` Jinja adapter method is implemented only for the Databricks adapter; when the inner typed adapter is any other type, the method panics with this `unimplemented!` message. Uniform Iceberg table-property management is a Databricks-specific feature, so the generic Adapter wrapper refuses to run it elsewhere. It is a capability gate, not a failure of your arguments.
Source
Thrown at crates/dbt-adapter/src/adapter/mod.rs:2867
/// Add UniForm Iceberg table properties.
///
/// https://github.com/databricks/dbt-databricks/blob/bfcb5c7c7714e97e67023119f674d2938b04acb0/dbt/adapters/databricks/impl.py#L280
///
/// ```python
/// def update_tblproperties_for_uniform_iceberg(
/// self, config: BaseConfig, tblproperties: Optional[dict[str, str]] = None
/// ) -> dict[str, str]
/// ```
#[tracing::instrument(skip(self, state), level = "trace")]
pub fn update_tblproperties_for_uniform_iceberg(
&self,
state: &State,
args: &[Value],
) -> Result<Value, minijinja::Error> {
match &self.inner {
Typed { adapter, .. } => {
if adapter.adapter_type() != AdapterType::Databricks {
unimplemented!(
"update_tblproperties_for_uniform_iceberg is only supported in Databricks"
)
}
let iter = ArgsIter::new(
"update_tblproperties_for_uniform_iceberg",
&["config"],
args,
);
let config_val = iter.next_arg::<&Value>()?;
let tblproperties_val = iter.next_kwarg::<Option<Value>>("tblproperties")?;
iter.finish()?;
let model_val = config_val.get_attr("model").map_err(|e| {
minijinja::Error::new(
minijinja::ErrorKind::InvalidArgument,
format!(
"update_tblproperties_for_uniform_iceberg: config.model is required: {e}"View on GitHub (pinned to 0267ce9170)
Solutions
- Run this code path only on Databricks; add an `adapter.type() == 'databricks'` guard around the call.
- Check that your profile/target selects the Databricks adapter when the models depend on Databricks features.
- For other platforms, use platform-native mechanisms to manage table properties instead of this Databricks-only helper.
Example fix
// before
{% do adapter.update_tblproperties_for_uniform_iceberg(config) %}
// after
{% if adapter.type() == 'databricks' %}
{% do adapter.update_tblproperties_for_uniform_iceberg(config) %}
{% endif %} Defensive patterns
Strategy: type-guard
Validate before calling
// Jinja
{% set is_databricks = adapter.type() == 'databricks' %} Type guard
fn is_databricks(a: &Adapter) -> bool {
a.adapter_type() == AdapterType::Databricks
} Try / catch
// Guard before the call; unimplemented! is not recoverable
{% if adapter.type() == 'databricks' %}
{% do adapter.update_tblproperties_for_uniform_iceberg(config) %}
{% endif %} Prevention
- Keep Databricks Uniform logic in databricks__ dispatched macros
- Validate the target adapter in CI before running Databricks-specific models
- Document adapter requirements in packages exposing this helper
When it happens
Trigger: Calling `adapter.update_tblproperties_for_uniform_iceberg(...)` from a macro/model while the active adapter is not Databricks (Snowflake, BigQuery, DuckDB, etc.).
Common situations: Running Databricks-specific models/materializations (that touch tblproperties for Uniform/Iceberg) against another warehouse; a shared package whose macros assume Databricks; profile misconfiguration pointing at the wrong adapter.
Related errors
- is_uniform is only supported in Databricks
- only available with Databricksadapter
- only available with Databricks adapter
- resolve_file_format is only supported in Databricks
- supports_create_or_replace is not implemented for {:?}
AI-assisted analysis of dbt-labs/dbt-core@0267ce9170 (2026-09-07).
Data as JSON: /api/errors/9b3a2c2ee9d94063.
Report an issue: GitHub.