このトピックでは、DataWorks の MaxCompute ノードを使用して、MaxCompute に同期された ods_user_info_d ユーザー情報テーブルと ods_raw_log_d アクセスログデータを処理し、対象のユーザープロファイルデータを生成する方法について説明します。このトピックを読むことで、DataWorks と MaxCompute を組み合わせて同期データを計算および分析し、データウェアハウスにおけるシンプルなデータ処理シナリオを実行する方法を学べます。
前提条件
開始する前に、「データの同期」のステップを完了してください。
ステップ 1:データ処理ワークフローの構築
「データの同期」ステップでデータを MaxCompute に同期した後、ここでデータを処理して基本的なユーザープロファイルを生成します。
-
DataStudio の左側のナビゲーションペインで、
アイコンをクリックしてデータ開発ページを開きます。プロジェクトディレクトリ セクションで、作成したワークフローを見つけ、その名前をクリックしてワークフローキャンバスを開きます。次の表に、このチュートリアルで使用するノードの例とその機能を示します。
タイプ
名前
説明
MaxCompute SQLdwd_log_info_digetregionのような組み込み関数や UDF を使用して、ods_raw_log_dの生ログデータを分割し、dwd_log_info_diテーブルの複数のフィールドに分けて書き込みます。
MaxCompute SQLdws_user_info_all_diユーザー基本情報テーブル (
ods_user_info_d) と初期処理済みログデータテーブル (dwd_log_info_di) を結合し、データをdws_user_info_all_diテーブルに書き込みます。
MaxCompute SQLads_user_info_1ddws_user_info_all_diテーブルのデータをさらに処理し、結果をads_user_info_1dテーブルに書き込んで、基本的なユーザープロファイルを生成します。 -
説明
ワークフローでは、手動で線を引いてノード間のスケジューリング依存関係を設定できます。 また、子ノードのコードを解析して、システムに依存関係を自動的に識別させることもできます。 このチュートリアルでは、手動で接続する方法を使用します。 コード解析の詳細については、「依存関係の自動解析」をご参照ください。
ステップ 2:UDF の登録
後続のデータ処理タスクがスムーズに実行されるように、「データ同期」ステージで MaxCompute に同期されたログデータ構造を解析してテーブルに取り込むために、MaxCompute UDF (getregion) を登録する必要があります。
-
このチュートリアルでは、IP アドレスをリージョンにマッピングする関数に必要なリソースを提供します。 提供されたリソースをローカルマシンにダウンロードし、関数を登録する前に DataWorks ワークスペースにアップロードしてください。
-
関数とサンプルの IP リソースは、チュートリアル専用です。 IP アドレスを地理的な場所にマッピングする必要がある本番環境のユースケースでは、専門のプロバイダーから IP 変換サービスを取得する必要があります。
リソース (ip2region.jar) のアップロード
-
ip2region.jar パッケージをダウンロードします。
説明ip2region.jarリソースサンプルは、チュートリアル専用です。 -
DataStudio ページのナビゲーションペインで、
アイコンをクリックして RESOURCE MANAGEMENT ページを開きます。 をクリックします。 リソースの名前を設定すると、リソースのアップロードページが表示されます。説明リソース名は、アップロードしたファイルの名前と一致する必要はありません。
-
[ファイルソース] で [ローカル] を選択し、[クリックしてアップロード] をクリックして、ローカルにダウンロードした
ip2region.jarファイルを選択します。 -
[データソース] で、「環境の準備」ステップでバインドした MaxCompute コンピューティングリソースを選択します。
-
ノードツールバーで [保存] をクリックし、次に [発行] をクリックします。 公開パネルの指示に従って、リソースを開発環境および本番環境の MaxCompute プロジェクトに公開します。
UDF (getregion) の登録
-
Resource Management ページで、 をクリックし、関数の名前を設定すると、Register Function ページに移動します (このチュートリアルでは、関数名は
getregionです)。 -
[Create Function] ページで、次の表で説明されているパラメーターを設定します。 他のすべてのパラメーターは、デフォルト値のままにします。
パラメーター
説明
[関数タイプ]
OTHERを選択します。[データソース]
「環境の準備」ステップで関連付けた MaxCompute コンピューティングリソースを選択します。
[クラス名]
org.alidata.odps.udf.Ip2Regionと入力します。[リソース一覧]
ip2region.jarを選択します。[説明]
IP アドレスをリージョンに変換します。
[コマンドのフォーマット]
getregion('ip')と入力します。[メトリックの説明]
IP アドレス。
-
ノードツールバーで [保存] をクリックし、次に [発行] をクリックします。 公開パネルで、指示に従って関数を開発環境および本番環境の MaxCompute プロジェクトに公開します。
ステップ 3:データ処理ノードの設定
データ処理では、MaxCompute SQL ジョブをスケジューリングすることで、各レイヤーのロジックを実装します。 このチュートリアルでは、dwd_log_info_di、dws_user_info_all_di、ads_user_info_1d ノードを順番に設定するための完全なサンプル SQL コードを提供します。
dwd_log_info_di ノードの設定
このノードのサンプルコードでは、作成された関数を使用して、アップストリームテーブル ods_raw_log_d のフィールドを処理し、結果を dwd_log_info_di テーブルに書き込みます。
-
DataStudio の左側のナビゲーションペインで、
アイコンをクリックしてデータ開発ページを開きます。プロジェクトディレクトリ セクションで、作成したワークフローの名前をクリックしてワークフローキャンバスを開きます。 -
ワークフローオーケストレーションページで、
dwd_log_info_diノードにカーソルを合わせ、[ノードの有効化] をクリックします。 -
ノードのコードエディターに次のコードを貼り付けます。
-
デバッグパラメーターを設定します。
MaxCompute SQL ノードエディターの右側で [デバッグの構成] をクリックし、次のパラメーターを設定して、ステップ 4 のデバッグ中に [デバッグの構成] の関連パラメーターでテストを実行します。
パラメーター
説明
[計算リソース]
「環境の準備」ステップで関連付けた MaxCompute コンピューティングリソースと、それに対応するクォータを選択します。
[リソースグループ]
「環境の準備」ステップで購入したサーバーレスリソースグループを選択します。
[スクリプトパラメーター]
設定は不要です。 このチュートリアルで提供されるサンプルコードでは、
${bizdate}を使用してデータタイムスタンプを表します。 ステップ 4 でワークフローをデバッグして実行する際に、[今回の実行値] を20250223のような特定の定数に設定します。 タスクは実行時に変数をこの定数に置き換えます。 -
(オプション) スケジューリングプロパティの設定
このチュートリアルでは、スケジューリング設定パラメーターはデフォルト値のままにします。 MaxCompute SQL ページの右側で、[スケジューリング設定] をクリックします。 スケジューリング設定パラメーターの詳細については、「ノードスケジューリング設定」をご参照ください。
-
[スケジューリングパラメーター]:これらのパラメーターは、このチュートリアルではワークフローレベルで設定します。 ワークフロー内の各ノードに設定する必要はありません。 タスクやコードで直接使用できます。
-
[スケジューリングポリシー]:[遅延実行時間] パラメーターで、ワークフローの実行後に子ノードの実行を遅延させる時間を指定できます。 この設定は、このチュートリアルでは設定しません。
-
-
ノードツールバーで [保存] をクリックします。
dws_user_info_all_di ノードの設定
このノードは、ユーザー基本情報テーブル (ods_user_info_d) と初期処理済みログデータテーブル (dwd_log_info_di) を結合し、データを dws_user_info_all_di テーブルに書き込みます。
-
ワークフローオーケストレーションページで、
dws_user_info_all_diノードにカーソルを合わせ、[ノードの有効化] をクリックします。 -
ノードのコードエディターに次のコードを貼り付けます。
-
デバッグパラメーターを設定します。
MaxCompute SQL ノードエディターの右側で [デバッグの構成] をクリックし、次のパラメーターを設定して、ステップ 4 のデバッグ中に [デバッグの構成] の関連パラメーターでテストを実行します。
パラメーター
説明
[計算リソース]
「環境の準備」ステップで関連付けた MaxCompute コンピューティングリソースと、それに対応するクォータを選択します。
[リソースグループ]
「環境の準備」ステップで購入したサーバーレスリソースグループを選択します。
[スクリプトパラメーター]
設定は不要です。 このチュートリアルで提供されるサンプルコードでは、
${bizdate}を使用してデータタイムスタンプを表します。 ステップ 4 でワークフローをデバッグして実行する際に、[今回の実行値] を20250223のような特定の定数に設定します。 タスクは実行時に変数をこの定数に置き換えます。 -
(オプション) スケジューリングプロパティの設定
このチュートリアルでは、スケジューリング設定パラメーターはデフォルト値のままにします。 MaxCompute SQL ページの右側で、[スケジューリング設定] をクリックします。 スケジューリング設定パラメーターの詳細については、「ノードスケジューリング設定」をご参照ください。
-
[スケジューリングパラメーター]:これらのパラメーターは、このチュートリアルではワークフローレベルで設定します。 ワークフロー内の各ノードに設定する必要はありません。 タスクやコードで直接使用できます。
-
[スケジューリングポリシー]:[遅延実行時間] パラメーターで、ワークフローの実行後に子ノードの実行を遅延させる時間を指定できます。 この設定は、このチュートリアルでは設定しません。
-
-
ノードツールバーで [保存] をクリックします。
ads_user_info_1d ノードの設定
このノードは、dws_user_info_all_di テーブルのデータをさらに処理し、データを ads_user_info_1d テーブルに書き込み、基本的なユーザープロファイルを生成します。
-
ワークフローオーケストレーションページで、
ads_user_info_1dノードにカーソルを合わせ、[ノードの有効化] をクリックします。 -
ノードのコードエディターに次のコードを貼り付けます。
-
デバッグパラメーターを設定します。
MaxCompute SQL ノードエディターの右側で [デバッグの構成] をクリックし、次のパラメーターを設定して、ステップ 4 のデバッグ中に [デバッグの構成] の関連パラメーターでテストを実行します。
パラメーター
説明
[計算リソース]
「環境の準備」ステップで関連付けた MaxCompute コンピューティングリソースと、それに対応するクォータを選択します。
[リソースグループ]
「環境の準備」ステップで購入したサーバーレスリソースグループを選択します。
[スクリプトパラメーター]
設定は不要です。 このチュートリアルで提供されるサンプルコードでは、
${bizdate}を使用してデータタイムスタンプを表します。 ステップ 4 でワークフローをデバッグして実行する際に、[今回の実行値] を20250223のような特定の定数に設定します。 タスクは実行時に変数をこの定数に置き換えます。 -
(オプション) スケジューリングプロパティの設定
このチュートリアルでは、スケジューリング設定パラメーターはデフォルト値のままにします。 MaxCompute SQL ページの右側で、[スケジューリング設定] をクリックします。 スケジューリング設定パラメーターの詳細については、「ノードスケジューリング設定」をご参照ください。
-
[スケジューリングパラメーター]:これらのパラメーターは、このチュートリアルではワークフローレベルで設定します。 ワークフロー内の各ノードに設定する必要はありません。 タスクやコードで直接使用できます。
-
[スケジューリングポリシー]:[遅延実行時間] パラメーターで、ワークフローの実行後に子ノードの実行を遅延させる時間を指定できます。 この設定は、このチュートリアルでは設定しません。
-
-
ノードツールバーで [保存] をクリックします。
ステップ 4:データの処理
-
データを処理します。
ワークフローツールバーで、実行 をクリックします。今回の実行のために各ノードで定義されたパラメーター変数の値を設定します(このチュートリアルでは
20250223を使用します。必要に応じて変更できます)。OK をクリックし、実行が完了するまで待ちます。 -
データ処理結果をクエリします。
Data Studio の左側のナビゲーションウィンドウで、
をクリックしてデータ開発ページに移動します。個人ディレクトリセクションで、
をクリックして .sql拡張子を持つファイルを作成します(ファイル名は任意で設定できます)。ページ下部で、言語モードが以下のように
MaxCompute SQLに設定されていることを確認します。
-
SQL エディターで、次の SQL ステートメントを入力して、最終結果テーブル
ads_user_info_1dのレコード数を確認し、データが処理されたかどうかを確認します。-- パーティションのフィルター条件を、実際の実行時のデータタイムスタンプに変更する必要があります。 -- このチュートリアルでは、bizdate (データタイムスタンプ) デバッグパラメーターは 20250223 に設定されていました。 SELECT count(*) FROM ads_user_info_1d WHERE dt='<your_data_timestamp>';-
クエリがデータを返した場合、データは正常に処理されています。
データが返されない場合は、ワークフロー実行時に設定した 今回の実行値 が、クエリ内の
dtで指定されたビジネス日付と一致していることを確認してください。ワークフローをクリックし、右側の 実行履歴 をクリックし、実行履歴の 操作 列の 詳細 をクリックして、ワークフロー ランタイムログ内のビジネス日付値(partition=[pt=xxx])を確認できます。
-
ステップ 5:ワークフローのデプロイ
タスクは、本番環境にデプロイされた後にのみ自動的にスケジュールされます。 次の手順でワークフローをデプロイします。
このチュートリアルでは、スケジューリングパラメーターはワークフロースケジューリングプロパティで設定されているため、デプロイ前に各ノードに設定する必要はありません。
-
Data Studio のナビゲーションペインで
をクリックして DataStudio ページに移動します。 次に、[プロジェクトディレクトリ] 領域で、作成したワークフローを見つけ、ワークフローをクリックしてワークフローオーケストレーションページを開きます。 -
ノードツールバーの [発行] をクリックして、Publish パネルを開きます。
-
[本番リリースの開始] をクリックします。 表示される確認ダイアログボックスで、要件に基づいてデプロイ方法を選択します。
-
フルデプロイ:現在のワークフローとそのすべての内部タスクノードをデプロイします。
-
増分デプロイ:現在のワークフローと、最後のデプロイ以降に変更された内部タスクノードのみをデプロイします。 これは、反復的な最適化やマイナーアップデートに適しています。
-
-
デプロイ方法を確定すると、システムは自動的にデプロイプロセスを実行し、ワークフローと選択したタスクノードを開発環境と本番環境に順番にデプロイします。 本番環境へのデプロイを完了するには、[公開の確認] をクリックする必要があります。
ステップ 6:本番環境でのタスクの実行
タスクがデプロイされると、翌日に実行されるインスタンスが生成されます。 [データバックフィル] を使用して、デプロイされたワークフローのデータをバックフィルし、タスクが本番環境で実行できるかどうかを確認します。 詳細については、「データバックフィルインスタンスの O&M」をご参照ください。
-
タスクが正常にデプロイされたら、右上の [オペレーションセンター] をクリックします。
または、左上の
アイコンをクリックし、 を選択します。 -
ナビゲーションペインで、 をクリックします。 [定期タスク] ページで、
workshop_start仮想ノードをクリックします。 -
右側の DAG で
workshop_startノードを右クリックし、 を選択します。 -
データバックフィルが必要なタスクを選択し、データタイムスタンプを設定して、[送信して進む] をクリックします。
-
データバックフィルページで、すべての SQL タスクが正常に実行されるまで [パージ] をクリックします。
チュートリアル完了後、さらなるコストの発生を避けるために、ノードのスケジューリング有効期間を設定するか、ビジネスプロセスのルートノード (仮想ノード workshop_start) を[凍結]します。
次のステップ
-
データの可視化:ユーザープロファイル分析が完了したら、データ分析モジュールを使用して、処理されたデータをグラフで表示します。 これにより、主要な情報をすばやく抽出し、ビジネスの傾向を把握できます。
-
データ品質のモニタリング:データ処理中に生成されたテーブルに対してデータ品質モニタリングルールを設定します。 これにより、ダーティデータを事前に特定してブロックし、その影響が伝播するのを防ぎます。
-
データの管理:ユーザープロファイル分析ワークフローが完了すると、対応するデータテーブルが MaxCompute に作成されます。 Data Map でこれらのテーブルを表示したり、リネージを確認したりして、テーブル間の関係を理解できます。
-
API データサービス:最終的に処理されたデータを取得した後、データサービスモジュールを使用して、標準化された API を介してデータを共有します。 これにより、API を介してデータを消費する他のビジネスモジュールにデータを提供できます。
> リソースの新規作成 > [MaxCompute Jar]