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

DataWorks:データ処理

最終更新日:Aug 20, 2026

このトピックでは、シンプルなデータウェアハウスとデータ処理のシナリオを紹介します。 DataWorks の MaxCompute ノードを使用して、ods_user_info_d_odps ユーザー情報テーブルと ods_raw_log_d_odps アクセスログを処理し、ユーザープロファイルデータを生成します。

前提条件

作業を開始する前に、データの同期 の手順を完了している必要があります。

  • MySQL テーブル ods_user_info_d の基本的なユーザー情報が、 [Data Integration] を使用して MaxCompute テーブル ods_user_info_d_odps に同期済みであること。

  • Object Storage Service (OSS) のオブジェクト user_log.txt からのウェブサイトアクセスログは、Data Integration を使用して、MaxCompute テーブル ods_raw_log_d_odps に同期されています。

目的

MaxCompute で ods_user_info_d_odps テーブルと ods_raw_log_d_odps テーブルを処理し、基本的なユーザープロファイルテーブルを生成します。

  1. ods_raw_log_d_odps テーブルのログ情報フィールドを複数のフィールドに分割し、dwd_log_info_di_odps ファクトテーブルを生成します。

  2. dwd_log_info_di_odps ファクトテーブルと ods_user_info_d_odps テーブルを uid フィールドで結合し、dws_user_info_all_di_odps 集計テーブルを生成します。

  3. dws_user_info_all_di_odps テーブルは列数が多く、直接 データ利用 するには大きすぎるため、ads_user_info_1d_odps テーブルに絞り込みます。

DataStudioへの移動

DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで、[データモデリングと開発] > [DataStudio] を選択します。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[DataStudioに移動] をクリックします。

1. ワークフローの設計

データ同期フェーズの後、MaxCompute でデータが利用可能になります。次の目的は、このデータを処理して基本的なユーザープロファイルを生成することです。

  • ノード階層とロジック

    ワークフローキャンバスで ノードの作成 をクリックし、次のノードを作成します。

    ノードカテゴリ

    ノードタイプ

    パラメーター

    (最終出力テーブル名で命名)

    コードロジック

    MaxCompute

    ODPS SQL

    dwd_log_info_di_odps

    組み込み関数とユーザー定義関数 (UDF) を使用して、生ログテーブル ods_raw_log_d_odps のデータを分割し、結果を dwd_log_info_di_odps テーブルの複数のフィールドに書き込みます。

    MaxCompute

    ODPS SQL

    dws_user_info_all_di_odps

    基本的なユーザー情報 と 事前処理されたログデータ を単一のテーブルに集約します。

    MaxCompute

    ODPS SQL

    ads_user_info_1d_odps

    データをさらに処理して、基本的なユーザープロファイルを生成します。

  • ワークフローの有向非巡回グラフ (DAG)

    ノードコンポーネントをワークフローキャンバスにドラッグし、ノード間に線を引いて依存関係を設定することで、データ処理ワークフローを設計します。

    image

ステップ 2:ワークフローの設定

MaxCompute テーブルの作成

各レイヤーの処理済みデータを保存するために、事前に dwd_log_info_di_odps、dws_user_info_all_di_odps、および ads_user_info_1d_odps テーブルを作成します。 以下の手順では、関連テーブルをすばやく作成する方法を示します。 MaxCompute テーブル操作の詳細については、「MaxCompute テーブルの作成と使用」をご参照ください。

  1. テーブル作成ページに移動します。

    データ開発 ページで、データ同期 ステージで作成した [WorkShop] ワークフローを開きます。MaxCompute を右クリックし、テーブルの作成 を選択します。

  2. MaxCompute テーブルスキーマを定義します。

    テーブルの作成 ダイアログボックスで、テーブル名を入力し、新規作成 をクリックします。dwd_log_info_di_odps、dws_user_info_all_di_odps、および ads_user_info_1d_odps という名前の 3 つのテーブルを作成します。テーブルを作成するには、DDL 方式を選択します。以降のセクションでは、3 つのテーブルの DDL 文を記載しています。

  3. テーブルをコンピューティングエンジンにコミットします。

    テーブルスキーマを定義した後、開発環境へのコミット をクリックし、次に 本番環境へのコミット をクリックします。これにより、開発環境および本番環境のコンピューティングエンジンプロジェクトに物理テーブルが作成されます。

    • テーブルを DataWorks 開発環境にコミットします。これにより、開発環境の MaxCompute コンピューティングエンジンにテーブルが作成されます。

    • テーブルを DataWorks 本番環境にコミットします。これにより、本番環境の MaxCompute コンピューティングエンジンにテーブルが作成されます。

      説明
      • 基本モードのワークスペースを使用している場合は、テーブルを本番環境にコミットするだけで済みます。基本モードと標準モードのワークスペースの違いの詳細については、ワークスペースモード間の違いをご参照ください。

      • DataWorks と MaxCompute、およびそれぞれのコンピューティングエンジンとの関係の詳細については、DataWorks On MaxCompute の使用上の注意をご参照ください。

