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

Data Lake Formation:DLF データ探索 - Taobao ユーザー行動分析

最終更新日:Jan 13, 2025

Data Lake Formation(DLF)は、メタデータ抽出とデータ探索機能を提供します。このトピックでは、DLF を使用して Taobao ユーザー行動のサンプルデータを分析する方法について説明します。

前提条件

オブジェクトストレージサービス(OSS)バケットが作成されていること。バケットの作成方法の詳細については、「バケットの作成」をご参照ください。

プロセス

  1. サービスのアクティブ化: Alibaba Cloud アカウントを作成し、DLF と OSS をアクティブ化します。

  2. サンプルデータセットのダウンロードとインポート: サンプルデータを CSV ファイルにダウンロードし、ファイルを OSS にアップロードします。

  3. メタデータ抽出: DLF のメタデータ抽出機能を使用して、ファイルスキーマを自動的に識別し、メタデータテーブルを作成します。

  4. データ探索: DLF のデータ探索機能を使用して、ユーザーエンゲージメントやファネルモデルなど、ユーザー行動を分析します。

データの説明

Alibaba Cloud Tianchi コンテストで使用された Taobao ユーザー行動データセットがテストで使用されます。テストのパフォーマンスを向上させるために、データセットは整理されています。データセットは、ユーザー行動データと製品サンプルデータを CSV 形式で保存します。

Taobao ユーザー行動データセットの詳細については、https://tianchi.aliyun.com/dataset/dataDetail?dataId=46 をご覧ください。

データセット内のデータの時間範囲: 2014 年 12 月 1 日~ 2014 年 12 月 7 日

データ形式:

ユーザーテーブル

説明

備考

user_id

ユーザー ID。

サンプリングされ、非個人化されています。この ID は実際の ID ではありません。

item_id

商品 ID。

非個人化されています。この ID は実際の ID ではありません。

behavior_type

ユーザー行動のタイプ。

有効な値: 1、2、3、4。1 はクリック、2 はお気に入りに追加、3 はカートに追加、4 は支払いを示します。

user_geohash

行動が発生したときのユーザーの地理的な位置。値が空の場合があります。

ユーザーの緯度と経度に基づいて、機密アルゴリズムを使用して生成されます。

item_category

商品のカテゴリ ID。

非個人化されています。この ID は実際の ID ではありません。

time

行動が発生した時刻。

時間単位の精度です。

商品テーブル

説明

備考

item_id

商品 ID。

サンプリングされ、非個人化されています。この ID は実際の ID ではありません。

item_ geohash

行動が発生したときの商品の地理的な位置。値が空の場合があります。

商品の緯度と経度に基づいて、機密アルゴリズムを使用して生成されます。

item_category

商品のカテゴリ ID。

非個人化されています。この ID は実際の ID ではありません。

手順

ステップ 1: DLF と OSS をアクティブ化する

  1. DLF コンソールにログインします。

  2. DLF と OSS をアクティブ化し、必要な権限を付与します。(サービスをすでにアクティブ化している場合は、この手順をスキップします。)

    1. DLF サービスをアクティブ化していない場合は、コンソールにログインすると、サービスをアクティブ化するように求められます。[data Lake Formation を無料でアクティブ化する] をクリックします。

    2. サービスがアクティブ化されたら、DLF コンソールのホームページに戻ります。OSS をアクティブ化し、DLF に依存データソースへのアクセス権限を付与するように求められます。[アクティブ化] をクリックして、OSS をアクティブ化し、必要な権限を付与します。

  3. DLF コンソールのホームページが表示されます。

ステップ 2: 分析するデータファイルを OSS にアップロードする

  1. サンプルコードをローカルディスクにダウンロードします。

    ダウンロードしたパッケージを解凍します。user_behavior_data ファイルが取得されます。このファイルには、CSV データファイルを含む item フォルダと user フォルダが含まれています。このセクションのテストでは、user フォルダに焦点を当てています。次の図は、フォルダ内の一部のデータの例を示しています。

    image

  2. user_behavior_data フォルダを OSS にアップロードします。詳細については、「シンプルアップロード」をご参照ください。

    次の図は、OSS のディレクトリ構造を示しています。item と user は、2 つのテーブルのデータフォルダを示します。

    説明

    フォルダ内の .DS_Store ファイルを削除する必要があります。

    image

