BigQuery データソースを使用して Google BigQuery のデータを使用する

以降のセクションでは、BigQuery データソースを使用して Google BigQuery のデータを使用する方法について説明します。

: Google BigQuery のデータを使用する際は、BigQuery データソース(このトピックで説明)またはコネクテッド シートを使用できます。この 2 つのオプションを比較するには、AppSheet を使用した Google BigQuery のデータを使用するをご覧ください。なお、BigQuery への接続には Integration Connectors を使用することもできます。既存の BigQuery 接続方法を使用する場合と新しい BigQuery コネクタを使用する場合の違いは何ですか?をご覧ください。

概要

BigQuery データソースは、アプリ作成者に BigQuery データセットに対する読み取り / 書き込みアクセスを提供します。

 BigQuery データソースを使用して BigQuery のデータを使用する方法の概要については、次の動画をご覧ください。
(注: この動画が作成された後で、BigQuery データソースでは、BigQuery データセットに対するアプリ作成者の読み取り / 書き込みアクセスが可能になりました。動画で読み取りアクセスのみと説明しているのは正しくありません。)

BigQuery への AppSheet の接続

BigQuery データソースのライセンス要件

BigQuery は、多くの企業のお客様のデータレポートにご利用いただいている Google Cloud サービスです。処理するデータが膨大な量になる可能性があることから、BigQuery は高度なデータコネクタに分類され、AppSheet Enterprise Plus のプランを必要とします。

BigQuery データソースを使用する場合の制限事項

BigQuery は膨大なデータを扱う可能性があるため(数千万行以上、最大 1 万列といった可能性)、アプリがデータを読み込んで高いパフォーマンスを発揮できるように、プロダクトの制限を設けています。

AppSheet は、BigQuery データソースに関して次の制限を適用しています。

  • 最大 100,000 行 - 最大の行数を超えた BigQuery データセットは切り捨てられます。
  • パーティション分割テーブルはサポートされていない - パーティション分割列を含む BigQuery テーブルは、AppSheet の設定中にエラーを報告します。この制限を回避するには、パーティション分割列を省略する BigQuery ビューを使用してください。
  • Google Cloud アクセスが必要 - サービス アカウントは、AppSheet がサポートする唯一のアクセス方法です。Google Cloud プロジェクトでサービス アカウントとキーを作成するにはアクセス権限が必要です。または、適切なアクセスレベルを持つ IT 管理者のサポートをリクエストする必要があります。IT 管理者は、データソースをチーム データソースとして作成し、共有できます。

また、BiqQuery への書き込みをサポートしていない複雑なタイプがあります。配列バイト地理構造体といったタイプです。

次のセクションでは、プロダクトの制限内で動作するアプリの設定方法に関するベスト プラクティスについて説明します。

BigQuery データソースを使用するためのアプリの設定に関するベスト プラクティス

1. セキュリティ フィルタを使用します。

AppSheet のをセキュリティ フィルタに含めます。この式は BigQuery SQL に変換され、データがアプリにダウンロードされる前にサーバー上で実行されます。

セキュリティ フィルタは、AND()IN()NOT()OR() の各式についてのみ、SQL プロバイダに push されます。他の式は、行の上限が適用されるまで、プロバイダ レベルのクエリではサポートされません。BigQuery の場合、上限の 10 万行がこのプロバイダ クエリにのみ適用されるため、これらの式のみで構成されていないセキュリティ フィルタを使用すると、取得する行数が少なすぎる場合があります。

セキュリティ フィルタはデータアクセスを制限しますが、完全なセキュリティ対策ではありません。ユーザーは、データソースのレベルで機密データの操作を保護する必要があります。データの保護については、セキュリティ: 基本情報をご覧ください。

