このトピックでは、シンプルなデータウェアハウスとデータ処理のシナリオを紹介します。 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 テーブルを処理し、基本的なユーザープロファイルテーブルを生成します。
-
ods_raw_log_d_odpsテーブルのログ情報フィールドを複数のフィールドに分割し、dwd_log_info_di_odpsファクトテーブルを生成します。 -
dwd_log_info_di_odpsファクトテーブルとods_user_info_d_odpsテーブルを uid フィールドで結合し、dws_user_info_all_di_odps集計テーブルを生成します。 -
dws_user_info_all_di_odpsテーブルは列数が多く、直接 データ利用 するには大きすぎるため、ads_user_info_1d_odpsテーブルに絞り込みます。
DataStudioへの移動
DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[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)
ノードコンポーネントをワークフローキャンバスにドラッグし、ノード間に線を引いて依存関係を設定することで、データ処理ワークフローを設計します。

ステップ 2:ワークフローの設定
MaxCompute テーブルの作成
各レイヤーの処理済みデータを保存するために、事前に dwd_log_info_di_odps、dws_user_info_all_di_odps、および ads_user_info_1d_odps テーブルを作成します。 以下の手順では、関連テーブルをすばやく作成する方法を示します。 MaxCompute テーブル操作の詳細については、「MaxCompute テーブルの作成と使用」をご参照ください。
-
テーブル作成ページに移動します。
データ開発 ページで、データ同期 ステージで作成した [WorkShop] ワークフローを開きます。MaxCompute を右クリックし、テーブルの作成 を選択します。
-
MaxCompute テーブルスキーマを定義します。
テーブルの作成 ダイアログボックスで、テーブル名を入力し、新規作成 をクリックします。
dwd_log_info_di_odps、dws_user_info_all_di_odps、およびads_user_info_1d_odpsという名前の 3 つのテーブルを作成します。テーブルを作成するには、DDL 方式を選択します。以降のセクションでは、3 つのテーブルの DDL 文を記載しています。 -
テーブルをコンピューティングエンジンにコミットします。
テーブルスキーマを定義した後、開発環境へのコミット をクリックし、次に 本番環境へのコミット をクリックします。これにより、開発環境および本番環境のコンピューティングエンジンプロジェクトに物理テーブルが作成されます。
-
テーブルを 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 ジオロケーションサービスを利用する必要があります。
-
リソースのアップロード (ip2region.jar)
-
ip2region.jar ファイルをダウンロードします。
説明サンプル
ip2region.jarリソースはチュートリアル専用です。 -
データ開発 ページで、WorkShop ワークフローを開きます。 MaxCompute を右クリックして を選択します。
-
Uploadをクリックし、ダウンロードした ip2region.jar ファイルを選択して、[開く] をクリックします。
説明-
ODPS リソースとしてアップロード を選択します。
-
リソース名は、アップロードしたファイル名と一致する必要はありません。
-
-
ツールバーの
アイコンをクリックして、リソースを開発環境の MaxCompute プロジェクトにコミットします。
-
-
関数の登録 (getregion)
-
関数登録ページに移動します。
データ開発 ページで、ワークフローを開き、MaxCompute を右クリックして 関数の新規作成 を選択します。
-
関数名を入力します。
関数の新規作成 ダイアログボックスで、関数名 に
getregionを入力し、新規作成 をクリックします。 -
[Register Function] ダイアログボックスで、パラメーターを設定します。
パラメーター
説明
[関数タイプ]
関数タイプを選択します。
[MaxCompute エンジンインスタンス]
このパラメーターは読み取り専用です。
[関数名]
入力した関数名が表示されます。
[所有者]
所有者を選択します。
[クラス名]
org.alidata.odps.udf.Ip2Regionと入力します。[リソースリスト]
ip2region.jarを入力します。[説明]
"Converts an IP address to a region." と入力します。
[コマンドフォーマット]
getregion('ip')と入力します。[メトリックの説明]
"IP address." と入力します。
-
アイコンをクリックして、関数を開発環境のコンピューティングエンジンにコミットします。
-
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 コードを記述します。詳細については、「付録: データ処理の例」をご参照ください。
-
コードを編集します。
-- この 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; -
スケジューリングプロパティを設定します。
設定ページで、右側の [スケジューリングプロパティ] をクリックすると スケジューリング設定 パネルが開き、スケジューリングとノード情報を設定できます。 詳細については、「ノードのスケジューリングプロパティ」をご参照ください。 次のパラメーターを設定できます:
パラメーター
設定
図解
[スケジューリングパラメータ]
スケジューリングパラメータ セクションで、以下のパラメーターを設定します。
-
[パラメーター名]:
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という形式で生成します。 この出力は、ダウンストリームノードで利用可能になります。 -
-
その他の必要な設定を行い、ノードエディターのツールバーにある
[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 コードを記述します。
-
コードを編集します。
-- この 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; -
スケジューリングプロパティを設定します。
設定ページで、右側の[スケジューリングプロパティ]をクリックしてスケジューリング設定パネルを開き、スケジューリングとノード情報を設定します。 詳細については、「ノードスケジューリングプロパティ」をご参照ください。 設定項目は次のとおりです。
パラメーター
設定
図解
[スケジューリングパラメータ]
スケジューリングパラメータ セクションで、次のパラメーターを設定します。
-
[パラメーター名]:
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という形式で生成します。 この出力は、ダウンストリームノードで利用可能になります。 -
-
その他の必要な設定を行い、ノードエディターのツールバーにある
[Save] アイコンをクリックします。
ads_user_info_1d_odps ノードの設定
ワークフローキャンバスで、ads_user_info_1d_odps ノードをダブルクリックします。ソーステーブル dws_user_info_all_di_odps を処理し、結果を ads_user_info_1d_odps テーブルに書き込む SQL コードを記述します。
-
コードを編集します。
-- この 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; -
スケジューリングプロパティを設定します。
設定ページで、右側の[スケジューリングプロパティ]をクリックするとスケジューリング設定パネルが開き、スケジューリングとノード情報を設定できます。 詳細については、「ノードのスケジューリングプロパティ」をご参照ください。 設定は次のとおりです。
パラメーター
設定
図解
[スケジューリングパラメータ]
スケジューリングパラメータ セクションで、次のパラメーターを設定します。
-
[パラメーター名]:
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という形式で生成します。 この出力は、ダウンストリームノードで利用可能になります。 -
-
その他の必要な設定を行い、ノードエディターのツールバーにある
[Save] アイコンをクリックします。
III. ワークフローの実行
ワークフローの実行
-
DataStudio ページで、ビジネスフロー 配下にある
User profile analysis_MaxComputeワークフローをダブルクリックします。ワークフローパネルが開いたら、ツールバーの
アイコンをクリックしてワークフローを実行します。ワークフローを実行すると、パネル上のノードが順次実行されます。各ノードの実行が完了すると、ノードの横に緑色の成功アイコンが表示されます。
-
実行ステータスを確認します。
-
タスク実行ステータスの表示:
状態のノードは、正常に実行されたことを示します。 -
タスク実行ログの表示: ノードを右クリックして [View Logs] を選択すると、開発環境でのログを表示できます。
-
結果の検証
すべてのタスクが
(成功) 状態になったら、最終結果テーブルをクエリします。
-
[データ開発] ページの左側メニューで、
をクリックして アドホッククエリ ペインを開きます。 -
アドホッククエリ を右クリックし、ノードの作成 > [ODPS SQL] を選択します。
ODPS SQL ノードで、次の SQL ステートメントを実行して最終結果テーブルを検証します。
// パーティションフィルターを実際のデータタイムスタンプに更新してください。たとえば、タスクが 20230222 に実行された場合、データタイムスタンプは 20230221 (タスク実行日の前日) になります。 select count(*) from ads_user_info_1d_odps where dt=''; 説明このチュートリアルのタスクは [DataStudio] (開発環境) で実行されます。そのため、出力データはデフォルトで、開発環境に紐づく workshop2024_01_dev MaxCompute プロジェクト内の指定テーブルに書き込まれます。
IV. ワークフローのデプロイ
タスクが自動的に実行されるようにスケジュールするには、本番環境にデプロイする必要があります。
開発環境へのコミット
ワークフローキャンバスのツールバーで、
[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] をクリックします。
本番環境へのデプロイ
ワークフローをコミットすると、タスクが開発環境で利用できるようになります。開発環境のタスクは自動的にスケジュールされないため、本番環境にデプロイする必要があります。
-
ワークフローキャンバスで、ツールバーの
[Deploy] アイコンをクリックするか、データ開発 ページで [Deploy] ボタンをクリックして デプロイメントパッケージの作成 ページを開きます。 -
タスクを関連するリソースや関数とともにバッチでデプロイします。
[Create Deploy Task] ページで、[Workflow] フィールドで [User Profile Analysis_MaxCompute] を選択します。リストには、ODPS SQL ノード、オフライン同期ノード、
workshop_start_odps仮想ノード、getregion関数、ip2region.jarリソースなど、デプロイ対象のすべての項目が表示されます。それらのステータスが [Check Passed] であることを確認します。すべての項目を選択し、[Deploy Selected Items] をクリックします。
ステップ5:運用保守とスケジューリング
本番環境では、データバックフィルを実行して履歴データを再処理できます。このチュートリアルでは、データバックフィルを使用して運用保守とスケジューリングを説明します。その他の運用保守機能の詳細については、「オペレーションセンター」をご参照ください。
-
オペレーションセンターに移動します。
タスクをデプロイした後、右上隅の オペレーションセンター をクリックします。
または、ワークフローエディターで、ツールバーの 運用保守に移動 をクリックして オペレーションセンター ページを開きます。
-
定期タスクのデータバックフィルを実行します。
-
左側のナビゲーションウィンドウで、 をクリックします。定期タスク ページで、ルートノード
workshop_start_odpsをクリックします。 -
workshop_start_odpsノードを右クリックし、 を選択します。 -
workshop_start_odpsノードのすべての下流ノードを選択し、業務日付を入力してから OK をクリックします。その後、データバックフィル ページにリダイレクトされます。オペレーションセンターの定期タスクの DAG ビューで、workshop_start_odps ノードを右クリックすると、[子ノードを展開] (下流ノードを階層ごとに表示)、[実行ログを表示]、[再実行]、[下流を再実行] などの運用保守オプションを含むコンテキストメニューが開きます。
-
-
すべての SQL タスクが正常に実行されるまで、パージ をクリックします。
次のステップ
タスクをデプロイすると、ワークフローは完了します。その後、データテーブルを表示し、そこからデータを消費し、データ品質のモニタリングを設定できます。詳細については、「データの管理」、「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 です。