dwd_log_info_di_odps テーブル

dwd_log_info_di_odps テーブルをダブルクリックします。表示された編集ページで、DDL パターン をクリックし、次のステートメントを入力します。

CREATE TABLE IF NOT EXISTS dwd_log_info_di_odps (
 ip STRING COMMENT 'IP アドレス',
 uid STRING COMMENT 'ユーザー ID',
 time STRING COMMENT 'yyyymmddhh:mi:ss 形式の時刻',
 status STRING COMMENT 'サーバーから返されたステータスコード',
 bytes STRING COMMENT 'クライアントに返されたバイト数',
 region STRING COMMENT 'リージョン、IP アドレスから取得',
 method STRING COMMENT 'HTTP リクエストタイプ',
 url STRING COMMENT 'URL',
 protocol STRING COMMENT 'HTTP プロトコルバージョン',
 referer STRING COMMENT 'ソース URL',
 device STRING COMMENT 'デバイスタイプ',
 identity STRING COMMENT 'アクセス種別:crawler、feed、user、または unknown'
)
PARTITIONED BY (
 dt STRING
)
LIFECYCLE 14;

dws_user_info_all_1d_odps テーブル

dws_user_info_all_di_odps テーブルをダブルクリックします。 表示された編集ページで、DDL パターン をクリックし、次のステートメントを入力します。

CREATE TABLE IF NOT EXISTS dws_user_info_all_1d_odps (
 uid STRING COMMENT 'ユーザー ID',
 gender STRING COMMENT '性別',
 age_range STRING COMMENT '年齢範囲',
 zodiac STRING COMMENT '星座',
 region STRING COMMENT 'リージョン、IP アドレスから取得',
 device STRING COMMENT 'デバイスタイプ',
 identity STRING COMMENT 'アクセス種別:crawler、feed、user、または unknown',
 method STRING COMMENT 'HTTP リクエストタイプ',
 url STRING COMMENT 'URL',
 referer STRING COMMENT 'ソース URL',
 time STRING COMMENT 'yyyymmddhh:mi:ss 形式の時刻'
)
PARTITIONED BY (
 dt STRING
)
LIFECYCLE 14;

ads_user_info_1d_odps テーブル

ads_user_info_1d_odps テーブルをダブルクリックします。表示された編集ページで、DDL パターン をクリックし、次のステートメントを入力します。

CREATE TABLE IF NOT EXISTS ads_user_info_1d_odps (
 uid STRING COMMENT 'ユーザー ID',
 region STRING COMMENT 'リージョン、IP アドレスから取得',
 device STRING COMMENT 'デバイスタイプ',
 pv BIGINT COMMENT 'ページビュー (PV) 数',
 gender STRING COMMENT '性別',
 age_range STRING COMMENT '年齢範囲',
 zodiac STRING COMMENT '星座'
)
PARTITIONED BY (
 dt STRING
)
LIFECYCLE 14;    

関数の作成 (getregion)

同期された実験ログデータ構造に基づき、関数などのツールを使用してデータを解析しテーブルに書き込む必要があります。このチュートリアルでは、IP アドレスをリージョンに解決する関数に必要なリソースを提供します。関数を登録する前に、これらのリソースをローカルコンピューターにダウンロードし、DataWorks ワークスペースにアップロードするだけで済みます。

