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

DataWorks:データの処理

最終更新日:Jul 04, 2025

このトピックでは、DataWorks の MaxCompute ノードを使用して、MaxCompute の ods_user_info_d_odps テーブルと ods_raw_log_d_odps テーブルのデータを処理し、ユーザーの基本情報と Web サイトアクセスログがテーブルに同期された後にユーザープロファイルデータを取得する方法について説明します。 また、DataWorks と MaxCompute の製品の組み合わせを使用して、同期されたデータを計算および分析し、データウェアハウスシナリオで簡単なデータ処理を完了する方法についても説明します。

前提条件

必要なデータが同期されています。 詳細については、「データの同期」をご参照ください。

  • ApsaraDB RDS for MySQL テーブル ods_user_info_d に格納されているユーザーの基本情報は、[Data Integration] を使用して MaxCompute テーブル ods_user_info_d_odps に同期されます。

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

目的

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 という名前のテーブルを生成します。 dws_user_info_all_di_odps テーブルには、多数のフィールドと大量のデータが含まれています。 この場合、データ消費 に時間がかかる場合があります。 そのため、さらなるデータ処理が必要です。

DataStudio ページに移動する

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

ステップ 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

    ユーザーの基本情報を格納するテーブルと、予備的に処理されたログデータを格納する dwd_log_info_di_odps テーブルを結合して、集計テーブルを生成します。

    MaxCompute

    ODPS SQL

    ads_user_info_1d_odps

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

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

    ノードをワークフローキャンバスにドラッグし、線を描画してノード間の依存関係を設定することにより、データ処理のワークフローを設計します。

    image

ステップ 2: ワークフローを設定する

MaxCompute テーブルを作成する

処理済みデータを各レイヤーに格納するために使用する dwd_log_info_di_odpsdws_user_info_all_di_odps、および ads_user_info_1d_odps テーブルを作成します。 この例では、テーブルは迅速な方法で作成されます。 MaxCompute テーブル関連操作の詳細については、「MaxCompute テーブルの作成と管理」をご参照ください。

  1. テーブル作成のエントリポイントに移動します。

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

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

    [テーブルの作成] ダイアログボックスで、テーブル名を入力し、[作成] をクリックします。 たとえば、dwd_log_info_di_odpsdws_user_info_all_di_odpsads_user_info_1d_odps という名前の 3 つのテーブルを作成する必要があります。 次に、[DDL] タブに移動し、CREATE TABLE ステートメントを実行してテーブルを作成します。 前述のテーブルを作成するために使用されるステートメントは、以下のコンテンツで確認できます。

  3. テーブルを計算エンジンにコミットします。

    テーブルのスキーマを定義した後、各テーブルの構成タブで [開発環境にコミット][本番環境にコミット] を順番にクリックします。 開発環境と本番環境の MaxCompute プロジェクトでは、システムは構成に基づいて MaxCompute プロジェクトに関連する物理テーブルを作成します。

    • ワークスペースの開発環境にテーブルをコミットすると、テーブルは開発環境の MaxCompute プロジェクトに作成されます。

    • ワークスペースの本番環境にテーブルをコミットすると、テーブルは本番環境の MaxCompute プロジェクトに作成されます。

      説明

dwd_log_info_di_odps テーブルを作成する

dwd_log_info_di_odps テーブルをダブルクリックします。 表示されるテーブル構成タブで、[DDL] をクリックし、次の CREATE TABLE ステートメントを入力します。

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 'アクセス タイプ。クローラー、フィード、ユーザー、または不明の場合があります。'
)
PARTITIONED BY (
 dt STRING
)
LIFECYCLE 14;

dws_user_info_all_di_odps テーブルを作成する

dws_user_info_all_di_odps テーブルをダブルクリックします。 表示されるテーブル構成タブで、[DDL] をクリックし、次の CREATE TABLE ステートメントを入力します。

CREATE TABLE IF NOT EXISTS dws_user_info_all_di_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 'アクセス タイプ。クローラー、フィード、ユーザー、または不明の場合があります。',
 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 ステートメントを入力します。

