すべてのプロダクト
Search
ドキュメントセンター

DataWorks:スクリプトモードでのモデリング

最終更新日:Jun 21, 2026

データテーブルを作成した後、スクリプトモードで FML ステートメントを使用して、そのフィールドとパーティションを設定します。

はじめに

FML (fast modeling language) は、ディメンショナルモデリング用のデータテーブルを迅速に構築するための SQL ライクな言語です。その構文は標準 SQL に基づいています。DataWorks では、データモデリング機能により、論理テーブルの設計とその実装が分離されています。つまり、基盤となるビッグデータエンジンの詳細を考慮せずにモデルを設計できます。モデリングエンジンは、FML で定義されたスキーマを使用してエンジン上の操作を実行します。論理テーブルを物理テーブルにマテリアライズするために、モデリングエンジンは FML をターゲットエンジンの特定の SQL 方言に変換してから、ステートメントを実行します。

前提条件

DataWorks は現在、FML を使用したデータテーブルの作成をサポートしていません。まず、ビジュアルインターフェイスで論理テーブルを作成する必要があります。詳細については、次のトピックを参照してください。

制限事項

  • DataWorks は、FML ステートメントを使用したデータテーブルの作成やテーブル名の変更をサポートしていません。既存のデータテーブルの編集のみが可能です。たとえば、テーブルフィールドの編集、関連の設定、パーティションの設定などを行えます。

  • FML ステートメントを使用してデータテーブルをマテリアライズできるのは、MaxCompute、Hologres、または Hive エンジンのみです。

  • FML は SQL キーワードを予約語として使用します。テーブル名または列名が予約語の場合は、バッククォート (``) で囲んでエスケープする必要があります。そうしないと、テーブルの作成時にエラーが発生します。

FML エディターへの移動

  1. Dimensional Modeling ページで、ディレクトリツリーの対象テーブルの名前をダブルクリックします。

  2. 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

ターゲットエンジンに同じ名前のテーブルがすでに存在する場合、CREATE TABLE ステートメントは、if not exists を指定しないとエラーを返します。if not exists を指定すると、同じ名前のテーブルが既に存在するかどうかにかかわらず、ステートメントは成功します。

alias

データテーブルまたは列のオプションのエイリアス。通常、表示名として使用されます。

tableType

作成するテーブルのタイプ。FML ステートメントを使用して、次のタイプのテーブルを作成できます。

  • ディメンションテーブル

    • 通常ディメンションテーブル (NORMAL):ディメンションテーブルを作成する際のデフォルトのタイプ。

    • 階層ディメンションテーブル (LEVEL):省、市、区など、階層関係を持つデータを格納します。

    • 列挙ディメンションテーブル (ENUM):男性と女性など、一般的な列挙可能な値を格納します。

  • ファクトテーブル

    • トランザクションファクトテーブル (TRANSACTION):ファクトテーブルを作成する際のデフォルトのタイプ。トランザクションレベルでファクトを記録し、最もアトミックなデータを格納します。

    • 定期スナップショットファクトテーブル (PERIODIC_SNAPSHOT):時間の経過とともに規則的で予測可能なファクトレコードを格納します。年初来や全期間など、特定の期間にわたってメジャーを集計します。このテーブルのデータは通常、増分更新されます。

    • 累積スナップショットファクトテーブル (ACCUMULATING_SNAPSHOT):トランザクションスナップショットを格納し、予測不可能な期間のライフサイクルを通じてデータを追跡します。

  • DWS テーブル:特定のメトリックをマージするために使用される論理集計テーブル。その定義構文は、ディメンションテーブルおよびファクトテーブルと同様です。

  • ルックアップテーブル:コードテーブルとも呼ばれ、標準的な業界固有の属性のコードを格納します。たとえば、電力会社は、電力供給契約タイプのコードを標準化するためにルックアップテーブルを使用する場合があります。

comment

テーブルのコメント。推奨最大長は 1,024 文字です。

columnDefinition

テーブル列の定義。次のパラメータを含めることができます。

  • col_name:列の名前。英字、数字、アンダースコア (_) を含めることができます。列名が FML 予約語の場合は、バッククォート (``) で囲む必要があります。

  • alias:列のオプションのエイリアス。通常、表示名として使用されます。

  • dataType:データ型。FML は、BIGINT、STRING、VARCHAR、CHAR、DECIMAL、DATETIME などのデータ型をサポートしています。

  • category:列のカテゴリ。ディメンショナルモデリングでは、列は属性 (ATTRIBUTE)、メジャー (MEASUREMENT)、または関連 (CORRELATION) のいずれかになります。

説明

FML はテーブルをマテリアライズする前に設計することをサポートしているため、列を定義せずにテーブルを作成できます。

constraint

テーブル構造の制約を定義します。有効な値は次のとおりです。

  • 主キー制約 (PrimaryConstraint):形式は PRIMARY KEY(col1, col2) です。列 col1, col2 は、事前に定義されたフィールドである必要があります。

  • ディメンション制約 (DimConstraint):形式は DIM KEY(col1, col2) REFERENCES table_name(ref1, ref2) です。

  • 階層制約 (LevelConstraint):階層ディメンションテーブルでのみ有効です。階層内のレベルを定義します。

PARTITIONED BY

テーブルパーティションを作成します。

WITH

テーブルを作成する際に、key=value 形式でカスタム情報を指定できます。keyvalue は、FML キーワードとの競合を防ぐために、単一引用符で囲む必要があります。WITH 句の拡張プロパティは、FML ステートメントをマテリアライズするエンジンによって解析されます。