重要

この関数とサンプルの IP リソースはチュートリアル専用です。本番環境で IP アドレスを地理的な場所にマッピングするには、専門の IP ジオロケーションサービスを利用する必要があります。

  1. リソースのアップロード (ip2region.jar)

    1. ip2region.jar ファイルをダウンロードします。

      説明

      サンプル ip2region.jar リソースはチュートリアル専用です。

    2. データ開発 ページで、WorkShop ワークフローを開きます。 MaxCompute を右クリックしてリソースの作成 > JAR を選択します。

    3. Uploadをクリックし、ダウンロードした ip2region.jar ファイルを選択して、[開く] をクリックします。

      説明
      • ODPS リソースとしてアップロード を選択します。

      • リソース名は、アップロードしたファイル名と一致する必要はありません。

    4. ツールバーの image.png アイコンをクリックして、リソースを開発環境の MaxCompute プロジェクトにコミットします。

  2. 関数の登録 (getregion)

    1. 関数登録ページに移動します。

      データ開発 ページで、ワークフローを開き、MaxCompute を右クリックして 関数の新規作成 を選択します。

    2. 関数名を入力します。

      関数の新規作成 ダイアログボックスで、関数名 に getregion を入力し、新規作成 をクリックします。

    3. [Register Function] ダイアログボックスで、パラメーターを設定します。

      パラメーター

      説明

      [関数タイプ]

      関数タイプを選択します。

      [MaxCompute エンジンインスタンス]

      このパラメーターは読み取り専用です。

      [関数名]

      入力した関数名が表示されます。

      [所有者]

      所有者を選択します。

      [クラス名]

      org.alidata.odps.udf.Ip2Region と入力します。

      [リソースリスト]

      ip2region.jar を入力します。

      [説明]

      "Converts an IP address to a region." と入力します。

      [コマンドフォーマット]

      getregion('ip') と入力します。

      [メトリックの説明]

      "IP address." と入力します。

    4. image.png アイコンをクリックして、関数を開発環境のコンピューティングエンジンにコミットします。

MaxCompute データ処理ノードの設定

このケースでは、各レイヤーの処理ロジックは、スケジュールされた ODPS SQL を使用して実装されます。各レイヤーのノード間には強いデータリネージの依存関係があります。また、データ同期のステップで同期タスクの出力テーブルがノード出力として手動で追加されているため、データ処理タスクの依存関係は、データリネージに基づき、DataWorks の自動解析メカニズムによって自動的に設定されます。

dwd_log_info_di_odps ノード