CREATE TABLE IF NOT EXISTS ads_user_info_1d_odps (
 uid STRING COMMENT 'ユーザーの ID',
 region STRING COMMENT 'IP アドレスに基づいて取得されるリージョン',
 device STRING COMMENT '端末タイプ',
 pv BIGINT COMMENT 'ページビュー',
 gender STRING COMMENT '性別',
 age_range STRING COMMENT 'ユーザーの年齢層',
 zodiac STRING COMMENT '星座'
)
PARTITIONED BY (
 dt STRING
)
LIFECYCLE 14;    

getregion という名前の関数を作成する

実験のログデータの構造 をテーブルのデータに変換するには、関数などのメソッドを使用できます。 この例では、IP アドレスをリージョンに変換するために使用される関数に必要なリソースが提供されています。 DataWorks に関数を登録する前に、リソースをオンプレミスマシンにダウンロードし、ワークスペースにアップロードするだけです。

重要

この関数で使用される IP アドレスリソースは、このチュートリアルでのみ使用できます。 正式なビジネスシナリオで IP アドレスと地理的な場所のマッピングを実装する必要がある場合は、専門の IP アドレス Web サイトから専門の IP アドレス変換サービスを探す必要があります。

  1. リソースファイル ip2region.jar をアップロードする

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

      説明

      ip2region.jar ファイルは、このチュートリアルでのみ使用できます。

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

    3. [アップロード] をクリックし、オンプレミスマシンにダウンロードされた ip2region.jar ファイルを選択して、[開く] をクリックします。

      説明
      • [MaxCompute にアップロード] を選択します。

      • リソース名は、アップロードされたファイルの名前と異なっていてもかまいません。

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

  2. 関数 getregion を登録する

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

      [DataStudio] ページで、WorkShop ワークフローを開き、[MaxCompute] を右クリックして、[関数の作成] を選択します。

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

      [関数の作成] ダイアログボックスで、[名前] パラメーターを getregion に設定し、[作成] をクリックします。

    3. 表示される構成タブの [関数の登録] セクションで、次の表に示すパラメーターを設定します。

      image

      パラメーター

      説明

      [関数タイプ]

      関数のタイプ。

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

      MaxCompute 計算エンジン。 このパラメーターの値は変更できません。

      [関数名]

      関数の名前。

      [所有者]

      関数の所有者。

      [クラス名]

      パラメーターを org.alidata.odps.udf.Ip2Region に設定します。

      [リソース]

      パラメーターを ip2region.jar に設定します。

      [説明]

      パラメーターを「IP アドレスに基づくリージョン変換」に設定します。

      [式の構文]

      パラメーターを getregion('ip') に設定します。

      [パラメーターの説明]

      パラメーターを「IP アドレス」に設定します。

    4. 上部のツールバーの image.png アイコンをクリックして、関数を開発環境の計算エンジンにコミットします。

MaxCompute ノードを設定する

