數據表創建完成后,您可以使用腳本模式通過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 | 您在創建表時可以自定義的信息,采用 |