信息架構

適用於:檢查標示為是Databricks SQL 檢查標示為是 Databricks Runtime 10.4 LTS 和更新版本檢查標示為是僅限 Unity 目錄

INFORMATION_SCHEMA是 SQL 標準架構,提供於 Unity 目錄上建立的每個目錄中。

在信息架構中,您可以找到一組檢視,描述您有權查看之架構目錄已知的物件。 目錄的信息架構 SYSTEM 會傳回中繼存放區內所有目錄的對象相關信息。 信息架構系統數據表不包含有關 hive_metastore 物件的元數據。

信息架構的目的是提供以 SQL 為基礎的自我描述 API 給元數據。

信息架構的實體關聯性圖表

下列實體關聯性 (ER) 圖表提供資訊架構檢視子集的概觀,以及它們彼此的關聯性。

信息架構的 ER 圖表

資訊結構描述檢視

名稱 描述
CATALOG_PRIVILEGES 列出具有目錄許可權的主體。
CATALOG_PROVIDER_SHARE_USAGE 描述掛接至目錄的提供者共用。
CATALOG_TAGS 包含已套用至目錄的標記。
目錄 描述目錄。
CHECK_CONSTRAINTS 保留供未來使用。
COLUMN_MASKS 描述目錄中數據表數據行的數據行遮罩。
COLUMN_TAGS 包含數據表內的數據行標記元數據。
描述目錄中數據表和檢視的數據行。
CONNECTION_PRIVILEGES 列出具有外部連線許可權的主體。
連接 描述外部連線。
CONSTRAINT_COLUMN_USAGE 描述參考目錄中數據行的條件約束。
CONSTRAINT_TABLE_USAGE 描述參考目錄中數據表的條件約束。
EXTERNAL_LOCATION_PRIVILEGES 列出具有外部位置許可權的主體。
EXTERNAL_LOCATIONS 描述外部位置。
INFORMATION_SCHEMA_CATALOG_NAME 傳回此資訊架構目錄的名稱。
KEY_COLUMN_USAGE 列出目錄內主鍵或外鍵條件約束的數據行。
METASTORE_PRIVILEGES 列出具有目前中繼存放區許可權的主體。
METASTORES 描述目前的中繼存放區。
參數 描述目錄中例程 (functions) 的參數。
供應商 描述提供者。
RECIPIENT_ALLOWED_IP_RANGES 列出收件者允許的IP範圍。
RECIPIENT_TOKENS 列出收件者的令牌。
收件者 描述收件者。
REFERENTIAL_CONSTRAINTS 描述目錄中定義的引用(外鍵)條件約束。
ROUTINE_COLUMNS 描述數據表值函式的結果數據行。
ROUTINE_PRIVILEGES 列出在目錄中具有例程許可權的主體
ROUTINES 描述目錄中的例程(函式)。
ROW_FILTERS 描述目錄中數據表的數據列篩選。
SCHEMA_PRIVILEGES 列出在目錄中具有架構許可權的主體。
SCHEMA_TAGS 包含架構內的架構標記元數據。
SCHEMA_SHARE_USAGE 描述共用中參考的架構。
SCHEMATA 描述目錄中的架構。
SHARE_RECIPIENT_PRIVILEGES 描述授與共用存取權的收件者。
股票 描述共用。
STORAGE_CREDENTIAL_PRIVILEGES 列出具有記憶體認證許可權的主體。
STORAGE_CREDENTIALS 描述記憶體認證。
TABLE_CONSTRAINTS 描述目錄中所有主要和外鍵條件約束的元數據。
TABLE_PRIVILEGES 列出在目錄中具有數據表和檢視許可權的主體。
TABLE_SHARE_USAGE 描述共用中參考的數據表。
TABLE_TAGS 包含數據表內標記元數據的數據表。
描述目錄內定義的數據表和檢視表。
視圖 描述有關目錄中檢視的特定資訊。
描述目錄中定義的磁碟區。
VOLUME_PRIVILEGES 列出在目錄中具有磁碟區許可權的主體。
VOLUME_TAGS 包含套用至磁碟區的磁碟區標記元數據。

備註

雖然標識碼在 SQL 語句中參考時不區分大小寫,但它們會以的形式 STRING儲存在信息架構中。 這表示您必須使用儲存標識碼的案例來搜尋它們,或使用 ilike 之類的函式。

範例

> 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