ステップ 3: DLF からメタデータを抽出する

  1. DLF コンソールにログインします。

  2. データベースを作成します。

    1. 左側のナビゲーションペインで、[メタデータ] > [メタデータ] を選択します。

    2. [データベース] タブをクリックし、[カタログリスト] ドロップダウンリストから管理するカタログを選択し、[データベースの作成] をクリックします。

    3. 表示されたページで、次のパラメータを設定し、[OK] をクリックします。

      • [カタログ]: カタログを選択します。

      • [データベース名]: データベース名を入力します。

      • [データベースの説明]: オプション。データベースの説明を入力します。

      • [パスの選択]: 前の手順の user_behavior_data ファイルが保存されている OSS パスを選択します。

    4. データベースが作成されていることを確認します。次の図は、作成されたデータベースを示しています。

      image

  3. DLF を使用してメタデータを抽出します。

    1. 左側のナビゲーションペインで、[メタデータ] > [メタデータディスカバリ] を選択します。

    2. [メタデータディスカバリ] ページで、[抽出タスクの作成] をクリックします。表示されたページで、パラメータを設定します。詳細については、「メタデータディスカバリ」をご参照ください。

    3. [抽出ソースの設定] セクションのパラメータを設定し、[次へ] をクリックします。

      image

    4. [デスティネーションデータベース] パラメータを指定し、[次へ] をクリックします。

      image

    5. [抽出タスクの設定] セクションのパラメータを設定します。

      • [RAM ロール]: 使用する RAM ロールを選択します。デフォルトでは、アクティブ化フェーズで必要な権限が付与されている AliyunDLFWorkFlowDefaultRole ロールが表示されます。

      • [実行ポリシー]: [手動] を選択します。

      • [抽出ポリシー]: このパラメータを [すべて抽出] に設定します。DLF がメタデータを抽出するときに、各ファイルのすべてのメタデータをスキャンします。データ量が大きい場合、この抽出方法は時間がかかります。「すべて抽出」の結果はより正確です。

      image

    6. 情報を確認し、[保存して実行] をクリックします。

      image

    7. システムは [メタデータディスカバリ] ページに戻ります。新しいタスクが作成され、自動的に実行されます。データ量が大きい場合、この抽出方法は時間がかかります。

      ポインタをステータス列の疑問マークアイコンの上に移動します。メッセージが表示され、2 つのメタデータテーブルが作成されたことが示されます。

      image

  4. テーブルをクエリします。

    1. [データベース] リンクをクリックします。表示されたページで、[テーブルリスト] タブをクリックして、データベース内のテーブル情報を表示します。

      image

    2. テーブル名をクリックして、抽出されたテーブルの構造が想定どおりであるかどうかを確認します。

      image

      image

ステップ 4: ユーザー行動データを分析する

データ分析のプロセスは、次の 3 つのステップで構成されます。

  1. データのプレビューと確認。

  2. データの前処理。

  3. ユーザーエンゲージメント、ファネル、商品の人気度を分析します。

データのプレビューと確認

左側のナビゲーションペインで、[データ探索] をクリックします。SQL エディタで、次のステートメントを入力してファイルデータを表示します。

SET spark.sql.legacy.timeParserPolicy=LEGACY;
-- データをプレビューします。
SELECT * FROM `demo_db`.`user` limit 10;
SELECT * FROM `demo_db`.`item` limit 10;

-- ユーザー数。
SELECT COUNT(DISTINCT user_id) FROM `demo_db`.`user`;

-- 商品数。
SELECT COUNT(DISTINCT item_id) FROM `demo_db`.`item`;

-- 行動レコード数。
SELECT COUNT(*) FROM `demo_db`.`user`;

次の図は、結果を示しています。

image

データの前処理

