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

1. はじめに

アンケートを実施する理由はさまざまです。顧客満足度の評価、市場調査の実施、商品やサービスの改善、社員エンゲージメントの評価などです。ただし、アンケートデータを扱ったことがある方は、標準形式の扱いにくさをご存じでしょう。このガイドでは、Google フォームの結果をキャプチャし、Cloud Dataprep で分析できるようにデータを準備し、BigQuery に読み込んで、Looker やデータポータルなどのツールを使用してチームがビジュアル分析を実行できるようにする自動パイプラインを構築します。

作成するアプリの概要

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

学習内容

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

必要なもの

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

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

まず、サンプル アンケートに対する Google フォームの回答を詳しく見てみましょう。

f3d25efd2cc923f5.png

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

d499e5a4dccdf5fd.png

4939332a5d8f9f19.png

各回答の種類と、Google スプレッドシート ファイルへの変換方法について確認しましょう。

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

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

単一選択式の問題: 記述式、段落、プルダウン、リニア スケールなど

  • 質問の名前: 列名
  • レスポンス: セル値
  • 変換の要件: 変換は不要です。レスポンスはそのまま読み込まれます。

3eeedc50b0fd54fd.png

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

  • 質問の名前: 列名
  • レスポンス: セミコロンで区切られた値のリスト(例:「Resp 1; Resp 4; Resp 6」)
  • 変換の要件: 値のリストが抽出され、ピボットされる必要があります。これにより、各レスポンスが新しい行になります。

cab8a38a96a13ce4.png

選択式(グリッド)の問題

以下に、多肢選択式の問題の例を示します。各行から 1 つの値を選択する必要があります。

c6ea3d47d4dd5e78.png

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

9223d0271516c58d.png

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

チェックボックス グリッドの例を次に示します。各行から 0 ~複数の値を選択できます。

4e3189b8cc2d4a8b.png

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

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

2 つ目: 各回答をテーブルの新しい行にして、2 つの列に分割する必要があります。1 つの列に質問のオプション、もう 1 つの列に回答を入力します。

3c3c2bd098e03003.png

次に、これらの変換が Cloud Dataprep でどのように処理されるかについて説明します。

4. Cloud Dataprep フローを作成する

Cloud Dataprep に「Google フォーム アナリティクス設計パターン」をインポートする

Google フォーム アナリティクスの設計パターンのフロー パッケージをダウンロードします(解凍しないでください)。Cloud Dataprep アプリケーションで、左側のナビゲーション バーにあるフローアイコンをクリックします。次に、[フロー] ページで、コンテキスト メニューから [インポート] を選択します。

ba7c0cb0eec398df.png

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

44978861eb34ec71.png

Google スプレッドシートのアンケート結果スプレッドシートを接続する

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

55c16f0c04366f0c.png

次に、モーダルの下部にある [データセットをインポート] リンクをクリックします。[パスを編集] 鉛筆アイコンをクリックします。

8afeef260c96277f.png

現在の値を、Google フォームの結果を含む Google スプレッドシートを指すリンクに置き換えます。サンプルまたは独自のコピーを使用できます。https://docs.google.com/spreadsheets/d/1DgIlvlLceFDqWEJs91F8rt1B-X0PJGLY6shkKGBPWpk/edit?usp=sharing

[Go]、右下の [Import & Add to Flow] の順にクリックします。モーダルに戻ったら、右下の [置換] ボタンをクリックします。

BigQuery テーブルを接続する

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

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

a3fc2cb80153ec25.png

次の [公開設定] 画面で、編集ボタンをクリックします。

85791e6162a370de.png

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

1f3e4887baaeaffd.png

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

f4eaa05ecf9de162.png

[手動の宛先] を編集したら、[スケジュール設定された宛先] の出力に対しても同様に操作します。

46edea1b8ca63270.png

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

5. Cloud Dataprep のフローの説明

「Google フォーム アナリティクス デザイン パターン」フローの基本的な考え方は、前述のように、各質問カテゴリを特定の Cloud Dataprep データ変換レシピに分割して、アンケート回答に対して変換を実行することです。

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

afa421849b1bd398.png

各レシピを 1 つずつ確認することをおすすめします。まず「Clean Headers」、次に「SingleChoiceSELECT-Questions」、その後に他のレシピを順に確認します。

すべてのレシピには、さまざまな変換ステップを説明するコメントが付いています。レシピ内では、ステップを編集して特定の列の変化を確認できます。

449da06d96cd520e.png

4ac6e14f578d0707.png

6. Cloud Dataprep フローを実行します。

ソースと宛先が正しく構成されたので、フローを実行してレスポンスを変換し、BigQuery に読み込むことができます。各出力を選択し、[実行] ボタンをクリックします。指定した 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 のクロスが表示されているフレーム「Blank Report」をクリックして BigQuery に接続します。データポータルに表示される手順に沿って操作します。詳しくは、データポータルのクイックスタートと主な機能の概要をこちらでご確認ください。データポータルの組み込みダッシュボードもこちらで確認できます。

5e744869e3fe3f8f.png

9. クリーンアップ

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

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