Cloud Datastore エクスポートからのデータの読み込み

Google BigQuery では、マネージド インポートおよびエクスポート サービスを使用して作成された Cloud Datastore エクスポートからのデータを読み込むことができます。マネージド インポートおよびエクスポート サービスを使用すると、Cloud Datastore エンティティを Cloud Storage バケットにエクスポートできます。その後、エクスポートをテーブルとして BigQuery に読み込むことができます。

Cloud Datastore エクスポート ファイルを作成する方法については、Cloud Datastore ドキュメントのエンティティのエクスポートとインポートをご覧ください。エクスポートのスケジューリングについては、エクスポートのスケジューリングをご覧ください。

読み込むプロパティの種類は、API で projectionFields プロパティを設定するか、CLI で --projection_fields フラグを使用して制御できます。

読み込みプロセスをスキップしたい場合は、エクスポートを外部データソースとして設定することで、直接エクスポートに対してクエリを実行できます。詳細については、外部データソースをご覧ください。

Cloud Storage から BigQuery のテーブルにデータを読み込むとき、読み込み先のテーブルを含むデータセットは Cloud Storage バケットと同じリージョンまたはマルチリージョン ロケーションに存在する必要があります。

必要な権限

BigQuery にデータを読み込む場合は、新規または既存の BigQuery のテーブルやパーティションにデータを読み込むためのプロジェクト レベルまたはデータセット レベルの権限が必要です。Cloud Storage からデータを読み込む場合は、データが格納されているバケットへのアクセス権も必要です。

BigQuery の権限

Cloud Storage から BigQuery にデータを読み込む場合は、プロジェクト レベルまたはデータセット レベルで bigquery.dataOwner または bigquery.dataEditor の役割が付与されている必要があります。どちらの役割もユーザーとグループに、新しいテーブルへのデータの読み込みや、既存のテーブルへのデータの追加または上書きを行う権限を付与します。

プロジェクト レベルで役割を付与した場合、プロジェクト内のすべてのデータセットのテーブルにデータを読み込む権限がユーザーまたはグループに与えられます。データセット レベルで役割を付与した場合、ユーザーまたはグループは、そのデータセット内のテーブルにのみデータを読み込むことができます。

データセット アクセスの構成の詳細については、データセットへのアクセス制御の割り当てをご覧ください。BigQuery での IAM 役割の詳細については、アクセス制御をご覧ください。

Cloud Storage の権限

Cloud Storage バケットからデータを読み込むには、プロジェクト レベルまたはその個々のバケットの storage.objects.get 権限が付与されている必要があります。URI のワイルドカードを使用する場合は、storage.objects.list 権限も必要です。

事前定義された IAM 役割 storage.objectViewer を付与すると、storage.objects.get 権限と storage.objects.list 権限が与えられます。

制限事項

Cloud Datastore エクスポートから BigQuery にデータを読み込む場合は、次の制限事項に注意してください。

  • Cloud Datastore エクスポート ファイルを指定するときに、Cloud Storage URI でワイルドカードを使用できません。
  • Cloud Datastore エクスポートからデータを読み込むときは、1 つの Cloud Storage URI のみを指定できます。
  • 定義済みのスキーマを含む既存のテーブルには Cloud Datastore エクスポート データを追加できません。
  • Cloud Datastore エクスポートを正しく読み込むには、エクスポート データ内のエンティティが一貫したスキーマを共有する必要があります。
  • エンティティ フィルタを指定せずにエクスポートされたデータは、BigQuery に読み込むことができません。エクスポート リクエストでは、エンティティ フィルタに 1 種類以上の名前を含める必要があります。

Cloud Datastore のエクスポート サービスデータの読み込み

Cloud Datastore エクスポート メタデータ ファイルからデータを読み込むには:

