{"record":{"id":"13f92db4311b8351","repo":"dbt-labs/dbt-core","slug":"external-volume-is-required","errorCode":null,"errorMessage":"external_volume is required","messagePattern":"external_volume is required","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-adapter/src/relation/relation_impl.rs","lineNumber":890,"sourceCode":"\n                base_location.push_str(&format!(\n                    \"/{}/{}\",\n                    self.schema_as_str().unwrap_or_default(),\n                    self.identifier_as_str().unwrap_or_default()\n                ));\n\n                if let Some(subpath) = runtime_model_config\n                    .get_attr(\"base_location_subpath\")?\n                    .as_str()\n                {\n                    base_location.push_str(&format!(\"/{subpath}\"))\n                }\n\n                let external_volume = runtime_model_config\n                    .get_attr(\"external_volume\")?\n                    .as_str()\n                    .ok_or_else(|| {\n                        minijinja::Error::new(\n                            minijinja::ErrorKind::NonKey,\n                            \"external_volume is required\",\n                        )\n                    })?\n                    .to_string();\n\n                let iceberg_ddl_predicates = format!(\n                    \"\\nexternal_volume = '{external_volume}'\\ncatalog = 'snowflake'\\nbase_location = '{base_location}'\\n\"\n                );\n\n                // Indent each line by 10 spaces\n                let result = iceberg_ddl_predicates\n                    .lines()\n                    // the first argument is an empty string that then get 10 spaces padding\n                    .map(|line| format!(\"{:indent$}{line}\", \"\", indent = 10))\n                    .collect::<Vec<String>>()\n                    .join(\"\\n\");\n","sourceCodeStart":872,"sourceCodeEnd":908,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-adapter/src/relation/relation_impl.rs#L872-L908","documentation":"While assembling Iceberg DDL options on Snowflake, no external_volume could be found on the runtime model config — CREATE ICEBERG TABLE requires an external volume, so the statement cannot be constructed and the missing-key error is raised.","triggerScenarios":"Thrown at crates/dbt-adapter/src/relation/relation_impl.rs:890 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set external_volume in the model's config block","Provide a project/profile-level default external volume","Validate all required iceberg keys up front with a clear config error"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0267ce9170576975b76b64ce856b2e5848e96617","analyzedAt":"2026-09-07T21:53:39.732Z","contentChangedAt":"2026-09-07T21:53:39.732Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}