添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Azure Databricks 上的所有限制都必須依賴 Delta Lake。

Lakeflow 宣告式流程具有類似的概念,稱為期望值。 請參閱 通過管線期望來管理資料品質

Azure Databricks 上的強制限制條件

違反條件約束時,交易會失敗並出現錯誤。 支援兩種類型的條件約束:

NOT NULL :表示特定數據行中的值不可以是 null。 CHECK :表示每個輸入數據列的指定布爾表達式必須為 true。

如果先前的寫入器版本小於 3,加入條件約束會自動升級數據表寫入器通訊協定版本。 請參閱 Delta Lake 功能相容性和通訊協定 ,以了解數據表通訊協定版本控制,以及升級通訊協定版本的意義。

在 Azure Databricks 中設定 NOT NULL 條件約束

當您建立資料表時,您可以在架構中指定 NOT NULL 條件約束。 使用 NOT NULL 命令來移除或新增 ALTER TABLE ALTER COLUMN 條件約束。

CREATE TABLE people10m (
  id INT NOT NULL,
  firstName STRING,
  middleName STRING NOT NULL,
  lastName STRING,
  gender STRING,
  birthDate TIMESTAMP,
  ssn STRING,
  salary INT
ALTER TABLE people10m ALTER COLUMN middleName DROP NOT NULL;
ALTER TABLE people10m ALTER COLUMN ssn SET NOT NULL;

NOT NULL 條件約束新增至數據表之前,Azure Databricks 會確認所有現有的數據列都滿足條件約束。

如果您在結構內巢狀數據行上指定 NOT NULL 條件約束,父結構也必須不是 Null。 陣列或對應類型中的嵌套欄不接受 NOT NULL 條件約束。

請參閱 CREATE TABLE [USING]ALTER TABLE ALTER COLUMN

在 Azure Databricks 中設定 CHECK 條件約束

您可以使用 CHECKALTER TABLE ADD CONSTRAINT 命令來管理 ALTER TABLE DROP CONSTRAINT 條件約束。 ALTER TABLE ADD CONSTRAINT 先確認所有現有的數據列都符合條件約束,再將它新增至數據表。

CREATE TABLE people10m (
  id INT,
  firstName STRING,
  middleName STRING,
  lastName STRING,
  gender STRING,
  birthDate TIMESTAMP,
  ssn STRING,
  salary INT
ALTER TABLE people10m ADD CONSTRAINT dateWithinRange CHECK (birthDate > '1900-01-01');
ALTER TABLE people10m DROP CONSTRAINT dateWithinRange;

請參閱 ALTER TABLE ADD CONSTRAINTALTER TABLE DROP CONSTRAINT

CHECK 條件約束會在 DESCRIBE DETAILSHOW TBLPROPERTIES 命令的輸出中公開為數據表屬性。

ALTER TABLE people10m ADD CONSTRAINT validIds CHECK (id > 1 and id < 99999999);
DESCRIBE DETAIL people10m;
SHOW TBLPROPERTIES people10m;
              停用檢查條件約束

在 Databricks Runtime 15.4 LTS 和更新版本中,您可以使用 DROP FEATURE 命令,從數據表中移除檢查條件約束,並降級數據表通訊協定。

請參閱 刪除 Delta Lake 資料表功能和降級資料表協議

宣告主鍵和外鍵關聯性
  • Databricks Runtime 11.3 LTS 和更高版本提供主鍵和外鍵約束功能,並在 Databricks Runtime 15.2 和更高版本中完全公開發佈。
  • 主鍵和外鍵約束需要 Unity Catalog 和 Delta Lake。
  • 您可以在 Unity 目錄資料表中的欄位上使用主鍵和外鍵關聯性。 主鍵和外鍵僅供參考,且不會強制執行。 外鍵必須參考另一個數據表中的主鍵。 資訊索引鍵條件約束可藉由支援 查詢優化來改善效能。

    您可以在資料表建立期間,將主鍵和外鍵宣告為數據表規格子句的一部分。 在 CTAS 語句中不允許使用此條款。 您也可以將條件約束新增至現有的數據表。

    CREATE TABLE T(pk1 INTEGER NOT NULL, pk2 INTEGER NOT NULL,
                    CONSTRAINT t_pk PRIMARY KEY(pk1, pk2));
    CREATE TABLE S(pk INTEGER NOT NULL PRIMARY KEY,
                    fk1 INTEGER, fk2 INTEGER,
                    CONSTRAINT s_t_fk FOREIGN KEY(fk1, fk2) REFERENCES T);
    

    您可以查詢 information_schema 或使用 DESCRIBE,以取得指定目錄中套用條件約束方式的詳細數據。

  • ALTER TABLE
  • ADD CONSTRAINT
  • DROP CONSTRAINT
  • CONSTRAINT 子句