生のデータを前処理して、データの可読性と分析パフォーマンスを向上させることができます。

  • Parquet 形式で user_log テーブルを作成し、日付でテーブルをパーティション化します。

  • behavior_type の値を理解しやすい文字列に変換します。有効な値: 1、2、3、4。1 はクリック、2 はお気に入りに追加、3 はカートに追加、4 は支払いを示します。

  • ログの time 列を date 列と hour 列に分割し、days of week 列を追加します。これは、日付と時間のレベルでデータを分析するのに役立ちます。

  • 不要なフィールドを除外します。次に、必要なデータを user_log という名前の新しいテーブルに保存します。

新しいテーブルに基づいてユーザー行動が分析されます。

CREATE TABLE `demo_db`.`user_log` 
USING PARQUET
PARTITIONED BY (date)
AS SELECT 
    user_id, 
    item_id,
    CASE 
      WHEN behavior_type = 1 THEN 'click'
      WHEN behavior_type = 2 THEN 'collect'
      WHEN behavior_type = 3 THEN 'cart'
      WHEN behavior_type = 4 THEN 'pay'
    END AS behavior, 
    item_category, 
    time,
    date_format(time, 'yyyy-MM-dd') AS date,
    date_format(time, 'H') AS hour,
    date_format(time, 'u') AS day_of_week
  FROM `dlf_demo`.`user`;
  
 -- 結果を表示します。
SELECT * FROM `demo_db`.`user_log` limit 10; 

次の図は、結果を示しています。

image

ユーザー行動を分析する

  1. ファネルモデルに基づいて、クリック、カートに追加、お気に入りに追加から購入までのすべてのユーザーの行動を分析します。

    -- 分析には 13 秒かかります。
    SELECT
      behavior, COUNT(*) AS total
    FROM `demo_db`.`user_log`
    GROUP BY behavior
    ORDER BY total DESC

    次の図は、結果を示しています。

    image

  2. 曜日ごとのユーザー行動を分析します。

    -- 分析には 14 秒かかります。
    SELECT 
      date, day_of_week,
      COUNT(DISTINCT(user_id)) as uv,
      SUM(CASE WHEN behavior = 'click' THEN 1 ELSE 0 END) AS click,
      SUM(CASE WHEN behavior = 'cart' THEN 1 ELSE 0 END) AS cart,
      SUM(CASE WHEN behavior = 'collect' THEN 1 ELSE 0 END) AS collect,
      SUM(CASE WHEN behavior = 'pay' THEN 1 ELSE 0 END) AS pay
    FROM `demo_db`.`user_log`
    GROUP BY date, day_of_week
    ORDER BY date

    次の図は、結果を示しています。(データセットが整理されているため、分析結果は歪んでいます。)

  3. 商品テーブルに基づいて、データセット内で最も人気のある上位 10 個の商品カテゴリを分析します。

    -- 分析には 1 分 10 秒かかります。
    SELECT item.item_category, COUNT(*) AS times
    FROM `demo_db`.`item` item
      JOIN `demo_db`.`user_log` log
      ON item.item_id = log.item_id
    WHERE log.behavior='pay'
    GROUP BY item.item_category
    ORDER BY times DESC
    LIMIT 10;

    次の図は、結果を示しています。

  4. (オプション) 分析結果をダウンロードします。

    DLF では、分析結果を CSV ファイルとしてダウンロードできます。ダウンロードする前に、分析結果を保存する OSS パスを指定する必要があります。分析結果は、指定されたパスに保存されます。

    1. [データ探索] ページの右上隅にある [パスの設定] をクリックします。[OSS パスの選択] ダイアログボックスで、[結果の保存パス] パラメータを指定します。既存のフォルダを選択するか、フォルダを作成できます。

      image

    2. 設定が完了したら、SQL ステートメントを実行します。[実行履歴] タブで、レコードの [アクション] 列の [ダウンロード] をクリックしてファイルをダウンロードできます。また、OSS コンソールでファイルにアクセスしてダウンロードすることもできます。

  5. (オプション) SQL ステートメントを保存します。

    [保存] をクリックして、前の手順で実行した SQL ステートメントを保存できます。その後、必要に応じて、[保存済みクエリ] タブで保存済みの SQL ステートメントを実行できます。

FAQ

質問がある場合、またはデータレイクテクノロジーについて詳しく知りたい場合は、WeChat で公式アカウント「Data Lake Technology Circle」をフォローしてください。