この例では、ODPS SQL ノードを使用して、各レイヤーのデータ処理ロジックを実装する必要があります。 異なるレイヤーの ODPS SQL ノード間には、強力なデータ系列が存在します。 データ同期フェーズでは、同期ノードの出力テーブルが、同期ノードの [プロパティ] タブの [出力] セクションに手動で追加されています。 そのため、この例でデータ処理に使用される ODPS SQL ノードのスケジューリング依存関係は、自動解析 機能を使用して、データ系列に基づいて自動的に設定できます。

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 にアップロードし、リソースを使用して関数を視覚的に登録する必要があります。
    --        この例では、getregion 関数を登録するために使用されるリソースは ip2region.jar です。
    --     2. DataWorks でノードのスケジューリングパラメーターを設定して、スケジューリングシナリオで毎日増分データを目的のテーブルの関連パーティションに書き込むことができます。
    --        実際の開発シナリオでは、ノードのコードで ${変数名} 形式で変数を定義し、ノードの構成タブの [プロパティ] タブで変数にスケジューリングパラメーターを割り当てることができます。 これにより、スケジューリングパラメーターの値は、スケジューリングパラメーターの構成に基づいてノードコードで動的に置き換えることができます。
    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' -- agent パラメーターに基づいて端末情報とアクセス タイプを取得します。
        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] に設定します。

    image

    [スケジュール]

    • [スケジューリングサイクル]: 値を に設定します。

    • [スケジュールされた時間]: 値を 00:30 に設定します。

    • [再実行]: 値を「実行状態に関係なく許可」に設定します。

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

    説明

    現在のノードが毎日実行されるようにスケジュールされる時間は、ワークフローのゼロ負荷ノード workshop_start のスケジュールされた時間によって決まります。 現在のノードは、毎日 00:30 以後に実行されるようにスケジュールされています。

    image

    [リソースグループ]

    環境の準備 フェーズで購入したサーバーレスリソースグループを選択します。

    image

    [依存関係]

    [ノードのコミット前にコードから自動的に解析] を [はい] に設定すると、ods_raw_log_d_odps テーブルを生成する ods_raw_log_d_odps ノードを dwd_log_info_di_odps ノードの祖先ノードとしてシステムが設定できるようになります。 dwd_log_info_di_odps テーブルは、dwd_log_info_di_odps ノードの出力として使用されます。 これにより、これらのノードが dwd_log_info_di_odps ノードによって生成されたテーブルデータにクエリを実行するときに、dwd_log_info_di_odps ノードを他のノードの祖先ノードとして自動的に設定できます。

    image

    説明

    現在のノードの祖先ノードを決定する: [コードから入力と出力を解析] をクリックすると、コード内のテーブル名が 本番環境の MaxCompute プロジェクト名.テーブル名 形式で名前が付けられた出力ノードに解析されます。 出力ノード名は、[祖先ノードの出力の名前] として使用されます。

    現在のノードの出力を決定する: [コードから入力と出力を解析] をクリックすると、コード内のテーブル名が 本番環境の MaxCompute プロジェクト名.テーブル名 形式で名前が付けられた出力ノードに解析され、ダウンストリームノードに出力されます。

  3. この例では、ビジネス要件に基づいて、その他に必要な構成項目を設定できます。 設定が完了したら、ノードの構成タブの上部にあるツールバーの image.png アイコンをクリックして、ノードの設定を保存します。

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. ノードコードを編集します。

    -- シナリオ: dwd_log_info_di_odps テーブル内の処理済みログデータと ods_user_info_d_odps テーブル内のユーザーの基本情報を集計し、集計されたデータを dws_user_info_all_di_odps テーブルに書き込みます。
    -- 注: DataWorks でノードのスケジューリングパラメーターを設定して、スケジューリングシナリオで毎日増分データを目的のテーブルの関連パーティションに書き込むことができます。
    --      実際の開発シナリオでは、${変数名} 形式でノードのコードに変数を定義し、ノードの構成タブの [プロパティ] タブで変数にスケジューリングパラメーターを割り当てることができます。 これにより、スケジューリングパラメーターの値は、スケジューリングパラメーターの構成に基づいてノードコードで動的に置き換えることができます。
    INSERT OVERWRITE TABLE dws_user_info_all_di_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] に設定します。

    image

    [スケジュール]

    • [スケジューリングサイクル]: 値を に設定します。

    • [スケジュールされた時間]: 値を 00:30 に設定します。

    • [再実行]: 値を「実行状態に関係なく許可」に設定します。

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

    説明

    現在のノードが毎日実行されるようにスケジュールされる時間は、ワークフローのゼロ負荷ノード workshop_start のスケジュールされた時間によって決まります。 現在のノードは、毎日 00:30 以後に実行されるようにスケジュールされています。

    image

    [リソースグループ]

    環境の準備 フェーズで購入したサーバーレスリソースグループを選択します。

    image

    [依存関係]

    [ノードのコミット前にコードから自動的に解析] を [はい] に設定すると、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 テーブルは、dws_user_info_all_di_odps ノードの出力として使用されます。 これにより、これらのノードが dws_user_info_all_di_odps ノードによって生成されたテーブルデータにクエリを実行するときに、dws_user_info_all_di_odps ノードを他のノードの祖先ノードとして自動的に設定できます。

    image

    説明

    現在のノードの祖先ノードを決定する: [コードから入力と出力を解析] をクリックすると、コード内のテーブル名が 本番環境の MaxCompute プロジェクト名.テーブル名 形式で名前が付けられた出力ノードに解析されます。 出力ノード名は、[祖先ノードの出力の名前] として使用されます。

    現在のノードの出力を決定する: [コードから入力と出力を解析] をクリックすると、コード内のテーブル名が 本番環境の MaxCompute プロジェクト名.テーブル名 形式で名前が付けられた出力ノードに解析され、ダウンストリームノードに出力されます。

  3. この例では、ビジネス要件に基づいて、その他に必要な構成項目を設定できます。 設定が完了したら、ノードの構成タブの上部にあるツールバーの image.png アイコンをクリックして、ノードの設定を保存します。

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_di_odps ワイドテーブルを、ユーザーの基本プロファイルデータを格納するために使用される ads_user_info_1d_odps テーブルにさらに処理するために使用されます。
    -- 注: DataWorks でノードのスケジューリングパラメーターを設定して、スケジューリングシナリオで毎日増分データを目的のテーブルの関連パーティションに書き込むことができます。
    --      実際の開発シナリオでは、${変数名} 形式でノードのコードに変数を定義し、ノードの構成タブの [プロパティ] タブで変数にスケジューリングパラメーターを割り当てることができます。 これにより、スケジューリングパラメーターの値は、スケジューリングパラメーターの構成に基づいてノードコードで動的に置き換えることができます。
    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_di_odps 
    WHERE dt = '${bizdate}'
    GROUP BY uid; 
  2. スケジューリングプロパティを設定します。

    ノードの構成タブで、右側のナビゲーションウィンドウの [プロパティ] をクリックします。 [プロパティ] タブで、ノードのスケジューリングプロパティと基本情報を設定します。 詳細については、「ノードのスケジューリングプロパティ」をご参照ください。 パラメーターについて、次の表で説明します。

    セクション

    説明

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

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

    • [パラメーター名]: 値を bizdate に設定します。

    • [パラメーター値]: 値を $[yyyymmdd-1] に設定します。

    image

    [スケジュール]

    • [スケジューリングサイクル]: 値を に設定します。

    • [スケジュールされた時間]: 値を 00:30 に設定します。

    • [再実行]: 値を「実行状態に関係なく許可」に設定します。

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

    説明

    現在のノードが毎日実行されるようにスケジュールされる時間は、ワークフローのゼロ負荷ノード workshop_start のスケジュールされた時間によって決まります。 現在のノードは、毎日 00:30 以後に実行されるようにスケジュールされています。

    image

    [リソースグループ]

    環境の準備 フェーズで購入したサーバーレスリソースグループを選択します。

    image

    [依存関係]

    [ノードのコミット前にコードから自動的に解析] を [はい] に設定すると、dws_user_info_all_1d_odps テーブルを生成する dws_user_info_all_1d_odps ノードを ads_user_info_1d_odps ノードの祖先ノードとしてシステムが設定できるようになります。 ads_user_info_1d テーブルは、ads_user_info_1d ノードの出力として使用されます。 これにより、これらのノードが ads_user_info_1d ノードによって生成されたテーブルデータにクエリを実行するときに、ads_user_info_1d ノードを他のノードの祖先ノードとして自動的に設定できます。

    image

    説明

    現在のノードの祖先ノードを決定する: [コードから入力と出力を解析] をクリックすると、コード内のテーブル名が 本番環境の MaxCompute プロジェクト名.テーブル名 形式で名前が付けられた出力ノードに解析されます。 出力ノード名は、[祖先ノードの出力の名前] として使用されます。

    現在のノードの出力を決定する: [コードから入力と出力を解析] をクリックすると、コード内のテーブル名が 本番環境の MaxCompute プロジェクト名.テーブル名 形式で名前が付けられた出力ノードに解析され、ダウンストリームノードに出力されます。

  3. この例では、ビジネス要件に基づいて、その他に必要な構成項目を設定できます。 設定が完了したら、ノードの構成タブの上部にあるツールバーの image.png アイコンをクリックして、ノードの設定を保存します。

