Google フォームのアンケートの回答を変換して BigQuery に読み込む

1. はじめに

アンケートを実施する理由はさまざまで、顧客満足度の評価、市場調査の実施、製品やサービスの改善、従業員エンゲージメントの評価などがあります。ただし、標準フォーマットは使いづらいことに気づかないうちにアンケートのデータを扱ったことがあるかもしれません。このガイドでは、Google フォームの結果を取得し、Cloud Dataprep で分析するデータを準備して BigQuery に読み込み、チームが Looker やデータポータルなどのツールを使用してビジュアル分析を実行できるようにする自動パイプラインを構築します。

作成するアプリの概要

この Codelab では、Dataprep を使用して、Google フォームを使ったアンケートのサンプルの回答をデータ分析に適した形式に変換します。変換したデータを BigQuery に push します。BigQuery では、SQL を使用してより深い質問をしたり、他のデータセットと結合したりして、より高度な分析を行うことができます。最後に、事前構築済みのダッシュボードを探索したり、独自のビジネス インテリジェンス ツールを BigQuery に接続して新しいレポートを作成したりできます。

学習内容

  • Dataprep を使用してアンケート データを変換する方法
  • アンケート データを BigQuery に push する方法
  • アンケートのデータからより多くの分析情報を得る方法

必要なもの

  • 課金、BigQuery、Dataprep が有効になっている Google Cloud プロジェクト
  • Dataprep の基本的な知識は役立ちますが、必須ではありません
  • BigQuery と SQL の基本的な知識があると役立ちますが、必須ではありません

2. Google フォームの回答を管理する

まず、アンケートの例に対する Google フォームの回答を詳しく見ていきます。

f3d25efd2cc923f5.png

アンケート結果は「回答」からエクスポートできる[Google スプレッドシート] アイコンをクリックして新しいスプレッドシートを作成するか、結果を既存のスプレッドシートに読み込むことができます。[回答を受付中] の選択を解除するまで、回答者が回答を送信すると Google フォームで引き続き回答がスプレッドシートに追加されます] ボタンを離します。

d499e5a4dccdf5fd.png

4939332a5d8f9f19.png

それでは、各回答の種類と、それが Google スプレッドシート ファイルでどのように翻訳されるかを見ていきましょう。

3. アンケートの回答を変換する

アンケートの質問は、特定のエクスポート形式を持つ 4 つのファミリーにグループ化できます。質問の種類に応じて、データを特定の方法で再構成する必要があります。ここでは、各グループと、適用する必要がある変換の種類を確認します。

単一選択問題: 記述式、段落、プルダウン、線形スケールなど

  • Question name: 列名
  • レスポンス: セル値
  • 変換の要件: 変換の必要はありません。レスポンスはそのまま読み込まれます。

3eeedc50b0fd54fd.png

多肢選択式の質問: 多肢選択式、チェックボックス

  • Question name: 列名
  • レスポンス: セミコロン区切りの値のリスト(例: Resp 1; Resp 4; Resp 6)
  • 変換の要件: 値のリストを抽出してピボットすることで、各レスポンスが新しい行になります。

cab8a38a96a13ce4.png

多肢選択式の質問(グリッド)

こちらは多肢選択式の質問の例です。各行から 1 つの値を選択する必要があります。

c6ea3d47d4dd5e78.png

  • 質問名: 個々の質問は、「質問 [オプション]」という形式の列名になります。
  • レスポンス: グリッド内の各レスポンスが、一意の値を持つ列になります。
  • 変換の要件: 各質問と回答は、テーブル内で新しい行として 2 つの列に分割される必要があります。1 列には質問の option に関する列、もう 1 列には回答を記入。

9223d0271516c58d.png

選択式チェックボックス(グリッド形式の質問)

これはチェックボックス グリッドの例です。各行から選択しないか、複数の値を選択できます。

