適用於:
Databricks SQL
Databricks Runtime 10.4 LTS 及以上
Unity Catalog 目錄
在 SYSTEM 目錄中,INFORMATION_SCHEMA 是一個 SQL 標準模式,提供有關中繼儲存庫中所有目錄物件的元資料。 它不包含關於 hive_metastore 物件的元資料。
另外,每個在 Unity Catalog 建立的目錄也會自動包含一個描述該目錄中物件的元資料的 information_schema。
這兩種資訊結構都會自動篩選結果,只包含你擁有 Unity 目錄權限的物件。 此行為與其他 Azure Databricks 系統資料表不同。 詳見 資訊結構系統資料表如何處理權限。
資訊結構的目的是提供一個基於 SQL 的、權限感知且自我描述的 API,以便存取目錄中繼資料。
資訊結構系統資料表如何處理權限
system.information_schema 與其他系統資料表不同的是,它實作了自動篩選功能。 這表示你只會看到 Unity 目錄中你有權限存取的物件(目錄、結構、資料表、欄位等)。 如果你的權限改變,你在資訊架構中看到的內容也會相應改變。 例如,當你查詢 information_schema.tables時,只有你有權限查看的資料表的列會回傳。
和其他系統資料表一樣,你需要明確且USESELECT有權限才能存取和查詢資訊結構。
信息架構的實體關聯性圖表
下列實體關聯性 (ER) 圖表提供資訊架構檢視子集的概觀,以及它們彼此的關聯性。
資訊架構視圖
備註
- 資訊結構實作了特權感知過濾。 你自動只會看到你有 Unity 目錄權限存取的物件。 詳見 資訊結構系統資料表如何處理權限。
- 某些目錄元數據變更可能需要手動
REPAIR TABLE同步處理,才能反映在信息架構中。 如需詳細資訊,請參閱REPAIR TABLE。 - 除了資料欄位和標記名稱 以外的 所有標識符都會以小寫儲存在資訊結構中
STRING。 若要提升查詢效能,請避免在標識符數據欄上使用LOWER()或UPPER()等函式。 相反地,使用小寫值直接比較標識符。 - 若要防止查詢逾時,請在查詢資訊架構時套用選擇性篩選條件(例如
WHERE table_catalog = 'main' AND table_schema = 'default')。 如需可用來作為每個資訊架構數據表篩選條件之數據行的完整清單,請參閱上述檔。- 請注意,
LIMIT目前不支援下推操作,因此雖然它可以縮減結果,但無法提升效能。
- 請注意,
範例
> SELECT table_name, column_name
FROM information_schema.columns
WHERE data_type = 'DOUBLE'
AND table_schema = 'information_schema';
以下是使用系統層級資訊架構數據表的工作流程範例。
如果您想要檢視過去 24 小時內建立的所有數據表,您的查詢看起來可能如下所示。
> SELECT table_name, table_owner, created_by, last_altered, last_altered_by, table_catalog
FROM system.information_schema.tables
WHERE datediff(now(), last_altered) < 1;
如果您想要檢視每個架構中有多少個數據表,請考慮下列範例。
> SELECT table_schema, count(table_name)
FROM system.information_schema.tables
WHERE table_schema = 'tpch'
GROUP BY table_schema
ORDER BY 2 DESC