このチュートリアルでは、DataWorks と E-MapReduce (EMR) を使用したユーザープロファイル分析実験について説明します。このチュートリアルを完了すると、次の方法を習得できます。
-
複数のソース (ApsaraDB RDS for MySQL および Object Storage Service (OSS)) から EMR にデータを同期します。
-
生のウェブアクセスログを処理し、分析可能なフィールドに分割します。
-
処理されたログデータとユーザー情報を集約して、ユーザープロファイルを生成します。
-
自動化されたルールでデータ品質を監視し、ダーティデータがダウンストリームノードに到達する前に捕捉します。
前提条件
開始する前に、次のものがあることを確認してください。
-
DataWorks と EMR へのアクセス権を持つ Alibaba Cloud アカウント。
-
SQL とデータパイプラインの概念に関する基本的な知識。
実験設計
背景情報
ウェブサイトトラフィックに対するきめ細かい操作をサポートするために、この実験では定期的なユーザープロファイル分析パイプラインを構築します。このパイプラインは、ユーザーの地理的および社会的属性をカバーし、DataWorks を使用して次のことを行います。
-
異なるソースからデータを同期します。
-
生データを処理し、変換します。
-
データ品質を管理します。
-
データを消費可能にします。
仕組み
パイプラインは次の4つのステップで実行されます。
-
同期: Data Integration は、ApsaraDB RDS for MySQL から基本ユーザー情報を、OSS からウェブアクセスログを抽出し、両方を EMR にロードします。
-
処理: 関数と正規表現を使用して、生のアクセスログを構造化されたフィールドに分割します。EMR で分割されたログとユーザー情報を集約します。
-
変換: 集約されたデータをさらに処理して、完全なユーザープロファイルを生成します。
-
監視: Data Quality ルールを適用して、スケジューリングノードの出力にあるダーティデータを検出し、子孫ノードへの伝播を防ぎます。
関連する DataWorks サービス
次の表は、各パイプラインステップと使用される DataWorks サービス、および習得するスキルをマッピングしています。
| ステップ | 操作 | 学習内容 |
|---|---|---|
| データの同期 | 同期ノードを構成して、ApsaraDB RDS for MySQL からユーザー情報を、OSS からアクセスログを EMR にロードします。 | 異なるソースから EMR にデータを同期します。関連するデータソースのテーブルを作成します。ノードを手動でトリガーします。ノードログを表示します。 |
| データの処理 | DataStudio で、関数または正規表現を使用してアクセスログをフィールドに分割し、ログとユーザー情報を集約してユーザープロファイルを生成します。 | DataWorks ワークフローでノードを作成および構成します。ワークフローを実行します。 |
| データ品質監視ルールの構成 | Data Quality で、スケジューリングノードによって生成されたテーブルの監視ルールを構成して、ダーティデータを検出します。 | データ品質ルールを設定して、ソースデータの変更によって引き起こされるダーティデータを特定し、子孫ノードに影響を与えるのを防ぎます。 |
実験データ
アクセスログデータ
この実験では、OSS オブジェクト user_log.txt に保存されている生のウェブアクセスログを使用します。各ログ行は次の形式に従います。
$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent"$http_referer" "$http_user_agent" [unknown_content];
次の表は、生ログから抽出された各フィールドについて説明しています。
| フィールド | 説明 |
|---|---|
$remote_addr |
クライアントの IP アドレス |
$remote_user |
クライアントへのログインに使用されるユーザー名 |
$time_local |
サーバー上のローカル時刻 |
$request |
リクエストタイプ、URL、HTTP バージョンを含む HTTP リクエスト |
$status |
サーバーによって返される HTTP ステータスコード |
$body_bytes_sent |
ヘッダーバイトを除く、クライアントに送信されたバイト数 |
$http_referer |
リクエストのソース URL |
$http_user_agent |
ブラウザタイプなどのクライアント情報 |
ユーザー情報データ
基本ユーザー情報は、ApsaraDB RDS for MySQL のテーブル ods_user_info_d に保存されています。
| フィールド | 説明 |
|---|---|
uid |
ユーザー名 |
gender |
性別 |
age_range |
年齢層 |
zodiac |
星座 |
最終出力データ
2つのデータソースを処理および集約した後、パイプラインは次のスキーマを持つ結果テーブルを生成します。
| フィールド | 説明 |
|---|---|
uid |
ユーザー名 |
region |
リージョン |
デバイス | 端末タイプ |
pv | ページビュー |
gender | 性別 |
age_range | 年齢範囲 |
Zodiac | 星座 |
次のステップ
実験を完了した後、次の操作でパイプラインを拡張できます。
| 操作 | 説明 | 関連ドキュメント |
|---|---|---|
| メタデータの管理 | Data Map で、ソーステーブルのメタデータを表示および管理します。 | データの管理 |
| データの利用 | DataAnalysis で、結果テーブルに対して SQL クエリを実行し、ユーザーの地理的分布と都市ランキングを分析します。API 機能を使用して、DataService Studio で結果テーブルを API として公開します。 | ダッシュボードでデータを可視化する および API を使用してデータサービスを提供する |