Here are helpful tips/tricks:
Based on the latest Databricks documentation and internal guides, it is currently not possible to grant external access (via open source Unity Catalog APIs or credential vending) to Unity Catalog views (i.e., objects with kind=TABLE_VIEW). Only the following table types are supported for external access:
- Managed Delta tables (kind=TABLE_DELTA)
- External tables (kind=TABLE_EXTERNAL)
- External Delta tables (kind=TABLE_DELTA_EXTERNAL)
Views (TABLE_VIEW) are explicitly excluded from this capability, which is enforced by both the Databricks Unity Catalog APIs and supporting documentation. This restriction exists because the external access mechanism (“credential vending”) generates temporary, finely-scoped credentials to allow direct cloud storage access. This only works for tables where data is physically represented as files in storage (like Delta/external tables), but not for views, which are virtual constructs and may reference multiple tables or have complex logic requiring a Databricks Compute environment to resolve/execute.
Key Points:
- No configuration exists (at the workspace, catalog, or per-view level) to override this restriction for views. You cannot grant external access to views via Unity Catalog’s current external access API, even using the “EXTERNAL USE SCHEMA” privilege.
- This limitation is documented: “Only Unity Catalog managed tables and Unity Catalog external tables are supported.” (See Databricks documentation on credential vending.)
- Attempting to access a view as an external client results in the specific error:
cannot be accessed from outside of Databricks Compute Environment due to its kind being TABLE_VIEW...
(as you observed).
Workarounds or Alternatives
There is no supported workaround to expose Unity Catalog views externally. Common suggestions include: - “Workaround is normally using the single user mode for now as in those environments, we don’t need to support isolation so most apis are allowed unless incompatible with UC metastore design.” However, this only applies to compute access within Databricks—not to credential vending or external system access. - Materialize the view’s logic into a managed or external Delta table (using CREATE TABLE AS SELECT) if you need to make derived data available externally. - Use Delta Sharing if you need to share query results or tables outside of Databricks (for tabular datasets only, not for views as logical constructs).
Why This Restriction?
- Views require SQL engine resolution—they are not materialized and so their results can’t be provisioned by directly reading files in cloud storage. This distinction underlies why only tables, not views, are accessible via external open APIs.
Summary Table
Object Type in Unity Catalog |
Supported for External Access (Open APIs/Credential Vending)? |
Workaround |
Managed Delta Table |
Yes |
N/A |
External Table (Delta/other) |
Yes |
N/A |
Table View (TABLE_VIEW) |
No |
None (see above) |
Materialized View |
No (as of last update) |
None |
Conclusion
- It is not possible to enable external access (globally or per-object) for Unity Catalog views today.
- No configuration or workaround exists to bypass this limitation: only select table types are eligible for external access.
- If external access is required for view results, you must materialize the view’s logic into a supported table type.
If your use case requires this feature, consider Delta Sharing for table-based external access.
Hope this help, Louis.