以降のセクションでは、BigQuery データソースを使用して Google BigQuery のデータを使用する方法について説明します。
- 概要
- Google Cloud で BigQuery を設定する
- BigQuery データソースを AppSheet アプリに追加する
- BigQuery テーブルを AppSheet アプリに追加する
概要
BigQuery データソースは、アプリ作成者に BigQuery データセットに対する読み取り / 書き込みアクセスを提供します。
BigQuery データソースを使用して BigQuery のデータを使用する方法の概要については、次の動画をご覧ください。
(注: この動画が作成された後で、BigQuery データソースでは、BigQuery データセットに対するアプリ作成者の読み取り / 書き込みアクセスが可能になりました。動画で読み取りアクセスのみと説明しているのは正しくありません。)
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 年以降のデータを取得できます(ユーザー設定Yearが2018に設定されていると想定)。
2. BigQuery ビューを使用する(読み取り専用)
BigQuery で複雑になりうる SQL クエリを含む AppSheet 用に特定のビューを作成して、データセットからの行数の上限を作成できます。アプリで BigQuery データソースをテーブルとして設定する場合、プロジェクト内のビューのリスト、または基本データセットから選択します。
3. 新しい BigQuery テーブルを作成する
BigQuery では、スケジュールされたクエリに基づいて定期的に再作成されるテーブルのコピーを設定できます。これはビューと似ていますが、データのサブセットを含む物理的なテーブルです。列の数を削減して、テーブル構造を簡素化するためにも使用できます。
Google Cloud で BigQuery を構成する
AppSheet を BigQuery に接続するため、BigQuery データにアクセスする適切なロールがあるサービス アカウントを Google Cloud に作成する必要があります。サービス アカウントは、個々のユーザーへのアクセス権の付与ではなく、システム間レベルのアクセス権の付与に使用される特別なアカウントです。AppSheet(システム)は、システム間通信を確立する BigQuery(システム)にアクセスするためにサービス アカウントを使用します。その他のユーザーレベルのアクセス権は、データソース上のセキュリティ フィルタによって AppSheet に構成できます。
必要なロール
一般公開データセットへのアクセスのみに、BigQuery ジョブユーザーのロールが必要です。
非公開データセットへのアクセスには、BigQuery ジョブユーザーと BigQuery データ編集者のロールが必要です。これらのロールには必要なすべての権限が与えられています。
bigquery.datasets.getbigquery.jobs.createbigquery.routines.getbigquery.routines.listbigquery.tables.getbigquery.tables.getDatabigquery.tables.listresourcemanager.projects.get
サービス アカウントを作成する
次のステップでは、Google Cloud コンソールを使用してサービス アカウントを作成する方法について説明します。
-
Google Cloud コンソールに移動します。
-
ナビゲーション メニューで、[IAM と管理] > [サービス アカウント] を選択し、[サービス アカウント] ページにアクセスします。
-
[+ サービス アカウントを作成] をクリックします。
-
BigQuery ジョブユーザーのロールがあるサービス アカウントを作成する
-
サービス アカウント名とサービス アカウントの説明を入力し、[作成] をクリックします。
-
テキスト ボックスに BigQuery ジョブを入力し、ロールのリストをフィルタして、[BigQuery Job User] を選択します。
- 非公開データセットに接続する場合、このステップを繰り返し、BigQuery データ編集者のロールを追加します。または、カスタムロールを作成済みの場合、BigQuery データ編集者のロールの代わりに、そのロールを追加します。
Google Cloud Platform リソースの不要な公開を最小限に抑えるため、最小権限の原則に従って、付与するロールはこの機能を使用するために必要な最小限のロールだけにとどめることをおすすめします。 -
[完了] をクリックします。
-
- または、IAM のドキュメントの [サービス アカウントを作成する] で、gcloud コマンドライン インターフェースを使用してサービス アカウントを作成する方法を確認してください。
- BigQuery ジョブユーザーと BigQuery データ編集者のロールに関するその他の詳細情報については BigQuery のドキュメントをご覧ください。
-
作成した新しいサービス アカウントの [操作] 列のその他メニュー(3 つの点)をクリックし、[鍵を管理] を選択します。
-
[Add Key] をクリックして、[Create new key] を選択します。
-
[JSON] のデフォルトの選択を承認し、[Create] をクリックします。
-
ファイル名をメモします。ファイル名はブラウザのダウンロード フォルダで確認できます。ブラウザのタイプによっては、ブラウザのウィンドウの下部のバーにダウンロードされたファイルが表示されている場合があります。[Close] をクリックします。
-
信頼できるテキスト エディタでファイルを開き、次のステップで内容をコピーして貼り付けられるようにします。
BigQuery データソースを AppSheet アプリに追加する
- AppSheet にログインします。
- [My Account] > [Sources] に移動します。
- [+ New Data Source] をクリックします。
- 新しいデータソースで使用するデータソース名(BigQuery-NYC-Citibikes など)をテキスト ボックスに入力します。
- [Cloud Database] を選択します。
-
使用できるデータベース タイプのプルダウン リストから、[BigQuery] を選択します。
-
次に Google Cloud コンソールから、BigQuery DataSet ID、Google Cloud Project ID、Service Account key の 3 つの値と、前にダウンロードしたキーファイルを取得する必要があります。
-
BigQuery DataSet ID を取得するには、Google Cloud コンソールに移動し、ナビゲーション メニューの [Big Data] セクションの [BigQuery] を選択します。表示されていない場合は、下にスクロールしてください。
-
使用する BigQuery データセットを見つけます。このデモでは、bigquery-public-data:new_york_citibike という一般公開データセットを使用しますが、アプリでは使用するデータセットを選択する必要があります。必要なデータセットが見つからない場合は、[+ Add Data] をクリックして追加します。
-
データセット名の右側にあるその他メニュー(縦に並んだ 3 つの点)をクリックしてデータセットを開きます。最上位のレベルが表示されていることを確認します。つまり、次のアイコンで示されるデータセット レベルです。
次のアイコンで示されるテーブルレベルではありません。
-
データセット ID をコピーして、AppSheet に貼り付けます。
-
データセット ID を、AppSheet の [Add database connection information] ウィンドウの [Dataset ID] フィールドに貼り付けます。
注:- データセット ID の形式は、
<project_id>.<dataset_id>です。.(ピリオド)は :(コロン)に置き換える必要があります。生成される形式は、<project_id>:<dataset_id>になります。 - データセットがサービス アカウントと同じプロジェクトにある場合、
<project_id>コンポーネントは省略可能です。一般公開データセットに接続する場合、<project_id>コンポーネントを常に含める必要があります。これは、一般公開データセットが、サービス アカウントを作成したプロジェクトとは異なるbigquery-public-dataプロジェクトに保存されているためです。
例:
- データセット ID の形式は、
-
Google Cloud Project ID を取得するには、Google Cloud コンソールに戻ります。上部のナビゲーション バーで、[project name] をクリックし、[Select a project] ダイアログの [Project ID] をコピーして、AppSheet に貼り付けます。
-
プロジェクト ID を、AppSheet の [Add database connection information] ウィンドウの [Google Cloud Project ID] フィールドに貼り付けます。
-
Service Account key を取得するには、Google Cloud コンソール([IAM と管理])でサービス アカウントにキーを作成したときにダウンロードした JSON ファイルに移動します。ダウンロードしたファイルを見つけ(ブラウザのダウンロード ディレクトリにあります)、任意のテキスト エディタで開きます(まだ開いていない場合)。ファイルのコンテンツ全体をコピーします。
-
ファイルのコンテンツを、AppSheet の [Add database connection information] ウィンドウの [Service Account key] フィールドに貼り付けます。
-
[Test]、次に [Authorize Access] をクリックします。
BigQuery テーブルを AppSheet アプリに追加する
- AppSheet で、[Data]
に移動し、データパネルの上部のヘッダーにある [+] をクリックします。
アプリエディタを強化しました。
デフォルトでは新しいエディタが有効になっていますが、いつでも以前のエディタに戻すことができます。従来のナビゲーションをお使いの場合
[Data] > [Tables] に移動し、[+ New Table] をクリックします。 - 作成したデータストア(big query NYC citibikes など)を選択します。
- テーブルまたはビューを選択します(このデモでは、[Tables] を選択します)。次に、アプリに必要なテーブルを選択します(このデモでは、[citibike_stations] を選択します)。
- テーブルを [Read-Only] とマークし、アプリが頻繁にキャッシュ保存を繰り返さないようにしてパフォーマンスを向上させます。[Add This Table] をクリックします。
- これで、アプリは、他のテーブルと同様にこのデータにアクセスできるようになりました。
- 重要: セキュリティ フィルタを追加して、AppSheet で使用される行数を制限することを忘れないでください。