Jupyter Notebook のクエリーサービス
Adobe Experience PlatformQuery Service を標準機能として JupyterLab に統合することで、Data Science Workspace で構造化照会言語 (SQL) を使用できます。
このチュートリアルでは、 Adobe Analytics データを探索、変換、分析するための一般的なユース ケースのサンプル SQL クエリを示します。
はじめに
このチュートリアルを開始する前に、次の前提条件を満たす必要があります。
-
Adobe Experience Platformへのアクセス。Experience Platform で組織にアクセスできない場合は、続行する前にシステム管理者に問い合わせてください
-
Adobe Analytics データセット
-
このチュートリアルで使用する次の主要概念に対する十分な理解
アクセス JupyterLab および Query Service access-jupyterlab-and-query-service
-
Experience Platformで、左側のナビゲーション列から ノートブック に移動します。JupyterLab が読み込まれるまで、しばらく待ちます。
note note NOTE 新しいランチャータブが自動的に表示されない場合は、[ ファイル ] をクリックして新しいランチャータブを開き、[ランチャー 新規] を選択します。 -
「ランチャー」タブで、Python 3 環境の「空白」アイコンをクリックして、空のノートブックを開きます。
note note NOTE Python 3 は、現在、ノートブックでのクエリ サービスでサポートされている唯一の環境です。 -
左側の選択パネルで、データ アイコンをクリックし、「データセット」ディレクトリをダブルクリックして、すべてのデータセットをリストします。
-
一覧を探索する Adobe Analytics データセット検索文字列右クリックし、[ ノートブックのクエリデータ をクリックして、空のノートブックに SQL クエリを生成します。
-
qs_connect()
関数が含まれる最初の生成済みセルをクリックし、再生ボタンをクリックして実行します。この関数は、ノートブックインスタンスと Query Service の間に接続を作成します。 -
2 番目に生成された SQL クエリから Adobe Analytics のデータセット名をコピーし、
FROM
の後の値にします。 -
「+」ボタンをクリックして、ノートブックの新しいセルを挿入します。
-
次のインポートステートメントをコピーし、新しいセルに貼り付けて実行します。これらのステートメントは、データを視覚化するために使用されます。
code language-python import plotly.plotly as py import plotly.graph_objs as go from plotly.offline import iplot
-
次に、以下の変数をコピーし、新しいセルに貼り付けます。必要に応じて値を変更してから、値を実行します。
code language-python target_table = "your Adobe Analytics dataset name" target_year = "2019" target_month = "04" target_day = "01"
target_table
:あなたの Adobe Analytics データセット名前。target_year
:ターゲットデータの取得元である特定の年。target_month
:ターゲットの開始日である特定の月。target_day
:ターゲットデータの発生元となる特定の日。
note note NOTE これらの値はいつでも変更できます。 値を変更する場合は、変数セルを実行して、変更を適用する必要があります。
データのクエリ query-your-data
個々のノートブックセルに次の SQL クエリを入力します。セルを選択してクエリを実行したあと、「再生」ボタンを選択します。 成功したクエリの結果またはエラーログは、実行されたセルの下に表示されます。
ノートブックが長時間非アクティブになると、ノートブックと Query Service 間の接続が切断される可能性があります。 このような場合は、電源ボタンの横にある右上隅にある 再起動 ボタン を選択してJupyterLabを再起動します。
ノートブックカーネルはリセットされますが、セルは残りますので、すべてのセルを再実行して、中断したところから続行します。
1 時間ごとの訪問者数 hourly-visitor-count
次のクエリは、指定した日付の 1 時間ごとの訪問者数を返します。
クエリ
%%read_sql hourly_visitor -c QS_CONNECTION
SELECT Substring(timestamp, 1, 10) AS Day,
Substring(timestamp, 12, 2) AS Hour,
Count(DISTINCT concat(enduserids._experience.aaid.id,
_experience.analytics.session.num)) AS Visit_Count
FROM {target_table}
WHERE TIMESTAMP = to_timestamp('{target_year}-{target_month}-{target_day}')
GROUP BY Day, Hour
ORDER BY Hour;
上記のクエリでは、WHERE
句のタイムスタンプが target_year
の値に設定されます。 変数を中括弧({}
)で囲んで、SQL クエリに含めます。
オプションの変数 hourly_visitor
は、クエリの最初の行に含まれます。クエリの結果は、この変数に Pandas データフレームとして保存されます。結果をデータフレームに保存すると、後で目的の Python パッケージを使用してクエリ結果を視覚化できます。 新しいセルに次の Python コードを実行して、棒グラフを生成します。
trace = go.Bar(
x = hourly_visitor['Hour'],
y = hourly_visitor['Visit_Count'],
name = "Visitor Count"
)
layout = go.Layout(
title = 'Visit Count by Hour of Day',
width = 1200,
height = 600,
xaxis = dict(title = 'Hour of Day'),
yaxis = dict(title = 'Count')
)
fig = go.Figure(data = [trace], layout = layout)
iplot(fig)
1 時間ごとのアクティビティ数 hourly-activity-count
次のクエリは、指定した日付の 1 時間ごとのアクション数を返します。
クエリ
%%read_sql hourly_actions -d -c QS_CONNECTION
SELECT Substring(timestamp, 1, 10) AS Day,
Substring(timestamp, 12, 2) AS Hour,
Count(concat(enduserids._experience.aaid.id,
_experience.analytics.session.num,
_experience.analytics.session.depth)) AS Count
FROM {target_table}
WHERE TIMESTAMP = to_timestamp('{target_year}-{target_month}-{target_day}')
GROUP BY Day, Hour
ORDER BY Hour;
上記のクエリを実行すると、結果が hourly_actions
にデータフレームとして保存されます。新しいセルで次の関数を実行し、結果をプレビューします。
hourly_actions.head()
上記のクエリを変更し、WHERE 句で論理演算子を使用して、指定した日付範囲の 1 時間ごとのアクション数を返すことができます。
クエリ
%%read_sql hourly_actions_date_range -d -c QS_CONNECTION
SELECT Substring(timestamp, 1, 10) AS Day,
Substring(timestamp, 12, 2) AS Hour,
Count(concat(enduserids._experience.aaid.id,
_experience.analytics.session.num,
_experience.analytics.session.depth)) AS Count
FROM {target_table}
WHERE timestamp >= TO_TIMESTAMP('2019-06-01 00', 'YYYY-MM-DD HH')
AND timestamp <= TO_TIMESTAMP('2019-06-02 23', 'YYYY-MM-DD HH')
GROUP BY Day, Hour
ORDER BY Hour;
変更されたクエリを実行すると、結果がデータフレームとして hourly_actions_date_range
に保存されます。 新しいセルで次の関数を実行し、結果をプレビューします。
hourly_actions_date_rage.head()
訪問者セッションごとのイベント数 number-of-events-per-visitor-session
次のクエリは、指定した日付の訪問者セッションごとのイベント数を返します。
クエリ
%%read_sql events_per_session -c QS_CONNECTION
SELECT concat(enduserids._experience.aaid.id,
'-#',
_experience.analytics.session.num) AS aaid_sess_key,
Count(timestamp) AS Count
FROM {target_table}
WHERE TIMESTAMP = to_timestamp('{target_year}-{target_month}-{target_day}')
GROUP BY aaid_sess_key
ORDER BY Count DESC;
訪問セッションあたりのイベント数のヒストグラムを生成するには、以下の Python コードを実行します。
data = [go.Histogram(x = events_per_session['Count'])]
layout = go.Layout(
title = 'Histogram of Number of Events per Visit Session',
xaxis = dict(title = 'Number of Events'),
yaxis = dict(title = 'Count')
)
fig = go.Figure(data = data, layout = layout)
iplot(fig)
特定の日の人気ページ popular-pages-for-a-given-day
次のクエリは、指定した日付の最も人気の高い 10 ページを返します。
クエリ
%%read_sql popular_pages -c QS_CONNECTION
SELECT web.webpagedetails.name AS Page_Name,
Sum(web.webpagedetails.pageviews.value) AS Page_Views
FROM {target_table}
WHERE TIMESTAMP = to_timestamp('{target_year}-{target_month}-{target_day}')
GROUP BY web.webpagedetails.name
ORDER BY page_views DESC
LIMIT 10;
特定の日のアクティブユーザー active-users-for-a-given-day
次のクエリは、指定した日付の最もアクティブな 10 人のユーザーを返します。
クエリ
%%read_sql active_users -c QS_CONNECTION
SELECT enduserids._experience.aaid.id AS aaid,
Count(timestamp) AS Count
FROM {target_table}
WHERE TIMESTAMP = to_timestamp('{target_year}-{target_month}-{target_day}')
GROUP BY aaid
ORDER BY Count DESC
LIMIT 10;
ユーザアクティビティごとのアクティブな都市 active-cities-by-user-activity
次のクエリは、指定した日付のユーザーアクティビティの大部分を生成している 10 都市を返します。
クエリ
%%read_sql active_cities -c QS_CONNECTION
SELECT concat(placeContext.geo.stateProvince, ' - ', placeContext.geo.city) AS state_city,
Count(timestamp) AS Count
FROM {target_table}
WHERE TIMESTAMP = to_timestamp('{target_year}-{target_month}-{target_day}')
GROUP BY state_city
ORDER BY Count DESC
LIMIT 10;
次の手順
このチュートリアル、Jupyter ノートブックでQuery Serviceを利用するためのいくつかのサンプル ユース ケースを示しました。「Jupyter ノートブックによるデータの分析」のチュートリアルに従って、Data Access SDK を使用して同様の操作がどのように実行されるかを確認します。