ステップ 3: ワークフローを実行する

ワークフローを実行する

  1. [DataStudio] ページで、[ビジネスフロー] の下の User profile analysis_MaxCompute ワークフローをダブルクリックします。ワークフローの構成タブで、トップツールバーにある image アイコンをクリックして、ノード間のスケジューリング依存関係に基づいてワークフロー内のノードを実行します。

    image

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

    • ノードステータスの表示: ノードが image.png 状態の場合、同期プロセスは正常です。

    • ノード実行ログの表示: ノードを右クリックし、[ログの表示] を選択して、開発環境におけるユーザー プロファイル分析プロセス全体の各ノードのログを表示します。

同期結果を表示する

ワークフロー内のすべてのノードが image.png 状態になったら、最終的に処理された結果テーブルをクエリできます。

  1. [DataStudio] ページの左側のナビゲーション ウィンドウで、image.png をクリックします。

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

    ODPS SQL ノードで次の SQL 文を実行して、この例の最終結果テーブルを確認します。

    // 読み取りおよび書き込み操作を実行するデータのデータ タイムスタンプを、パーティションのフィルター条件として指定する必要があります。たとえば、ノードが 2023 年 2 月 22 日に実行されるようにスケジュールされている場合、ノードのデータ タイムスタンプは 20230221 であり、これはノードのスケジュール時刻よりも 1 日前です。
    select count(*) from ads_user_info_1d_odps where dt='Data timestamp';

    image

    説明

    この例では、ノードは開発環境である [DataStudio] で実行されます。したがって、データは、デフォルトで開発環境のワークスペースに関連付けられている MaxCompute プロジェクト workshop2024_01_dev 内の指定されたテーブルに書き込まれます。