4e3189b8cc2d4a8b.png

  • 質問名: 個々の質問は、「質問 [オプション]」という形式の列名になります。
  • レスポンス: グリッド内の各レスポンスは、セミコロンで区切られた値のリストを含む列になります。
  • 変換の要件: 「チェックボックス」を組み合わせた質問形式です選択肢のグリッドとこの順序で解決する必要があります

まず、各レスポンスの値のリストを抽出してピボット化する必要があるので、各回答が特定の質問の新しい行になります。

2 つ目: 個々のレスポンスが、テーブル内で新しい行として 2 つの列に分割される必要があります。1 列には質問の option を記載し、もう 1 列は回答を記載します。

3c3c2bd098e03003.png

次に、これらの変換が Cloud Dataprep でどのように処理されるかを紹介します。

4. Cloud Dataprep フローを構築する

「Google フォームの分析パターン」をインポートする(Cloud Dataprep)

Google Forms Analytics Design Pattern フロー パッケージを(解凍せずに)ダウンロードします。Cloud Dataprep アプリケーションで、左側のナビゲーション バーにあるフローアイコンをクリックします。次に、[Flows] ページで、コンテキスト メニューから [Import] を選択します。

ba7c0cb0eec398df.png

フローをインポートした後、インポートしたフローを選択して編集します。画面は次のようになります。

44978861eb34ec71.png

Connect Google スプレッドシートのアンケート結果のスプレッドシート

フローの左側で、Google フォームの結果を含む Google スプレッドシートにデータソースを再接続する必要があります。Google スプレッドシートのデータセット オブジェクトを右クリックし、[置換] を選択します。

55c16f0c04366f0c.png

次に [Import Datasets]をリンクをクリックします。[経路を編集] をクリックします。。

8afeef260c96277f.png

現在の値を、Google フォームの検索結果を含む Google スプレッドシートを参照する次のリンクに置き換えます。例: https://docs.google.com/spreadsheets/d/1DgIlvlLceFDqWEJs91F8rt1B-X0PJGLY6shkKGBPWpk/edit?usp=sharing

[Go] をクリックします。[インポートとフローに追加」。モーダルに戻ったら、[置換] をクリックします。] ボタンをクリックすると、

BigQuery テーブルを接続する

フローの右側で、出力を独自の BigQuery インスタンスに接続する必要があります。各出力のアイコンをクリックして、次のようにプロパティを編集します。

まず、[手動設定のリンク先] を編集します。

a3fc2cb80153ec25.png

次の [Publishing Settings]では[編集] ボタンをクリックし、

85791e6162a370de.png

[公開操作]が表示されたらBigQuery 接続をクリックして、そのプロパティを編集し、接続設定を変更する必要があります。

1f3e4887baaeaffd.png

Google フォームの結果を読み込む BigQuery データセットを選択します。「デフォルト」を選択できます。BigQuery データセットをまだ作成していない場合は、作成してください。

f4eaa05ecf9de162.png

[手動で指定した宛先] を編集したら、[スケジュールされた宛先] についても同じように操作します。出力です。

46edea1b8ca63270.png

同じ手順で各出力を反復処理します。編集する必要があるリンク先は合計 8 個です。

5. Cloud Dataprep のフローの説明

「Google フォームのアナリティクス デザイン パターン」の基本的な考え方各質問カテゴリを特定の Cloud Dataprep データ変換レシピに分割して、アンケートの回答を変換します。

このフローでは、質問を 4 つのテーブル(わかりやすくするために 4 つの質問カテゴリに対応)に分割しています。

afa421849b1bd398.png

「Clean Headers」から始め、各レシピを 1 つずつ確認することをおすすめします。次に「SingleChoiceSELECT-Questions」をその下に別のレシピが続きます。

すべてのレシピにコメントが付けられ、さまざまな変換ステップが説明されています。レシピでは、ステップを編集し、特定の列の「変更前」と「適用後」の状態をプレビューできます。

449da06d96cd520e.png

4ac6e14f578d0707.png

6. Cloud Dataprep フローを実行する

