Hi @nidhin,
What youāre saying is basically correct for a Unity Catalog-enabled Lakeflow Spark Declarative Pipelines setup. In that model, pipelines publish streaming tables and materialized views into the target catalog and schema, the data is stored using the managed storage location for the containing schema or catalog, and the docs explicitly say that the LOCATION property is not supported when defining the table. That means there isnāt a supported way to make the pipeline-managed output itself a true Unity Catalog external table with its own LOCATION clause. See Use Unity Catalog with pipelines.
So if the requirement is really "I want control over where the managed data lives," the recommended pattern is to set a managed storage location at the schema or catalog level and let the pipeline write there. That keeps you on the happy path for SDP while still giving you predictable storage placement. The same Unity Catalog pipelines doc above is the key reference for that behaviour.
If the requirement is "I need external systems to consume this dataset," I would usually not jump straight to rewriting the table as an external table. Databricks now recommends either external data access for streaming tables and materialized views for modern clients, or Compatibility Mode for older or path-oriented clients. External data access is the nicer option when the client supports the REST APIs because it avoids a full data copy and gives read-after-write consistency, whereas Compatibility Mode creates a read-only copy at a chosen location and is better when broad client compatibility matters more than immediacy or storage efficiency. The high-level guidance is also summarised in Access Databricks data using external systems.
If you truly need an actual external Delta table as the contract, I'd frame that as a downstream serving pattern rather than as the SDP-owned output. In other words, let SDP own the authoritative managed table, then populate a separate external table from it with a downstream job if you have a hard requirement for CREATE TABLE ... LOCATION. That keeps the pipeline aligned with the documented UC model and isolates the "external table" decision to a serving layer instead of your core transformation layer.
For a Gold SCD2 dimension, my default preference would be to keep the authoritative Gold table as the native UC-managed SDP output and only add an external-facing representation if there is a concrete downstream need. If users just need to read it externally, external data access is usually the best first choice, with Compatibility Mode as the fallback for older clients. I'd only choose a downstream rewrite into a separate external table when you specifically need cloud-path-based ownership or an external-table contract that other platforms depend on. This will give you the best balance of correctness, governance, and operational simplicity for an SCD2 dimension.
Hope this helps.
If this answer resolves your question, could you mark it as āAccept as Solutionā? That helps other users quickly find the correct fix.
Regards,
Ashwin | Delivery Solution Architect @ Databricks
Helping you build and scale the Data Intelligence Platform.
***Opinions are my own***