ウェブ UI

  1. BigQuery ウェブ UI に移動します。
    BigQuery ウェブ UI に移動
  2. ナビゲーション パネルでデータセットにカーソルを合わせて下矢印アイコン 下矢印アイコン画像 をクリックし、[Create new table] をクリックします。データを読み込むプロセスは、空のテーブルを作成するプロセスと同じです。
  3. [Create Table] ページの [Source Data] セクションで、次の操作を行います。
    • [Create from source] を選択したままにします。
    • [Location] で [Google Cloud Storage] を選択し、ソース フィールドに Cloud Storage URI を入力します。Cloud Storage バケットは、作成するテーブルが含まれているデータセットと同じロケーションになければなりません。Cloud Datastore エクスポート ファイルの URI の末尾は [KIND_NAME].export_metadata にします。例: default_namespace_kind_Book.export_metadata。この例では、Book は種類名、default_namespace_kind_Book は Cloud Datastore によって生成されたファイル名です。

      [KIND_NAME] が Cloud Storage URI で指定されていることを確認します。[KIND_NAME] を指定せずに URI を指定すると、次のエラーが表示されます。does not contain valid backup metadata. (error code: invalid).

    • [File format] で [Cloud Datastore Backup] を選択します。
  4. [Create Table] ページの [Destination Table] セクションで、次の操作を行います。
    • [Table name] で、適切なデータセットを選択し、BigQuery で作成するテーブルの名前をテーブル名のフィールドに入力します。
    • [Table type] が [Native table] に設定されていることを確認します。
  5. [Schema] セクションでは、何もする必要はありません。スキーマは Cloud Datastore エクスポートから推定されます。
  6. [Options] セクションで該当する項目を選択し、[Create Table] をクリックします。選択可能なオプションについては、Cloud Datastore のオプションをご覧ください。

コマンドライン

source_formatDATASTORE_BACKUP に設定した bq load コマンドを使用します。--location フラグを指定し、値を該当するロケーションに設定します。

bq --location=[LOCATION] load --source_format=[FORMAT] [DATASET].[TABLE] [PATH_TO_SOURCE]

ここで

  • [LOCATION] はロケーションです。データが US または EU のマルチリージョン ロケーションにある場合は、--location フラグを省略できます。たとえば、BigQuery を東京リージョンで使用している場合は、このフラグの値を asia-northeast1 に設定します。.bigqueryrc ファイルを使用してロケーションのデフォルト値を設定できます。
  • [FORMAT] は、DATASTORE_BACKUP です。
  • [DATASET] は、データを読み込むテーブルを含むデータセットです。
  • [TABLE] は、データを読み込むテーブルです。テーブルが存在しない場合は、新規に作成されます。
  • [PATH_TO_SOURCE] は、Cloud Storage URI です。

たとえば、次のコマンドは、gs://mybucket/20180228T1256/default_namespace/kind_Book/default_namespace_kind_Book.export_metadata Cloud Datastore エクスポート ファイルを book_data という名前のテーブルに読み込みます。 mybucketmydatasetUS マルチリージョン ロケーションに作成されています。

bq --location=US load --source_format=DATASTORE_BACKUP mydataset.book_data gs://mybucket/20180228T1256/default_namespace/kind_Book/default_namespace_kind_Book.export_metadata

API

API を使用して Cloud Datastore エクスポート データを読み込むには、次のプロパティを設定します。

  1. Google Cloud Storage のソースデータを指す読み込みジョブを作成します。

  2. ジョブリソースjobReference セクションにある location プロパティにロケーションを指定します。

  3. ソース URI は、完全修飾された gs://[BUCKET]/[OBJECT] 形式にする必要があります。ファイル(オブジェクト)名の末尾は、[KIND_NAME].export_metadata にする必要があります。Cloud Datastore エクスポートに使用できる URI は 1 つのみで、ワイルドカードは使用できません。

  4. configuration.load.sourceFormat プロパティを DATASTORE_BACKUP に設定して、データ形式を指定します。

Cloud Datastore 管理バックアップ