ワークフローキャンバスで、dwd_log_info_di_odps ノードをダブルクリックします。作成した関数を使用して、祖先テーブル ods_raw_log_d_odps のフィールドを処理し、出力を dwd_log_info_di_odps テーブルに書き込む SQL コードを記述します。詳細については、「付録: データ処理の例」をご参照ください。

  1. コードを編集します。

    -- この SQL ステートメントは、getregion 関数を使用して生ログデータ内の IP アドレスを解析します。また、正規表現やその他の手法を用いて生データを複数のフィールドに分割し、dwd_log_info_di_odps テーブルに書き込みます。
    --      このチュートリアルでは、IP アドレスをリージョンに変換する getregion 関数を提供します。
    -- 注意事項:
    --     1. DataWorks ノードで関数を使用する前に、必要なリソースを DataWorks にアップロードし、UI 上でそれらのリソースを使用して関数を登録する必要があります。
    --        このチュートリアルで getregion 関数を登録するために使用するリソースは ip2region.jar です。
    --     2. DataWorks は、スケジューリングシナリオでターゲットテーブルの対応するビジネスパーティションに日次増分データを書き込むためのスケジューリングパラメーターを提供します。
    --        実際の開発シナリオでは、${variable_name} 形式でコード変数を定義できます。スケジューリング設定ページで、これらの変数にスケジューリングパラメーターを割り当てて、スケジュール実行時に動的なパラメーター渡しを有効にできます。
    INSERT OVERWRITE TABLE dwd_log_info_di_odps PARTITION (dt='${bizdate}')
    SELECT ip 
      , uid
      , time
      , status
      , bytes 
      , getregion(ip) AS region -- カスタム UDF を使用して IP アドレスからリージョンを取得します。
      , regexp_substr(request, '(^[^ ]+ )') AS method -- 正規表現を使用してリクエストを 3 つのフィールドに分割します。
      , regexp_extract(request, '^[^ ]+ (.*) [^ ]+$') AS url
      , regexp_substr(request, '([^ ]+$)') AS protocol 
      , regexp_extract(referer, '^[^/]+://([^/]+){1}') AS referer -- 正規表現を使用してリファラーを解析し、より正確な URL を取得します。
      , CASE
        WHEN TOLOWER(agent) RLIKE 'android' THEN 'android' -- エージェントからデバイス情報とアクセス種別を取得します。
        WHEN TOLOWER(agent) RLIKE 'iphone' THEN 'iphone'
        WHEN TOLOWER(agent) RLIKE 'ipad' THEN 'ipad'
        WHEN TOLOWER(agent) RLIKE 'macintosh' THEN 'macintosh'
        WHEN TOLOWER(agent) RLIKE 'windows phone' THEN 'windows_phone'
        WHEN TOLOWER(agent) RLIKE 'windows' THEN 'windows_pc'
        ELSE 'unknown'
      END AS device
      , CASE
        WHEN TOLOWER(agent) RLIKE '(bot|spider|crawler|slurp)' THEN 'crawler'
        WHEN TOLOWER(agent) RLIKE 'feed'
        OR regexp_extract(request, '^[^ ]+ (.*) [^ ]+$') RLIKE 'feed' THEN 'feed'
        WHEN TOLOWER(agent) NOT RLIKE '(bot|spider|crawler|feed|slurp)'
        AND agent RLIKE '^[Mozilla|Opera]'
        AND regexp_extract(request, '^[^ ]+ (.*) [^ ]+$') NOT RLIKE 'feed' THEN 'user'
        ELSE 'unknown'
      END AS identity
      FROM (
        SELECT SPLIT(col, '##@@')[0] AS ip
        , SPLIT(col, '##@@')[1] AS uid
        , SPLIT(col, '##@@')[2] AS time
        , SPLIT(col, '##@@')[3] AS request
        , SPLIT(col, '##@@')[4] AS status
        , SPLIT(col, '##@@')[5] AS bytes
        , SPLIT(col, '##@@')[6] AS referer
        , SPLIT(col, '##@@')[7] AS agent
      FROM ods_raw_log_d_odps  
      WHERE dt ='${bizdate}'
    ) a;
  2. スケジューリングプロパティを設定します。

    設定ページで、右側の [スケジューリングプロパティ] をクリックすると スケジューリング設定 パネルが開き、スケジューリングとノード情報を設定できます。 詳細については、「ノードのスケジューリングプロパティ」をご参照ください。 次のパラメーターを設定できます:

    パラメーター

    設定

    図解

    [スケジューリングパラメータ]

    スケジューリングパラメータ セクションで、以下のパラメーターを設定します。

    • [パラメーター名]: bizdate

    • [パラメーター値]: $[yyyymmdd-1]

    スケジューリングパラメーターペインには、bizdate パラメーターの値が $[yyyymmdd-1] で、ソースが [コードから解析] であることが表示されます。下部には [スケジューリングパラメーターのプレビュー] ボタンがあります。

    [時間プロパティ]

    • スケジューリング周期: Day。

    • スケジュール時刻: 00:30。

    • 再実行プロパティ:前回の成功/失敗に関係なく、タスクの再実行を許可します。

    その他のパラメータはデフォルト値を使用します。

    説明

    ノードは毎日 00:30 以降にのみ実行されます。

    「時間プロパティ」パネルでは、インスタンス生成方法は [T+1 (翌日生成)]、スケジューリングタイプは [通常スケジューリング]、スケジューリング周期は [日次]、スケジュール時刻は [00:30]、再実行プロパティは [成功時または失敗時に再実行可能]、有効日は [永続的に有効] です。

    [リソースプロパティ]

    環境の準備ステップで作成したサーバーレスリソースグループを選択します。

    リソースプロパティペインでは、スケジューリングリソースグループは [User_portraits] に設定されています (お使いのサーバーレスリソースグループの実際の名前を使用してください)。

    [スケジュール依存]

    [コード自動解析] 機能は、ods_raw_log_d_odps テーブルを生成する ods_raw_log_d_odps ノードを、現在のノード dwd_log_info_di_odps の上流の依存関係として自動的に設定します。dwd_log_info_di_odps テーブルをノードの出力として設定すると、このテーブルをクエリする下流のジョブが現在のノードに自動的に依存できるようになります。

    「依存関係」ペインで、[コミット前に依存関係を自動解析] が有効になっています。祖先ノードは、[コードから解析] を使用して [ods_raw_log_d_odps] として自動的に設定されます。現在のノードの出力は、システムのデフォルト、手動追加、またはコード解析から取得できます。

    説明

    上位ノードの依存関係: [コードから解析] をクリックします。システムは、コードからテーブル名を解析し、対応する上位ノードの出力名を Production_MaxCompute_Project_Name.TableName 形式で先祖ノードの出力名として使用します。

    現在のノード出力: [コードから解析] をクリックします。 システムはコードからテーブル名を解析し、現在のノードの出力名を Production_MaxCompute_Project_Name.TableName という形式で生成します。 この出力は、ダウンストリームノードで利用可能になります。

  3. その他の必要な設定を行い、ノードエディターのツールバーにある image.png [Save] アイコンをクリックします。

