共用方式為


資訊結構描述

適用於:勾選為是 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) 圖表提供資訊架構檢視子集的概觀,以及它們彼此的關聯性。

信息架構的 ER 圖表

資訊架構視圖

名稱 描述
CATALOG_PRIVILEGES 列出在目錄中擁有許可權主體
CATALOG_PROVIDER_SHARE_USAGE 描述提供者的共享掛載至目錄。
CATALOG_TAGS 包含已套用至目錄的標記。
CATALOGS 描述目錄。
CHECK_CONSTRAINTS 保留供未來使用。
COLUMN_MASKS 描述目錄中資料表的欄位遮罩。
COLUMN_TAGS 包含表格內的欄位標記元數據。
COLUMNS 描述目錄中數據表和檢視的欄位。
CONNECTION_PRIVILEGES 列出具有外部連線許可權主體
CONNECTIONS 描述國外連結。
CONSTRAINT_COLUMN_USAGE 描述目錄中引用欄位的條件約束。
CONSTRAINT_TABLE_USAGE 描述在資料庫目錄中參考數據表的條件約束。
CREDENTIAL_PRIVILEGES 列出對憑證擁有許可權的主體。
CREDENTIALS 描述認證。
EXTERNAL_LOCATION_PRIVILEGES 列出具有外部位置許可權主體
EXTERNAL_LOCATIONS 描述外部位置。
INFORMATION_SCHEMA_CATALOG_NAME 傳回此資訊架構目錄的名稱。
KEY_COLUMN_USAGE 列出在目錄中主鍵或外鍵限制條件的欄位。
METASTORE_PRIVILEGES 列出具有目前中繼存放區許可權主體
METASTORES 描述目前的中繼存放區。
PARAMETERS 描述目錄中例程 (functions) 的參數。
PROVIDERS 描述提供者。
RECIPIENT_ALLOWED_IP_RANGES 為收件者列出允許的 IP 範圍。
RECIPIENT_TOKENS 列出收件者的令牌。
RECIPIENTS 描述收件者。
REFERENTIAL_CONSTRAINTS 描述目錄中定義的引用(外鍵)條件約束。
ROUTINE_COLUMNS 描述表值函式的結果欄位。
ROUTINE_PRIVILEGES 列出在目錄中具有例程許可權主體
ROUTINES 描述目錄中的例程(函式)。
ROW_FILTERS 描述目錄中數據表上的資料列篩選。
SCHEMA_PRIVILEGES 列出在目錄中具有架構許可權主體
SCHEMA_TAGS 包含架構內的架構標記元數據。
SCHEMA_SHARE_USAGE 描述共享中引用的結構。
SCHEMATA 描述目錄中的架構。
SHARE_RECIPIENT_PRIVILEGES 描述授與股份存取權的收件者。
SHARES 描述股份
STORAGE_CREDENTIAL_PRIVILEGES [已淘汰]列出具有記憶體認證許可權主體
STORAGE_CREDENTIALS [已淘汰]描述記憶體認證。
TABLE_CONSTRAINTS 描述目錄中所有主鍵和外鍵約束的元數據。
TABLE_PRIVILEGES 列出在目錄中具有數據表和檢視許可權主體
TABLE_SHARE_USAGE 描述資源共享中參考的資料表。
TABLE_TAGS 包含數據表內標記元數據的數據表。
TABLES 描述目錄內定義的數據表和視圖。
VIEWS 描述有關目錄中檢視的特定資訊。
VOLUMES 描述資料庫中定義的卷冊。
VOLUME_PRIVILEGES 列出在目錄中具有磁碟區許可權主體
VOLUME_TAGS 包含套用至磁碟區的磁碟區標記元數據。

備註

  • 資訊結構實作了特權感知過濾。 你自動只會看到你有 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