Datastore 管理バックアップ機能を使用して Cloud Datastore データをエクスポートする場合、ファイル拡張子は .export_metadata ではなく .backup_info になります。BigQuery にデータをインポートする場合は、Datastore 管理バックアップ サービスが使用できなくなるまで、.backup_info ファイルまたは .export_metadata ファイルを使用できます。

Cloud Datastore データでテーブルに追加または上書きする

Cloud Datastore エクスポート データを BigQuery に読み込むとき、新しいテーブルを作成してデータを保存したり、既存のテーブルを上書きしたりできます。Cloud Datastore エクスポート データを既存のテーブルに追加することはできません。

既存のテーブルに Cloud Datastore エクスポート データを追加しようとすると、次のエラーが発生します。Cannot append a datastore backup to a table that already has a schema. Try using the WRITE_TRUNCATE write disposition to replace the existing table.

既存のテーブルを Cloud Datastore エクスポート データで上書きするには:

ウェブ UI

  1. BigQuery ウェブ UI に移動します。
    BigQuery ウェブ UI に移動
  2. ナビゲーション パネルでデータセットにカーソルを合わせて下矢印アイコン 下矢印アイコン画像 をクリックし、[Create new table] をクリックします。データを読み込むプロセスは、空のテーブルを作成するプロセスと同じです。
  3. [Create Table] ページの [Source Data] セクションで、次の操作を行います。
    • [Create from source] を選択したままにします。
    • [Location] で [Google Cloud Storage] を選択し、ソース フィールドに Cloud Storage URI を入力します。Cloud Storage バケットは、作成するテーブルが含まれているデータセットと同じロケーションになければなりません。Cloud Datastore エクスポート ファイルの URI の末尾は [KIND_NAME].export_metadata にします。例: default_namespace_kind_Book.export_metadata。この例では、Book は種類名、default_namespace_kind_Book は Cloud Datastore によって生成されたファイル名です。

      [KIND_NAME] が Cloud Storage URI で指定されていることを確認します。[KIND_NAME] を指定せずに URI を指定すると、次のエラーが表示されます。does not contain valid backup metadata. (error code: invalid).

    • [File format] で [Cloud Datastore Backup] を選択します。
  4. [Create Table] ページの [Destination Table] セクションで、次の操作を行います。
    • [Table name] で、適切なデータセットを選択し、上書きするテーブルの名前をテーブル名のフィールドに入力します。
    • [Table type] が [Native table] に設定されていることを確認します。
  5. [Schema] セクションでは、何もする必要はありません。スキーマは Cloud Datastore エクスポートから推定されます。
  6. [Options] セクションの [Write preference] で、[Overwrite table] を選択します。
  7. [Create Table] をクリックします。

コマンドライン

--replace フラグを使用し、source_formatDATASTORE_BACKUP に設定した bq load コマンドを使用します。--location フラグを指定し、値を該当するロケーションに設定します。

bq --location=[LOCATION] load --source_format=[FORMAT] --replace [DATASET].[TABLE] [PATH_TO_SOURCE]

ここで

  • [LOCATION] はロケーションです。データが US または EU のマルチリージョン ロケーションにある場合は、--location フラグを省略できます。たとえば、BigQuery を東京リージョンで使用している場合は、このフラグの値を asia-northeast1 に設定します。.bigqueryrc ファイルを使用してロケーションのデフォルト値を設定できます。
  • [FORMAT] は、DATASTORE_BACKUP です。
  • [DATASET] は、データを読み込むテーブルを含むデータセットです。
  • [TABLE] は、上書きするテーブルです。
  • [PATH_TO_SOURCE] は、Cloud Storage URI です。

たとえば、次のコマンドは、gs://mybucket/20180228T1256/default_namespace/kind_Book/default_namespace_kind_Book.export_metadata Cloud Datastore エクスポート ファイルを読み込み、book_data という名前のテーブルを上書きします。

bq load --source_format=DATASTORE_BACKUP --replace mydataset.book_data gs://mybucket/20180228T1256/default_namespace/kind_Book/default_namespace_kind_Book.export_metadata