dws_user_info_all_di_odps ノードの設定

ワークフローキャンバスで、dws_user_info_all_di_odps ノードをダブルクリックします。 祖先テーブル dwd_log_info_di_odps と ods_user_info_d_odps をマージし、その結果を dws_user_info_all_di_odps テーブルに書き込む SQL コードを記述します。

  1. コードを編集します。

    -- この SQL ステートメントは、dwd_log_info_di_odps からの処理済みログデータと ods_user_info_d_odps からの基本ユーザー情報を集約し、その結果を dws_user_info_all_1d_odps テーブルに書き込みます。
    -- 注意:DataWorks は、スケジューリングシナリオでターゲットテーブルの対応するビジネスパーティションに日次増分データを書き込むためのスケジューリングパラメーターを提供します。
    --      実際の開発シナリオでは、${variable_name} 形式でコード変数を定義できます。スケジューリング設定ページで、これらの変数にスケジューリングパラメーターを割り当てて、スケジュール実行時に動的なパラメーター渡しを有効にできます。
    INSERT OVERWRITE TABLE dws_user_info_all_1d_odps  PARTITION (dt='${bizdate}')
    SELECT COALESCE(a.uid, b.uid) AS uid
      , b.gender
      , b.age_range
      , b.zodiac
      , a.region
      , a.device
      , a.identity
      , a.method
      , a.url
      , a.referer
      , a.time
    FROM (
      SELECT *
      FROM dwd_log_info_di_odps  
      WHERE dt = '${bizdate}'
    ) a
    LEFT OUTER JOIN (
      SELECT *
      FROM ods_user_info_d_odps 
      WHERE dt = '${bizdate}'
    ) b
    ON a.uid = b.uid;
  2. スケジューリングプロパティを設定します。

    設定ページで、右側の[スケジューリングプロパティ]をクリックしてスケジューリング設定パネルを開き、スケジューリングとノード情報を設定します。 詳細については、「ノードスケジューリングプロパティ」をご参照ください。 設定項目は次のとおりです。

    パラメーター

    設定

    図解

    [スケジューリングパラメータ]

    スケジューリングパラメータ セクションで、次のパラメーターを設定します。

    • [パラメーター名]: bizdate

    • [パラメーター値]: $[yyyymmdd-1]

    スケジューリングパラメーターペインには、[bizdate] パラメーターの値は [$[yyyymmdd-1]]、ソースは [コードから解析] と表示されます。下部には [スケジューリングパラメーターのプレビュー] ボタンがあります。

    [時間プロパティ]

    • スケジューリング周期: Day。

    • スケジュール時刻: 00:30。

    • 再実行プロパティ:前回の成功/失敗に関係なく、タスクの再実行を許可します。

    その他のパラメータはデフォルト値を使用します。

    説明

    ノードは毎日 00:30 以降にのみ実行されます。

    時間プロパティ ペインで、[インスタンス生成] は [翌日 (T+1) に生成] に設定され、スケジューリングタイプは [通常]、スケジューリング周期は [日]、スケジュール時刻は [00:30] に設定され、再実行ポリシーは [成功または失敗時に再実行]、有効日は無期限です。

    [リソースプロパティ]

    環境の準備ステップで作成したサーバーレスリソースグループを選択します。

    「リソースプロパティ」ペインでは、スケジューリングリソースグループは User_portraits に設定されています (実際のサーバーレスリソースグループ名を使用します)。

    [スケジュール依存]

    システムはコードを自動的に解析し、dwd_log_info_di_odps と ods_user_info_d_odps テーブルを出力するノード dwd_log_info_di_odps と ods_user_info_d_odps を、現在のノード dws_user_info_all_di_odps の上流依存関係として設定します。また、システムはノードの出力テーブル dws_user_info_all_di_odps をノード出力として登録します。これにより、このテーブルに対する下流クエリで現在のノードへの依存関係が自動的に確立されます。

    設定は dwd_log_info_di_odps ノードと同じです。祖先ノードは、コードの解析により ods_user_info_d_odps および dwd_log_info_di_odps として自動的に設定されます。現在のノードの出力には dws_user_info_all_di_odps が含まれます。

    説明

    上位ノードの依存関係: [コードから解析] をクリックします。システムは、コードからテーブル名を解析し、対応する上位ノードの出力名を Production_MaxCompute_Project_Name.TableName 形式で先祖ノードの出力名として使用します。

    現在のノード出力: [コードから解析] をクリックします。 システムはコードからテーブル名を解析し、現在のノードの出力名を Production_MaxCompute_Project_Name.TableName という形式で生成します。 この出力は、ダウンストリームノードで利用可能になります。

  3. その他の必要な設定を行い、ノードエディターのツールバーにある image.png [Save] アイコンをクリックします。

