データテーブルを作成した後、スクリプトモードで FML ステートメントを使用して、そのフィールドとパーティションを設定します。
はじめに
FML (fast modeling language) は、ディメンショナルモデリング用のデータテーブルを迅速に構築するための SQL ライクな言語です。その構文は標準 SQL に基づいています。DataWorks では、データモデリング機能により、論理テーブルの設計とその実装が分離されています。つまり、基盤となるビッグデータエンジンの詳細を考慮せずにモデルを設計できます。モデリングエンジンは、FML で定義されたスキーマを使用してエンジン上の操作を実行します。論理テーブルを物理テーブルにマテリアライズするために、モデリングエンジンは FML をターゲットエンジンの特定の SQL 方言に変換してから、ステートメントを実行します。
前提条件
DataWorks は現在、FML を使用したデータテーブルの作成をサポートしていません。まず、ビジュアルインターフェイスで論理テーブルを作成する必要があります。詳細については、次のトピックを参照してください。
制限事項
-
DataWorks は、FML ステートメントを使用したデータテーブルの作成やテーブル名の変更をサポートしていません。既存のデータテーブルの編集のみが可能です。たとえば、テーブルフィールドの編集、関連の設定、パーティションの設定などを行えます。
-
FML ステートメントを使用してデータテーブルをマテリアライズできるのは、MaxCompute、Hologres、または Hive エンジンのみです。
-
FML は SQL キーワードを予約語として使用します。テーブル名または列名が予約語の場合は、バッククォート (
``) で囲んでエスケープする必要があります。そうしないと、テーブルの作成時にエラーが発生します。
FML エディターへの移動
-
Dimensional Modeling ページで、ディレクトリツリーの対象テーブルの名前をダブルクリックします。
-
Table Details ページで、Script Mode をクリックします。
Script Mode タブの FML エディターでは、現在のテーブルの作成に使用される FML ステートメントを表示できます。また、テーブルのフィールドを設定または変更することもできます。詳細については、「ターゲットデータテーブルを設定する」をご参照ください。
-- モデルが物理テーブルに公開された後、テーブル名は変更できません。これは、事前承認、公開、公開後の各段階で適用されます。 CREATE DIM TABLE dim_ec_pub_staff_df ALIAS '地理的行政区画ディメンションテーブル' ( id ALIAS '行政区画 ID' STRING COMMENT '行政区画 ID', name ALIAS '行政区画名' STRING COMMENT '行政区画名', `level` ALIAS '行政区画レベル。1: 国; 2: 省/自治区/直轄市; 3: 市; 4: 区/県' INT COMMENT '行政区画レベル。1: 国; 2: 省/自治区/直轄市; 3: 市; 4: 区/県', country_id ALIAS '国 ID' STRING COMMENT '国 ID', country_name ALIAS '国名' STRING COMMENT '国名', province_id ALIAS '省/自治区/直轄市 ID' STRING COMMENT '省/自治区/直轄市 ID', province_name ALIAS '省/自治区/直轄市名' STRING COMMENT '省/自治区/直轄市名', city_id ALIAS '市 ID' STRING COMMENT '市 ID', city_name ALIAS '市名' STRING COMMENT '市名', district_id ALIAS '区/県 ID' STRING COMMENT '区/県 ID', district_name ALIAS '区/県名' STRING COMMENT '区/県名', ds ALIAS 'ビジネス日付、yyyymmdd' STRING COMMENT 'ビジネス日付、yyyymmdd' ) COMMENT '地理的行政区画ディメンションテーブル' WITH('life cycle'='1000');
ターゲットデータテーブルの設定
便宜上、テーブルを設定するためのすべてのステートメントは、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 |
テーブルのコメント。推奨最大長は 1,024 文字です。 |
|
columnDefinition |
テーブル列の定義。次のパラメータを含めることができます。
説明
FML はテーブルをマテリアライズする前に設計することをサポートしているため、列を定義せずにテーブルを作成できます。 |
|
constraint |
テーブル構造の制約を定義します。有効な値は次のとおりです。
|
|
PARTITIONED BY |
テーブルパーティションを作成します。 |
|
WITH |
テーブルを作成する際に、 |