API

次のプロパティを設定して、API からデータを読み込みます。

  1. Google Cloud Storage のソースデータを指す読み込みジョブを作成します。

  2. ジョブリソースjobReference セクションにある location プロパティにロケーションを指定します。

  3. ソース URI は、完全修飾された gs://[BUCKET]/[OBJECT] 形式にする必要があります。ファイル(オブジェクト)名の末尾は、[KIND_NAME].export_metadata にする必要があります。Cloud Datastore エクスポートに使用できる URI は 1 つのみで、ワイルドカードは使用できません。

  4. configuration.load.sourceFormat プロパティを DATASTORE_BACKUP に設定して、データ形式を指定します。

  5. configuration.load.writeDisposition プロパティを WRITE_TRUNCATE に設定して、書き込み処理を指定します。

Cloud Datastore のオプション

BigQuery が Cloud Datastore エクスポート データを解析する方法を変更するには、UI、CLI、API で追加のオプションを指定します。

CSV のオプション ウェブ UI のオプション CLI のフラグ BigQuery API のプロパティ 説明
Projection フィールド なし --projection_fields projectionFields Cloud Datastore エクスポートから BigQuery に読み込むエンティティ プロパティを示すカンマ区切りリスト。プロパティ名は大文字と小文字が区別され、最上位のプロパティでなければなりません。プロパティが指定されない場合、BigQuery はすべてのプロパティを読み込みます。指定されたプロパティが Cloud Datastore エクスポートに見つからない場合、ジョブの結果内で無効なエラーが返されます。デフォルト値は " です。
許可されている不良レコード数 Number of errors allowed --max_bad_records maxBadRecords (省略可)BigQuery がジョブの実行時に無視できる不良レコードの最大数。不良レコードの数がこの値を超えると、ジョブの結果内で無効なエラーが返されます。デフォルト値は 0 で、すべてのレコードが有効である必要があります。

データ型の変換

BigQuery は Cloud Datastore エクスポート ファイル内の各エンティティのデータを BigQuery のデータ型に変換します。次の表に、変換前と変換後のデータ型を示します。

Cloud Datastore のデータ型 BigQuery のデータ型
blob これらの値は BigQuery への読み込み時に破棄されます。
Blobstore のキー STRING
ブール値 BOOLEAN
カテゴリ STRING
データストアのキー RECORD
日時 TIMESTAMP
メールアドレス STRING
埋め込みエンティティ RECORD
浮動小数点数 FLOAT
地理的座標

RECORD


[{"lat","DOUBLE"},
 {"long","DOUBLE"}]
        
IM ハンドル STRING
整数 INTEGER
リンク STRING
電話番号 STRING
住所 STRING
評価 INTEGER
短い blob これらの値は BigQuery への読み込み時に破棄されます。
文字列 STRING(64 KB で切り捨て)
ユーザー

RECORD


[{"email","STRING"}
 {"userid","STRING"}]
        

データストアのキープロパティ

Cloud Datastore の各エンティティには、名前空間やパスなどの情報を含む一意のキーが設定されています。次の表に示すように、BigQuery はキーに対して RECORD データ型を作成し、それぞれの情報をネストされたフィールドに入れます。

キーのプロパティ 説明 BigQuery のデータ型
__key__.app Cloud Datastore アプリの名前。 STRING
__key__.id エンティティの ID、または null__key__.name が設定されている場合)。 INTEGER
__key__.kind エンティティの種類。 STRING
__key__.name エンティティの名前、または null__key__.id が設定されている場合)。 STRING
__key__.namespace Cloud Datastore アプリがカスタム名前空間を使用している場合は、エンティティの名前空間。それ以外の場合は、空白の文字列で表されるデフォルトの名前空間。 STRING
__key__.path 種類と ID の連続したペアからなる、ルート エンティティからそのエンティティ自体へのフラット化されたエンティティの祖先パス(例: "Country", "USA", "PostalCode", 10011, "Route", 1234)。 STRING
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。