:

  • 現在ログインしているアプリユーザーが所有している、または表示できる行を取得するには、USEREMAIL() でフィルタします。
  • 最新のデータのみを取得するには、先週または先月の DateTime 値でフィルタします。たとえば、DateCreated というデータセット内のコラムがあると想定すると、次のようなフィルタ式を安全に使用できます。
    • 先週の場合: [DateCreated] >= TODAY() - 7
    • 先月の場合: [DateCreated] >= TODAY() - 30
  • ユーザー設定とセキュリティ フィルタの組み合わせを使用し、アプリユーザーがデータを制限できるようにします。たとえば、Year というユーザー設定コラムと StartTime というデータセット内のコラムを使用すると、[StartTime] >= DATETIME("1/1/" & USERSETTINGS("YEAR")) のようにして、2018 年以降のデータを取得できます(ユーザー設定 Year2018 に設定されていると想定)。

2. BigQuery ビューを使用する(読み取り専用)

BigQuery で複雑になりうる SQL クエリを含む AppSheet 用に特定のビューを作成して、データセットからの行数の上限を作成できます。アプリで BigQuery データソースをテーブルとして設定する場合、プロジェクト内のビューのリスト、または基本データセットから選択します。

: BigQuery ビューは読み取り専用であるため、AppSheet で行った変更が BigQuery データセットに再び同期することはありません。

3. 新しい BigQuery テーブルを作成する

BigQuery では、スケジュールされたクエリに基づいて定期的に再作成されるテーブルのコピーを設定できます。これはビューと似ていますが、データのサブセットを含む物理的なテーブルです。列の数を削減して、テーブル構造を簡素化するためにも使用できます。

Google Cloud で BigQuery を構成する

AppSheet を BigQuery に接続するため、BigQuery データにアクセスする適切なロールがあるサービス アカウントを Google Cloud に作成する必要があります。サービス アカウントは、個々のユーザーへのアクセス権の付与ではなく、システム間レベルのアクセス権の付与に使用される特別なアカウントです。AppSheet(システム)は、システム間通信を確立する BigQuery(システム)にアクセスするためにサービス アカウントを使用します。その他のユーザーレベルのアクセス権は、データソース上のセキュリティ フィルタによって AppSheet に構成できます。

必要なロール

一般公開データセットへのアクセスのみに、BigQuery ジョブユーザーのロールが必要です。

非公開データセットへのアクセスには、BigQuery ジョブユーザーBigQuery データ編集者のロールが必要です。これらのロールには必要なすべての権限が与えられています。

BigQuery ジョブユーザーと BigQuery データ編集者のロールを付与すると、いくつかの未使用の権限が発生します。組織で必要とする場合は、手順に沿って、下に記載されている必要な権限のみを持つカスタムロールを作成できます。
  • bigquery.datasets.get
  • bigquery.jobs.create
  • bigquery.routines.get
  • bigquery.routines.list
  • bigquery.tables.get
  • bigquery.tables.getData
  • bigquery.tables.list
  • resourcemanager.projects.get

サービス アカウントを作成する

次のステップでは、Google Cloud コンソールを使用してサービス アカウントを作成する方法について説明します。

  1. Google Cloud コンソールに移動します。

  2. ナビゲーション メニューで、[IAM と管理] > [サービス アカウント] を選択し、[サービス アカウント] ページにアクセスします。

  3. [+ サービス アカウントを作成] をクリックします。

    Google Cloud コンソールでサービス アカウントを作成する

  4. BigQuery ジョブユーザーのロールがあるサービス アカウントを作成する

    1. サービス アカウント名サービス アカウントの説明を入力し、[作成] をクリックします。

      サービス アカウントの詳細を追加する

    2. テキスト ボックスに BigQuery ジョブを入力し、ロールのリストをフィルタして、[BigQuery Job User] を選択します。

      [BigQuery Job User] ロールをサービス アカウントに付与する

    3. 非公開データセットに接続する場合、このステップを繰り返し、BigQuery データ編集者のロールを追加します。または、カスタムロールを作成済みの場合、BigQuery データ編集者のロールの代わりに、そのロールを追加します。 
       
      Google Cloud Platform リソースの不要な公開を最小限に抑えるため、最小権限の原則に従って、付与するロールはこの機能を使用するために必要な最小限のロールだけにとどめることをおすすめします。
    4. [完了] をクリックします。

      [Done] をクリックするとサービス アカウントが作成される