ステップ 4: ワークフローをデプロイする

ノードは、本番環境にデプロイされた後にのみ自動的にスケジュールおよび実行できます。詳細については、以下のコンテンツをご参照ください。

ワークフローを開発環境にコミットする

ワークフローの構成タブの上部ツールバーにある image アイコンをクリックして、ワークフロー内のすべてのノードをコミットします。[確認] ダイアログボックスで、次の図に示すようにパラメーターを構成し、 [確認] をクリックします。

image

ワークフローを本番環境にコミットする

ワークフローをコミットすると、ワークフロー内のノードは開発環境に入ります。開発環境のノードは自動的にスケジュールされないため、構成済みのノードを本番環境にデプロイする必要があります。

  1. ワークフローの構成タブの上部ツールバーにある image.png アイコンをクリックします。または、DataStudio 内のいずれかのノードの構成タブに移動し、右上隅にある [デプロイ] アイコンをクリックして、[デプロイタスクの作成] ページに移動します。

  2. 目的のノードを同時にデプロイします。デプロイされるコンテンツには、ワークフローに関連するリソースと関数が含まれます。

ステップ 5: ワークフローで O&M およびスケジューリング操作を実行する

実際の開発シナリオでは、本番環境のデータバックフィル機能を使用して、過去の期間または将来の期間のデータをバックフィルできます。 このトピックでは、データバックフィルインスタンスで O&M およびスケジューリング操作を実行する方法について説明します。 Operation Center の機能の詳細については、「Operation Center」をご参照ください。

  1. Operation Center ページに移動します。

    ノードがデプロイされた後、ノードの構成タブの右上隅にある [Operation Center] をクリックします。

    DataStudio ページの上部にある [Operation Center] をクリックして、[Operation Center] ページに移動することもできます。

  2. 自動トリガーされたタスクのデータをバックフィルします。

    1. 左側のナビゲーションウィンドウで、[自動トリガーノード O&M] > [自動トリガーノード] を選択します。 表示されるページで、workshop_start_odps ワークフローのルートノードをクリックします。

    2. workshop_start_odps ノードを右クリックし、[実行] > [現在および子孫ノードを遡及的に] を選択します。

    3. workshop_start_odps ノードのすべての子孫ノードを選択し、データタイムスタンプを入力して、[OK] をクリックします。 [パッチデータ] ページが表示されます。

      image

  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
  • データ処理後

    image.png