資料表建立完成後,您可以使用指令碼模式通過FML語句配置表的欄位及分區資訊。本文為您介紹如何使用FML語句配置資料表的相關內容。
前提條件
DataWorks目前不支援通過FML語言建立資料表,您需要提前使用可視化介面建立好維度資料表、明細表、匯總表。
建立維度資料表,詳情請參見建立邏輯模型:維度資料表。
建立明細表,詳情請參見建立邏輯模型:明細表。
建立匯總表,詳情請參見建立邏輯模型:匯總表。
背景資訊
FML(Fast Modeling Language)是用於在維度建模領域快速構建資料表的一門類SQL語言,其文法採用了類SQL的標準文法。DataWorks資料建模的設計與實現解耦,在設計過程中,您無需考慮各個巨量資料引擎的實現方式,建模引擎會根據FML語言定義的Schema去驅動底層各個資料引擎的執行和操作,僅在實際物化(即把設計的邏輯錶轉換為底層引擎的物理表)階段,建模引擎會根據物化的選擇,將FML語言轉換為對應資料引擎可識別的SQL文法,並提交任務節點執行相關語句。
使用限制
DataWorks目前不支援通過FML語言建立資料表或修改表名稱,您只能對已建立的資料表進行相關編輯操作。例如,編輯表欄位、配置關聯關係、配置表的分區等。
DataWorks目前僅支援通過FML語言將設計的資料表物化至MaxCompute、Hologres及Hive引擎。
FML語言將SQL中的關鍵字作為保留字,如果您的資料表或資料表的列使用了關鍵字命名,則需要使用
``
符號進行轉義,否則建立表會產生報錯。
進入目標表的FML編輯頁面
在維度建模頁面,雙擊分類樹下對應的表名稱。
在表詳情頁單擊代碼模式。
在代碼模式頁簽的FML編輯地區,您可以查看當前表的建表FML語句。同時,您也可以配置或修改當前表的相關欄位,詳情請參見配置目標資料表。
配置目標資料表
為了方便查看,所有配置表的語句均體現在建立資料表語句(CREATE TABLE
)的格式中,實際上DataWorks的資料建模不支援使用FML語句建立表。您在實際使用時,僅參考定義表內容(例如,定義約束、分區等)的語句即可。配置目標表的FML語句格式如下。
--建立新表
CREATE <table_type> TABLE
IF NOT EXISTS
--表名
<table_name> [ALIAS <alias>]
--定義列屬性
<col_name> [ALIAS <alias>] <datatype> [<category>] [COMMENT <comment>] [WITH (<key>=<value>,....)]
--定義約束
PRIMARY KEY (<col_name>),
--維度約束
CONSTRAINT <constraint_name> DIM KEY (<col_name>) REFERENCES <ref_table_name> (<ref_table_col_name>),
--層級約束
CONSTRAINT <constraint_name> LEVEL <col_name:(<col_name>)>, --分組約束
CONSTRAINT <constraint_name> COLUMN_GROUP(<col_name>,...),
--定義備忘
COMMENT 'comment'
--定義分區
PARTITION BY (col DATATYPE COMMENT 'comment' WITH ('key'='value',...), ...)
--定義屬性
WITH ('key'='value', 'key1'='value1', ...)
;
tableType
: dimDetailType? DIM
| factDetailType? FACT
| CODE
| DWS
;
dimDetailType
: NORMAL
| LEVEL
| ENUM
;
factDetailType
: TRANSACTION
| AGGREGATE
| PERIODIC_SNAPSHOT
| ACCUMULATING_SNAPSHOT
| CONSOLIDATED
;
comment
: COMMENT 'comment'
;
參數 | 描述 |
tableName | 資料表的名稱。推薦命名由英文字母、數字及底線(_)組成,長度為128個字元。 |
if not exists | 當您的目標引擎中已存在同名表,如果不指定 說明 當您的引擎中已經存在同步表時,指定了 |
alias | 資料表或資料表中列的別名,通常用於定義資料表的中文名稱。該參數為選擇性參數。 |
tableType | 建立的表所屬的類型。目前僅支援使用FML語句建立如下類型的表:
|
comment | 表的備忘資訊。推薦備忘資訊的長度為1024字元。 |
columnDefinition | 資料表列的定義。可以包含如下參數:
說明 FML語句支援先設計後物化資料表,因此新建立的表可以不設定列資訊。 |
constraint | 定義表結構的約束情況,取值如下:
|
Partitioned BY | 用於建立表的分區。 |
WITH | 您在建立表時可以自訂的資訊,採用 |