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

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

最終更新日:Feb 28, 2026

データテーブルを作成した後、スクリプトモードを使用して、FML 文でテーブルの列とパーティション情報を設定できます。このトピックでは、FML 文を使用してデータテーブルを設定する方法について説明します。

概要

Fast Modeling Language (FML) は、ディメンションモデリング用のデータテーブルを迅速に構築するために使用される SQL ライクな言語です。その構文は標準 SQL に基づいています。DataWorks では、ディメンションモデリングによって設計と実装が分離されます。設計段階では、さまざまなビッグデータエンジンの具体的な実装詳細を考慮する必要はありません。モデリングエンジンは、FML で定義されたスキーマを使用して、基盤となるエンジンでの操作を駆動します。論理テーブルを物理テーブルに変換するプロセスであるマテリアライズの際にのみ、エンジンは FML をターゲットエンジンが認識できる SQL 構文に変換し、その文を実行するノードを送信します。

前提条件

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

制限事項

  • FML を使用してデータテーブルを作成したり、テーブル名を変更したりすることはできません。列の変更、リレーションシップの設定、パーティションの設定など、既存のデータテーブルの編集のみが可能です。

  • FML で設計されたデータテーブルは、MaxCompute、Hologres、Hive エンジンにのみマテリアライズできます。

  • FML は SQL キーワードを予約語として使用します。テーブル名または列名がキーワードである場合は、エラーを避けるためにバックティック (``) で囲む必要があります。

FML エディターへのアクセス

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

  2. [フィールド管理] ページで、Script Mode をクリックします。

    Script Mode タブの FML エディターで、現在のテーブルの作成に使用された FML 文を表示できます。また、テーブルの列を設定または変更することもできます。詳細については、「ターゲットデータテーブルの設定」をご参照ください。PixPin_2025-12-19_16-18-47

ターゲットデータテーブルの設定

デモンストレーションのため、このトピックでは完全な CREATE TABLE 構文を使用した設定例を示します。ただし、DataWorks では 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

ターゲットエンジンに同じ名前のテーブルが既に存在する場合、if not exists 句がないと `CREATE TABLE` 操作はエラーを報告します。if not exists 句を使用すると、同じ名前のテーブルが存在するかどうかに関係なく、操作は成功します。

alias

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

tableType

テーブルタイプ。FML は次のテーブルタイプをサポートしています。

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

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

    • 階層ディメンションテーブル (LEVEL):都道府県、市、区など、階層関係を持つデータを格納するために使用されます。

    • 列挙型ディメンションテーブル (ENUM):性別など、頻繁に使用される列挙値を格納するために使用されます。

  • ファクトテーブル

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

    • 定期スナップショットファクトテーブル (PERIODIC_SNAPSHOT):定期的で予測可能な間隔でファクトレコードを格納します。年初来などの期間にわたるメトリックを集計します。このタイプのテーブルのデータは通常、増分更新されます。

    • 累計スナップショットファクトテーブル (ACCUMULATING_SNAPSHOT):トランザクションデータのスナップショットを格納し、予測不可能なライフサイクルにわたるイベントの進捗を追跡するために使用されます。たとえば、注文スナップショットテーブルには、支払い、発送、配送のタイムスタンプを含めることができます。

  • DWS テーブル:特定のメトリックを結合するために使用される論理集計テーブル。定義構文はディメンションテーブルやファクトテーブルに似ています。

  • ルックアップテーブル:標準コードテーブルとも呼ばれ、業界固有の属性のコードを含みます。たとえば、公共事業業界では、契約の有無や電力供給契約タイプなどの標準コードを作成することがあります。

comment

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

columnDefinition

次のパラメーターを使用してデータテーブルの列を定義します。

  • col_name:列名。有効な名前は、文字、数字、アンダースコア (_) のみを含みます。FML のキーワードである場合は、名前をバックティック (``) で囲みます。

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

  • dataType:列のデータ型。サポートされているデータ型には、BIGINT、STRING、VARCHAR、CHAR、DECIMAL、DATETIME があります。

  • category:列のカテゴリ。ディメンションモデリングでは、列は ATTRIBUTEMEASUREMENT、または CORRELATION として分類できます。

説明

FML は設計とマテリアライズを分離するため、列を指定せずにテーブルを定義できます。

constraint

テーブル構造の制約を定義します。次のタイプがサポートされています。

  • プライマリキー制約 (PrimaryConstraint):構文:PRIMARY KEY(col1, col2)col1col2 列はテーブルで定義されている必要があります。

  • ディメンション制約 (DimConstraint):構文:DIM KEY(col1, col2) REFERENCES table_name(ref1, ref2)

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

Partitioned BY

テーブルのパーティションを定義します。

WITH

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