ads_user_info_1d_odps ノードの設定

ワークフローキャンバスで、ads_user_info_1d_odps ノードをダブルクリックします。ソーステーブル dws_user_info_all_di_odps を処理し、結果を ads_user_info_1d_odps テーブルに書き込む SQL コードを記述します。

  1. コードを編集します。

    -- この SQL ステートメントは、ユーザーアクセス情報の dws_user_info_all_1d_odps ワイドテーブルをさらに処理して基本的なユーザープロファイルデータを生成し、その結果を ads_user_info_1d_odps テーブルに書き込みます。
    -- 注意:DataWorks は、スケジューリングシナリオでターゲットテーブルの対応するビジネスパーティションに日次増分データを書き込むためのスケジューリングパラメーターを提供します。
    --      実際の開発シナリオでは、${variable_name} 形式でコード変数を定義できます。スケジューリング設定ページで、これらの変数にスケジューリングパラメーターを割り当てて、スケジュール実行時に動的なパラメーター渡しを有効にできます。
    INSERT OVERWRITE TABLE ads_user_info_1d_odps  PARTITION (dt='${bizdate}')
    SELECT uid
      , MAX(region)
      , MAX(device)
      , COUNT(0) AS pv
      , MAX(gender)
      , MAX(age_range)
      , MAX(zodiac)
    FROM dws_user_info_all_1d_odps 
    WHERE dt = '${bizdate}'
    GROUP BY uid; 
  2. スケジューリングプロパティを設定します。

    設定ページで、右側の[スケジューリングプロパティ]をクリックするとスケジューリング設定パネルが開き、スケジューリングとノード情報を設定できます。 詳細については、「ノードのスケジューリングプロパティ」をご参照ください。 設定は次のとおりです。

    パラメーター

    設定

    図解

    [スケジューリングパラメータ]

    スケジューリングパラメータ セクションで、次のパラメーターを設定します。

    • [パラメーター名]:bizdate

    • [パラメーター値]: $[yyyymmdd-1]

    スケジューリングパラメーターペインには、bizdate パラメーターの値が $[yyyymmdd-1]、ソースが [コードから解析] と表示されます。下部には [スケジューリングパラメーターのプレビュー] ボタンがあります。

    [時間プロパティ]

    • スケジューリング周期: Day。

    • スケジュール時刻: 00:30。

    • 再実行プロパティ:前回の成功/失敗に関係なく、タスクの再実行を許可します。

    その他のパラメータはデフォルト値を使用します。

    説明

    ノードは毎日 00:30 以降にのみ実行されます。

    「時間プロパティ」ペインでは、[インスタンス生成] は [翌日 (T+1) に生成]、スケジューリングタイプは [通常]、スケジューリング周期は [日]、スケジュール時刻は [00:30]、再実行ポリシーは [成功または失敗時に再実行]、有効日は「無期限」です。

    [リソースプロパティ]

    環境の準備ステップで作成したサーバーレスリソースグループを選択します。

    「リソースプロパティ」ペインで、スケジューリングリソースグループは [User_portraits] に設定されています (お使いのサーバーレスリソースグループの実際の名前を使用してください)。

    [スケジュール依存]

    [コードの自動解析] 機能は、データリネージに基づいてノードの依存関係を自動的に設定します。dws_user_info_all_1d_odps テーブルを生成する dws_user_info_all_1d_odps ノードが、現在の ads_user_info_1d_odps ノードの上流の依存関係として設定されます。ノードの出力は ads_user_info_1d テーブルに設定され、このテーブルへの下流のクエリが現在のノードへの依存関係を自動的に作成するようになります。

    設定は以前のノードと同じです。 祖先ノードは、コードの解析により dws_user_info_all_di_odps として自動的に設定されます。 現在のノードの出力には ads_user_info_1d_odps が含まれます。

    説明

    上位ノードの依存関係: [コードから解析] をクリックします。システムは、コードからテーブル名を解析し、対応する上位ノードの出力名を Production_MaxCompute_Project_Name.TableName 形式で先祖ノードの出力名として使用します。

    現在のノード出力: [コードから解析] をクリックします。 システムはコードからテーブル名を解析し、現在のノードの出力名を Production_MaxCompute_Project_Name.TableName という形式で生成します。 この出力は、ダウンストリームノードで利用可能になります。

  3. その他の必要な設定を行い、ノードエディターのツールバーにある image.png [Save] アイコンをクリックします。