:
上記の BigQuery データ編集者のロールを設定すると、サービス アカウントはプロジェクトのすべてのデータセットにアクセスできるようになります。さらに制限の厳しい権限が必要な場合、代わりに、BigQuery データ編集者のロールをデータセットまたはテーブルのレベルで設定できます。BigQuery のドキュメントでリソースへのアクセス権を付与するをご覧ください。

JSON キーを作成するサービス アカウントの場合

次の手順では、サービス アカウント キーをローカル ファイル システムにダウンロードします。サービス アカウント キーは、サービス アカウントへの署名なしの完全なアクセス権を付与するパスワードのようなものです。これらの手順は信頼できるデバイスでのみ実行してください。また、ダウンロードしたファイルは、Google Cloud Platform リソースが誤って公開されないように慎重に処理しなければなりません。ファイルは、セットアップの完了後(または完了前にセットアップが中止された場合)に削除する必要があります。「ごみ箱」にも残さないように注意してください。また、サービス アカウントには、この機能を使用するために必要な最小限のロールとデータアクセスのみを付与するようにしてください。鍵がエクスポートされた場合のリスクを許容できない場合は、別のデータソースを使用するか、Integration Connectors を使用して BigQuery に接続することをご検討ください。
  1. 作成した新しいサービス アカウントの [操作] 列のその他メニュー(3 つの点)をクリックし、[鍵を管理] を選択します。

    サービス アカウントの [Manage keys]

  2. [Add Key] をクリックして、[Create new key] を選択します。

    サービス アカウントの [ADD KEY] > [Create new key]

  3. [JSON] のデフォルトの選択を承認し、[Create] をクリックします。

    JSON 形式でサービス アカウントの秘密鍵を作成する(デフォルト)

  4. ファイル名をメモします。ファイル名はブラウザのダウンロード フォルダで確認できます。ブラウザのタイプによっては、ブラウザのウィンドウの下部のバーにダウンロードされたファイルが表示されている場合があります。[Close] をクリックします。

    コンピュータに保存されている秘密鍵を表示してコピーする

  5. 信頼できるテキスト エディタでファイルを開き、次のステップで内容をコピーして貼り付けられるようにします。