送信元と宛先が適切に構成されたら、フローを実行してレスポンスを変換し、BigQuery に読み込みます。各出力を選択して、[Run] をクリックします。] ボタンを離します。指定された BigQuery テーブルが存在する場合は、Dataprep によって新しい行が追加されます。存在しない場合は、新しいテーブルが作成されます。

47cf50f6d17a5b1e.png

[ジョブ履歴] をクリックします。アイコンをクリックしてジョブをモニタリングします。続行して BigQuery テーブルが読み込まれるまでに数分かかります。

afc79eeb27202fb4.png

すべてのジョブが完了すると、アンケート結果は分析可能なクリーンで構造化された正規化された形式で BigQuery に読み込まれます。

7. アンケート データを BigQuery で分析する

BigQuery の Google コンソールで、新しい各テーブルの詳細を確認できます。

df370873572511ac.png

BigQuery のアンケート データを使用すると、より包括的な質問を簡単に作成して、アンケートの回答をより深く理解できます。たとえば、さまざまな職位の人が最もよく使用しているプログラミング言語を把握しようとしているとします。次のようなクエリを作成できます。

SELECT
   programming_answers.Language  AS programming_answers_language,
   project_answers.Title  AS project_answers_title,
   AVG((case when programming_answers.Level='None' then 0 
when programming_answers.Level='beginner' then 1
when programming_answers.Level='competent' then 2 
when programming_answers.Level='proficient' then 3
when programming_answers.Level='expert' then 4 
else null end) ) AS programming_answers_average_level_value
FROM `my-project.DesignPattern.A000111_ProjectAnswers` AS project_answers
INNER JOIN `my-project.A000111_ProgrammingAnswers` AS programming_answers
ON programming_answers.RESPONSE_ID = project_answers.RESPONSE_ID
GROUP BY 1,2
ORDER BY 3 DESC

より効果的な分析を行うために、アンケートの回答を CRM データに結合し、データ ウェアハウスにすでに含まれているアカウントに参加者がマッピングされているかどうかを確認できます。これにより、カスタマー サポートや新規リリースのターゲット ユーザーについて、より多くの情報に基づいた意思決定を行うことができます。

ここでは、回答者のドメインとアカウントのウェブサイトに基づいて、アンケート データをアカウント テーブルに結合する方法を説明します。アカウントの種類ごとに回答の分布を確認できるようになりました。これにより、既存の顧客アカウントに属している回答者の数を把握できます。

SELECT
   account.TYPE  AS account_type,
   COUNT(DISTINCT project_answers.Domainname) AS project_answers_count_domains
FROM `my-project.A000111_ProjectAnswers` AS project_answers
LEFT JOIN `my-project.testing.account` AS account 
ON project_answers.Domainname=account.website
GROUP BY 1

8. ビジュアル分析を実行する

アンケート データがデータ ウェアハウスに一元化されたため、ビジネス インテリジェンス ツールで簡単にデータを分析できるようになりました。データポータルLooker で、いくつかのサンプル レポートを作成しました。

Looker

Looker インスタンスがすでにある場合は、このフォルダの LookML を使用して、このパターンのサンプル アンケートや CRM データの分析を開始できます。新しい Looker プロジェクトを作成して LookML を追加し、ファイル内の接続名とテーブル名を BigQuery の構成に合わせて置き換えるだけです。Looker インスタンスをお持ちでなく、詳細についてご興味をお持ちの場合は、こちらでデモのご予約をお願いいたします。

129db05d6f85f484.png

データポータル

または、データポータルでレポートを作成するには、Google が「空のレポート」とクロスしたフレームをクリックします。BigQuery に接続しますデータポータルのすべての手順に沿って操作します。詳しくは、こちらのクイック スタートとデータポータルの主な機能の概要をご覧ください。ビルド済みのデータポータル ダッシュボードをここで確認することもできます。

5e744869e3fe3f8f.png

9. クリーンアップ

課金を停止する最も簡単な方法は、チュートリアル用に作成した Cloud プロジェクトを削除することです。また、リソースを個別に削除することもできます。

  1. Cloud コンソールで、リソースの管理に移動します。
  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。