III. ワークフローの実行

ワークフローの実行

  1. DataStudio ページで、ビジネスフロー 配下にある User profile analysis_MaxCompute ワークフローをダブルクリックします。ワークフローパネルが開いたら、ツールバーの image アイコンをクリックしてワークフローを実行します。

    ワークフローを実行すると、パネル上のノードが順次実行されます。各ノードの実行が完了すると、ノードの横に緑色の成功アイコンが表示されます。

  2. 実行ステータスを確認します。

    • タスク実行ステータスの表示: image.png 状態のノードは、正常に実行されたことを示します。

    • タスク実行ログの表示: ノードを右クリックして [View Logs] を選択すると、開発環境でのログを表示できます。

結果の検証

すべてのタスクが image.png (成功) 状態になったら、最終結果テーブルをクエリします。

  1. [データ開発] ページの左側メニューで、image.png をクリックして アドホッククエリ ペインを開きます。

  2. アドホッククエリ を右クリックし、ノードの作成 > [ODPS SQL] を選択します。

    ODPS SQL ノードで、次の SQL ステートメントを実行して最終結果テーブルを検証します。

    // パーティションフィルターを実際のデータタイムスタンプに更新してください。たとえば、タスクが 20230222 に実行された場合、データタイムスタンプは 20230221 (タスク実行日の前日) になります。
    select count(*) from ads_user_info_1d_odps where dt='';
    説明

    このチュートリアルのタスクは [DataStudio] (開発環境) で実行されます。そのため、出力データはデフォルトで、開発環境に紐づく workshop2024_01_dev MaxCompute プロジェクト内の指定テーブルに書き込まれます。

IV. ワークフローのデプロイ

タスクが自動的に実行されるようにスケジュールするには、本番環境にデプロイする必要があります。

開発環境へのコミット