BigQuery データソースを AppSheet アプリに追加する

  1. AppSheet にログインします。
  2. [My Account] > [Sources] に移動します。
  3. [+ New Data Source] をクリックします。
  4. 新しいデータソースで使用するデータソース名(BigQuery-NYC-Citibikes など)をテキスト ボックスに入力します。
  5. [Cloud Database] を選択します。

    データソース名として「BigQuery-NYC-Citibikes」と入力し、[Cloud Database] をクリックする
  6. 使用できるデータベース タイプのプルダウン リストから、[BigQuery] を選択します。

    使用可能なデータベース タイプから [BigQuery] を選択する

  7. 次に Google Cloud コンソールから、BigQuery DataSet IDGoogle Cloud Project IDService Account key の 3 つの値と、前にダウンロードしたキーファイルを取得する必要があります。

    [Add database connection information] ダイアログで [DataSet ID]、[Google Cloud Project ID]、[Service Account key] のフィールドがすべてハイライト表示されている

  8. BigQuery DataSet ID を取得するには、Google Cloud コンソールに移動し、ナビゲーション メニューの [Big Data] セクションの [BigQuery] を選択します。表示されていない場合は、下にスクロールしてください。

    Cloud コンソールのナビゲーション メニューの [ビッグデータ] セクションで [BigQuery] を選択する

  9. 使用する BigQuery データセットを見つけます。このデモでは、bigquery-public-data:new_york_citibike という一般公開データセットを使用しますが、アプリでは使用するデータセットを選択する必要があります。必要なデータセットが見つからない場合は、[+ Add Data] をクリックして追加します。

  10. データセット名の右側にあるその他メニュー(縦に並んだ 3 つの点)をクリックしてデータセットを開きます。最上位のレベルが表示されていることを確認します。つまり、次のアイコンで示されるデータセット レベルです。

    次のアイコンで示されるテーブルレベルではありません。

    [More] > [Open] をクリックしてデータセットを開く

  11. データセット ID をコピーして、AppSheet に貼り付けます。

    [Dataset ID] フィールドの内容をコピーする

  12. データセット ID を、AppSheet の [Add database connection information] ウィンドウの [Dataset ID] フィールドに貼り付けます。

    :
    • データセット ID の形式は、<project_id>.<dataset_id>です。.(ピリオド)は :(コロン)に置き換える必要があります。生成される形式は、<project_id>:<dataset_id> になります。
    • データセットがサービス アカウントと同じプロジェクトにある場合、<project_id> コンポーネントは省略可能です。一般公開データセットに接続する場合、<project_id> コンポーネントを常に含める必要があります。これは、一般公開データセットが、サービス アカウントを作成したプロジェクトとは異なる bigquery-public-data プロジェクトに保存されているためです。

    例:

    [Add database connection information] ダイアログの [Dataset ID] フィールドに値を貼り付ける

  13. Google Cloud Project ID を取得するには、Google Cloud コンソールに戻ります。上部のナビゲーション バーで、[project name] をクリックし、[Select a project] ダイアログの [Project ID] をコピーして、AppSheet に貼り付けます。

    Google Cloud プロジェクト ID を取得する

  14. プロジェクト ID を、AppSheet の [Add database connection information] ウィンドウの [Google Cloud Project ID] フィールドに貼り付けます。

    [Add database connection information] ダイアログにプロジェクト ID を貼り付ける

  15. Service Account key を取得するには、Google Cloud コンソール([IAM と管理])でサービス アカウントにキーを作成したときにダウンロードした JSON ファイルに移動します。ダウンロードしたファイルを見つけ(ブラウザのダウンロード ディレクトリにあります)、任意のテキスト エディタで開きます(まだ開いていない場合)。ファイルのコンテンツ全体をコピーします。

    サービス アカウント キーの作成時にダウンロードした JSON ファイルの内容全体をコピーして、キーを取得する

  16. ファイルのコンテンツを、AppSheet の [Add database connection information] ウィンドウの [Service Account key] フィールドに貼り付けます。

  17. [Test]、次に [Authorize Access] をクリックします。

    [Add database connection information] ダイアログで [Test]、[Authorize] の順にクリックする

この時点で、ダウンロードした JSON ファイルは不要になります。ファイル システムから削除することをおすすめします(「ごみ箱」に残さないように注意してください)。なんらかの理由で保持する場合は、ダウンロード フォルダから安全な場所に移動してください。

BigQuery テーブルを AppSheet アプリに追加する

  1. AppSheet で、[Data] に移動し、データパネルの上部のヘッダーにある [+] をクリックします。
    アプリエディタを強化しました
    デフォルトでは新しいエディタが有効になっていますが、いつでも以前のエディタに戻すことができます。

    従来のナビゲーションをお使いの場合

    [Data] > [Tables] に移動し、[+ New Table] をクリックします。  
  2. 作成したデータストア(big query NYC citibikes など)を選択します。
  3. テーブルまたはビューを選択します(このデモでは、[Tables] を選択します)。次に、アプリに必要なテーブルを選択します(このデモでは、[citibike_stations] を選択します)。

    [Tables] を選択してから [citibike_stations] テーブルを選択する
  4. テーブルを [Read-Only] とマークし、アプリが頻繁にキャッシュ保存を繰り返さないようにしてパフォーマンスを向上させます。[Add This Table] をクリックします。

    [Read Only]、[Add This Table] の順にクリックし、citibike_stations データソースに基づいてアプリで新しいテーブルを作成する
  5. これで、アプリは、他のテーブルと同様にこのデータにアクセスできるようになりました。
  6. 重要: セキュリティ フィルタを追加して、AppSheet で使用される行数を制限することを忘れないでください。
このページには、AI 技術を使用して翻訳されたコンテンツが含まれている場合があります。AI 翻訳には誤りが含まれている可能性があります。

この情報は役に立ちましたか?

改善できる点がありましたらお聞かせください。
true
検索
検索をクリア
検索を終了
Google アプリ
メインメニュー
9411054064793058318
true
ヘルプセンターを検索
false
true
true
true
false
false
false
false
false