ワークフローキャンバスのツールバーで、image [Commit] アイコンをクリックして、ワークフロー内のすべてのタスクをコミットします。以下で説明するように設定を構成し、OK をクリックします。

[Commit] ダイアログボックスで、以下のノード (workshop_start_odps、ods_raw_log_d_odps、ods_user_info_d_odps、dwd_log_info_di_odps、dws_user_info_all_di_odps) を選択し、[Change description] (例:「MaxCompute のユーザープロファイル分析」) を入力し、[Ignore warnings for inconsistent shelved outputs] チェックボックスにチェックを入れ、[Confirm] をクリックします。

本番環境へのデプロイ

ワークフローをコミットすると、タスクが開発環境で利用できるようになります。開発環境のタスクは自動的にスケジュールされないため、本番環境にデプロイする必要があります。

  1. ワークフローキャンバスで、ツールバーの image.png [Deploy] アイコンをクリックするか、データ開発 ページで [Deploy] ボタンをクリックして デプロイメントパッケージの作成 ページを開きます。

  2. タスクを関連するリソースや関数とともにバッチでデプロイします。

    [Create Deploy Task] ページで、[Workflow] フィールドで [User Profile Analysis_MaxCompute] を選択します。リストには、ODPS SQL ノード、オフライン同期ノード、workshop_start_odps 仮想ノード、getregion 関数、ip2region.jar リソースなど、デプロイ対象のすべての項目が表示されます。それらのステータスが [Check Passed] であることを確認します。すべての項目を選択し、[Deploy Selected Items] をクリックします。

ステップ5:運用保守とスケジューリング

本番環境では、データバックフィルを実行して履歴データを再処理できます。このチュートリアルでは、データバックフィルを使用して運用保守とスケジューリングを説明します。その他の運用保守機能の詳細については、「オペレーションセンター」をご参照ください。

  1. オペレーションセンターに移動します。

    タスクをデプロイした後、右上隅の オペレーションセンター をクリックします。

    または、ワークフローエディターで、ツールバーの 運用保守に移動 をクリックして オペレーションセンター ページを開きます。

  2. 定期タスクのデータバックフィルを実行します。

    1. 左側のナビゲーションウィンドウで、定期タスクの運用保守 > 定期タスク をクリックします。定期タスク ページで、ルートノード workshop_start_odps をクリックします。

    2. workshop_start_odps ノードを右クリックし、データバックフィル > 現在のノードおよび子孫ノード を選択します。

    3. workshop_start_odps ノードのすべての下流ノードを選択し、業務日付を入力してから OK をクリックします。その後、データバックフィル ページにリダイレクトされます。

      オペレーションセンターの定期タスクの DAG ビューで、workshop_start_odps ノードを右クリックすると、[子ノードを展開] (下流ノードを階層ごとに表示)、[実行ログを表示]、[再実行]、[下流を再実行] などの運用保守オプションを含むコンテキストメニューが開きます。

  3. すべての SQL タスクが正常に実行されるまで、パージ をクリックします。

説明

このチュートリアル完了後に継続的な料金が発生しないようにするには、ノードに [有効期間] を設定するか、ワークフローのルートノード (仮想ノード workshop_start_odps) を [フリーズ] することができます。

次のステップ

タスクをデプロイすると、ワークフローは完了します。その後、データテーブルを表示し、そこからデータを消費し、データ品質のモニタリングを設定できます。詳細については、「データの管理」、「API データサービス」、「データ可視化」、および「データ品質の監視」をご参照ください。

データ処理の例

  • 処理前

    58.246.10.82##@@2d24d94f14784##@@2014-02-12 13:12:25##@@GET /wp-content/themes/inove/img/feeds.gif HTTP/1.1##@@200##@@2572##@@http://coolshell.cn/articles/10975.html##@@Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36
  • 処理後

    処理後のエントリは、解析すると次のようになります: 時刻 は 2014-02-12 13:12:25、ステータス は 200、バイト は 2572、リージョン は China (Shanghai) (getregion 関数を使用して IP アドレスから変換)、メソッド は GET、プロトコル は HTTP/1.1、リファラー は coolshell.cn、デバイス は windows_pc、ID は feeds です。