分割テーブルの作成
このページでは、BigQuery でパーティションパーティション分割テーブルを作成する方法について説明します。パーティションパーティション分割テーブルの概要については、パーティション分割テーブルの概要をご覧ください。
始める前に
このドキュメントの各タスクを実行するために必要な権限をユーザーに与える Identity and Access Management(IAM)のロールを付与します。
必要な権限
テーブルを作成するには、次の IAM 権限が必要です。
bigquery.tables.create
bigquery.tables.updateData
bigquery.jobs.create
また、テーブルに書き込むデータにアクセスするために bigquery.tables.getData
権限が必要になる場合があります。
次の各事前定義 IAM ロールには、テーブルの作成に必要な権限が含まれています。
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.admin
(bigquery.jobs.create
権限を含む)roles/bigquery.user
(bigquery.jobs.create
権限を含む)roles/bigquery.jobUser
(bigquery.jobs.create
権限を含む)
また、bigquery.datasets.create
権限がある場合は、自分が作成したデータセット内のテーブルを作成および更新できます。
BigQuery での IAM のロールと権限について詳しくは、事前定義ロールと権限をご覧ください。
空のパーティションパーティション分割テーブルを作成する
BigQuery でパーティションパーティション分割テーブルを作成する手順は、任意のテーブル オプションに加えてパーティショニング オプションを指定する点を除き、標準テーブルを作成する手順と同様です。
時間単位列パーティションパーティション分割テーブルを作成する
スキーマ定義を持つ空の時間単位列パーティションパーティション分割テーブルを作成するには:
コンソール
Google Cloud コンソールで [BigQuery] ページに移動します。
- [エクスプローラ] ペインでプロジェクトを展開し、データセットを選択します。
- [データセット情報] セクションで、 [テーブルを作成] をクリックします。
- [テーブルの作成] パネルで、次の詳細を指定します。
- [ソース] セクションの [テーブルの作成元] リストで [空のテーブル] を選択します。
- [送信先] セクションで、次の詳細を指定します。
- [データセット] で、テーブルを作成するデータセットを選択します。
- [テーブル] フィールドに、作成するテーブルの名前を入力します。
- [テーブルタイプ] フィールドが [ネイティブ テーブル] に設定されていることを確認します。
- [スキーマ] セクションでスキーマ定義を入力します。
スキーマには、パーティショニング列用に
DATE
、TIMESTAMP
、DATETIME
列を含める必要があります。詳細については、スキーマの指定をご覧ください。スキーマ情報は、次のいずれかの方法で手動で入力できます。- オプション 1: [テキストとして編集] をクリックし、スキーマを JSON 配列の形式で貼り付けます。JSON 配列を使用する場合は、JSON スキーマ ファイルの作成と同じプロセスを使用してスキーマを生成します。既存のテーブルのスキーマを JSON 形式で表示するには、次のコマンドを入力します。
bq show --format=prettyjson dataset.table
- オプション 2: 型]、[モード] を指定します。 [フィールドを追加] をクリックして、テーブル スキーマを入力します。各フィールドの [名前]、[
- オプション 1: [テキストとして編集] をクリックし、スキーマを JSON 配列の形式で貼り付けます。JSON 配列を使用する場合は、JSON スキーマ ファイルの作成と同じプロセスを使用してスキーマを生成します。既存のテーブルのスキーマを JSON 形式で表示するには、次のコマンドを入力します。
- [パーティションとクラスタの設定] セクションの [パーティショニング] リストで、[フィールドにより分割] を選択してから、パーティショニングする列を選択します。このオプションは、スキーマに
DATE
列、TIMESTAMP
列、またはDATETIME
列が含まれている場合にのみ使用できます。 - (省略可)このテーブルのすべてのクエリでパーティション フィルタを要求するには、[パーティション フィルタを要求] チェックボックスをオンにします。パーティション フィルタによって、コストが削減され、パフォーマンスが向上する場合があります。詳細については、パーティション フィルタの要件を設定するをご覧ください。
- [パーティショニング タイプ] を選択して、1 日ごと、1 時間ごと、月別、年別のいずれかのパーティショニングを選択します。
- 省略可: [詳細オプション] セクションで、顧客管理の暗号鍵を使用する場合は、[顧客管理の暗号鍵(CMEK)を使用] オプションを選択します。デフォルトの場合、BigQuery では、Google が管理する鍵を使用して、保存されているお客様のコンテンツを暗号化します。
- [テーブルを作成] をクリックします。
SQL
時間単位列パーティション分割テーブルを作成するには、PARTITION BY
句を指定した CREATE TABLE
DDL ステートメントを使用します。
次の例では、transaction_date
列に基づいた 1 日ごとのパーティションを含むテーブルが作成されます。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE) PARTITION BY transaction_date OPTIONS ( partition_expiration_days = 3, require_partition_filter = TRUE);
OPTIONS
句を使用して、パーティションの有効期限やパーティション フィルタ要件などのテーブル オプションを設定します。[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリの実行をご覧ください。
DATE
列のデフォルトのパーティショニング タイプは 1 日ごとのパーティショニングです。別のパーティショニング タイプを指定するには、PARTITION BY
句に DATE_TRUNC
関数を含めます。たとえば、次のクエリは月別のパーティションを含むテーブルを作成します。
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE) PARTITION BY DATE_TRUNC(transaction_date, MONTH) OPTIONS ( partition_expiration_days = 3, require_partition_filter = TRUE);
また、パーティショニング列として TIMESTAMP
列または DATETIME
列を指定することもできます。その場合は、PARTITION BY
句に TIMESTAMP_TRUNC
関数または DATETIME_TRUNC
関数を含めて、パーティション タイプを指定します。たとえば、次のステートメントは TIMESTAMP
列に基づいて 1 日ごとのパーティションを含むテーブルを作成します。
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_ts TIMESTAMP) PARTITION BY TIMESTAMP_TRUNC(transaction_ts, DAY) OPTIONS ( partition_expiration_days = 3, require_partition_filter = TRUE);
bq
--table
フラグ(または -t
ショートカット)を指定して、bq mk
コマンドを使用します。
bq mk \ --table \ --schema SCHEMA \ --time_partitioning_field COLUMN \ --time_partitioning_type UNIT_TIME \ --time_partitioning_expiration EXPIRATION_TIME \ --require_partition_filter=BOOLEAN PROJECT_ID:DATASET.TABLE
次のように置き換えます。
- SCHEMA:
column:data_type,column:data_type
形式のスキーマ定義、またはローカルマシン上の JSON スキーマ ファイルのパス。詳細については、スキーマの指定をご覧ください。 - COLUMN: パーティショニング列の名前。テーブル スキーマでは、この列は
TIMESTAMP
型、DATETIME
型、またはDATE
型である必要があります。 - UNIT_TIME: パーティショニング タイプ。サポートされる値は、
DAY
、HOUR
、MONTH
、またはYEAR
です。 - EXPIRATION_TIME: テーブルのパーティションの有効期限(秒単位)。
--time_partitioning_expiration
フラグは省略可能です。詳細については、パーティションの有効期限の設定をご覧ください。 - BOOLEAN:
true
の場合、このテーブルのクエリにはパーティション フィルタを含める必要があります。--require_partition_filter
フラグは省略可能です。詳細については、パーティション フィルタの要件を設定するをご覧ください。 - PROJECT_ID: プロジェクト ID。省略した場合は、デフォルトのプロジェクトが使用されます。
- DATASET: プロジェクト内のデータセットの名前。
- TABLE: 作成するテーブルの名前。
他のコマンドライン オプションについては、bq mk
をご覧ください。
次の例では、1 時間ごとのパーティショニングを使用して ts
列でパーティション分割された mytable
という名前のテーブルを作成します。パーティションの有効期限は 259,200 秒(3 日間)です。
bq mk \
-t \
--schema 'ts:TIMESTAMP,qtr:STRING,sales:FLOAT' \
--time_partitioning_field ts \
--time_partitioning_type HOUR \
--time_partitioning_expiration 259200 \
mydataset.mytable
API
timePartitioning
プロパティと schema
プロパティを指定する定義済みのテーブル リソースを使用して tables.insert
メソッドを呼び出します。
Go
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Go の手順に沿って設定を行ってください。詳細については、BigQuery Go API のリファレンス ドキュメントをご覧ください。
Java
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Java の手順に沿って設定を行ってください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Node.js の手順に沿って設定を行ってください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Python の手順に沿って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
取り込み時間パーティションパーティション分割テーブルを作成する
スキーマ定義を持つ空の取り込み時間パーティションパーティション分割テーブルを作成するには:
コンソール
Google Cloud コンソールで [BigQuery] ページを開きます。
[エクスプローラ] パネルでプロジェクトを開いて、データセットを選択します。
アクション オプションを開いて、[開く] をクリックします。
詳細パネルで [テーブルを作成]
をクリックします。[テーブルの作成] ページの [ソース] セクションで、[空のテーブル] を選択します。
[送信先] で次の操作を行います。
- [データセット名] で、該当するデータセットを選択します。
- [テーブル名] フィールドに、テーブルの名前を入力します。
- [テーブルタイプ] が [ネイティブ テーブル] に設定されていることを確認します。
[スキーマ] セクションでスキーマ定義を入力します。
[パーティションとクラスタの設定] セクションの [パーティショニング] で、[取り込み時間により分割] をクリックします。
(省略可)このテーブルのすべてのクエリでパーティション フィルタを要求するには、[パーティション フィルタを要求] チェックボックスをオンにします。パーティション フィルタを要求すると、コストが削減され、パフォーマンスが向上する場合があります。詳細については、パーティション フィルタの要件を設定するをご覧ください。
[テーブルを作成] をクリックします。
SQL
取り込み時間パーティション分割テーブルを作成するには、_PARTITIONDATE
でパーティショニングする PARTITION BY
句を指定した CREATE TABLE
ステートメントを使用します。
次の例では、1 日ごとのパーティションを含むテーブルを作成しています。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
CREATE TABLE mydataset.newtable (transaction_id INT64) PARTITION BY _PARTITIONDATE OPTIONS ( partition_expiration_days = 3, require_partition_filter = TRUE);
OPTIONS
句を使用して、パーティションの有効期限やパーティション フィルタ要件などのテーブル オプションを設定します。[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリの実行をご覧ください。
取り込み時間パーティショニングのデフォルトのパーティショニング タイプは、1 日ごとのパーティショニングです。別のパーティショニング タイプを指定するには、PARTITION BY
句に DATE_TRUNC
関数を含めます。たとえば、次のクエリは月別のパーティションを含むテーブルを作成します。
CREATE TABLE mydataset.newtable (transaction_id INT64) PARTITION BY DATE_TRUNC(_PARTITIONTIME, MONTH) OPTIONS ( partition_expiration_days = 3, require_partition_filter = TRUE);
bq
--table
フラグ(または -t
ショートカット)を指定して、bq mk
コマンドを使用します。
bq mk \ --table \ --schema SCHEMA \ --time_partitioning_type UNIT_TIME \ --time_partitioning_expiration EXPIRATION_TIME \ --require_partition_filter=BOOLEAN \ PROJECT_ID:DATASET.TABLE
次のように置き換えます。
- SCHEMA:
column:data_type,column:data_type
形式の定義、またはローカルマシン上の JSON スキーマ ファイルのパス。詳細については、スキーマの指定をご覧ください。 - UNIT_TIME: パーティショニング タイプ。サポートされる値は、
DAY
、HOUR
、MONTH
、またはYEAR
です。 - EXPIRATION_TIME: テーブルのパーティションの有効期限(秒単位)。
--time_partitioning_expiration
フラグは省略可能です。詳細については、パーティションの有効期限の設定をご覧ください。 - BOOLEAN:
true
の場合、このテーブルのクエリにはパーティション フィルタを含める必要があります。--require_partition_filter
フラグは省略可能です。詳細については、パーティション フィルタの要件を設定するをご覧ください。 - PROJECT_ID: プロジェクト ID。省略した場合は、デフォルトのプロジェクトが使用されます。
- DATASET: プロジェクト内のデータセットの名前。
- TABLE: 作成するテーブルの名前。
他のコマンドライン オプションについては、bq mk
をご覧ください。
次の例では、mytable
という名前の取り込み時間パーティションパーティション分割テーブルを作成します。このテーブルには 1 日ごとのパーティショニングがあり、パーティションの有効期限が 259,200 秒(3 日間)に設定されています。
bq mk \
-t \
--schema qtr:STRING,sales:FLOAT,year:STRING \
--time_partitioning_type DAY \
--time_partitioning_expiration 259200 \
mydataset.mytable
API
timePartitioning
プロパティと schema
プロパティを指定する定義済みのテーブル リソースを使用して tables.insert
メソッドを呼び出します。
整数範囲パーティションパーティション分割テーブルを作成する
スキーマ定義を持つ空の整数範囲パーティションパーティション分割テーブルを作成するには:
コンソール
Google Cloud コンソールで [BigQuery] ページを開きます。
[エクスプローラ] パネルでプロジェクトを開いて、データセットを選択します。
アクション オプションを開いて、[開く] をクリックします。
詳細パネルで [テーブルを作成]
をクリックします。[テーブルの作成] ページの [ソース] セクションで、[空のテーブル] を選択します。
[送信先] で次の操作を行います。
- [データセット名] で、該当するデータセットを選択します。
- [テーブル名] フィールドに、テーブルの名前を入力します。
- [テーブルタイプ] が [ネイティブ テーブル] に設定されていることを確認します。
[スキーマ] セクションでスキーマ定義を入力します。スキーマにパーティショニング列に対する
INTEGER
列が含まれていることを確認してください。詳細については、スキーマの指定をご覧ください。[パーティションとクラスタの設定] セクションの [パーティショニング] プルダウン リストで、[フィールドにより分割] を選択して、パーティショニング列を選びます。このオプションは、スキーマに
INTEGER
列が含まれている場合にのみ使用できます。[開始]、[終了]、[間隔] の値を指定します。
- [開始] は、最初のパーティション範囲の開始値です(この値は含まれる)。
- [終了] は、最後のパーティション範囲の終了値です(この値は含まれない)。
- [間隔] は、各パーティション範囲の幅です。
この範囲外の値は、特定の
__UNPARTITIONED__
パーティションに入ります。(省略可)このテーブルのすべてのクエリでパーティション フィルタを要求するには、[パーティション フィルタを要求] チェックボックスをオンにします。パーティション フィルタを要求すると、コストが削減され、パフォーマンスが向上する場合があります。詳細については、パーティション フィルタの要件を設定するをご覧ください。
[テーブルを作成] をクリックします。
SQL
整数範囲パーティション分割テーブルを作成するには、PARTITION BY
句を指定した CREATE TABLE
DDL ステートメントを使用します。
次の例では、customer_id
列でパーティショニングされた、開始 0、終了 100、間隔 10 のテーブルを作成しています。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
CREATE TABLE mydataset.newtable (customer_id INT64, date1 DATE) PARTITION BY RANGE_BUCKET(customer_id, GENERATE_ARRAY(0, 100, 10)) OPTIONS ( require_partition_filter = TRUE);
OPTIONS
句を使用して、パーティション フィルタ要件などのテーブル オプションを設定します。[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリの実行をご覧ください。
bq
--table
フラグ(または -t
ショートカット)を指定して、bq mk
コマンドを使用します。
bq mk \ --schema schema \ --range_partitioning=COLUMN_NAME,START,END,INTERVAL \ --require_partition_filter=BOOLEAN \ PROJECT_ID:DATASET.TABLE
次のように置き換えます。
- SCHEMA:
column:data_type,column:data_type
形式のインライン スキーマ定義、またはローカルマシン上の JSON スキーマ ファイルのパス。詳細については、スキーマの指定をご覧ください。 - COLUMN_NAME: パーティショニング列の名前。テーブル スキーマでは、この列は
INTEGER
型である必要があります。 - START: 最初のパーティション範囲の開始値(この値は含まれる)。
- END: 最後のパーティション範囲の終了値(この値は含まれない)。
- INTERVAL: 各パーティション範囲の幅。
- BOOLEAN:
true
の場合、このテーブルのクエリにはパーティション フィルタを含める必要があります。--require_partition_filter
フラグは省略可能です。詳細については、パーティション フィルタの要件を設定するをご覧ください。 - PROJECT_ID: プロジェクト ID。省略した場合は、デフォルトのプロジェクトが使用されます。
- DATASET: プロジェクト内のデータセットの名前。
- TABLE: 作成するテーブルの名前。
パーティション範囲外の値は、特別な __UNPARTITIONED__
パーティションに入ります。
他のコマンドライン オプションについては、bq mk
をご覧ください。
次の例では、customer_id
列でパーティション分割された mytable
という名前のテーブルを作成します。
bq mk \
-t \
--schema 'customer_id:INTEGER,qtr:STRING,sales:FLOAT' \
--range_partitioning=customer_id,0,100,10 \
mydataset.mytable
API
rangePartitioning
プロパティと schema
プロパティを指定する定義済みのテーブル リソースを使用して tables.insert
メソッドを呼び出します。
Java
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Java の手順に沿って設定を行ってください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Node.js の手順に沿って設定を行ってください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Python の手順に沿って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
クエリ結果からパーティションパーティション分割テーブルを作成する
クエリ結果からパーティション分割テーブルを作成するには:
- SQL で
CREATE TABLE ... AS SELECT
ステートメントを使用します。この方法を使用すると、時間単位列または整数範囲でパーティション分割されたテーブルは作成できますが、取り込み時間でパーティション分割されたテーブルは作成できません。 bq
コマンドライン ツールまたは BigQuery API を使用して、クエリに宛先テーブルを設定します。クエリを実行すると、BigQuery は結果を宛先テーブルに書き込みます。この方法は、どのパーティショニング タイプにも使用できます。jobs.insert
API メソッドを呼び出して、timePartitioning
プロパティまたはrangePartitioning
プロパティでパーティショニングを指定します。
SQL
クエリには SELECT AS
句を指定した CREATE TABLE
ステートメントを使用します。パーティショニングを構成するには、PARTITION BY
句を含めます。
次の例では、transaction_date
列でパーティション分割されたテーブルを作成します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE) PARTITION BY transaction_date AS ( SELECT transaction_id, transaction_date FROM mydataset.mytable );
OPTIONS
句を使用して、パーティション フィルタ要件などのテーブル オプションを設定します。[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリの実行をご覧ください。
bq
クエリからパーティションパーティション分割テーブルを作成するには、--destination_table
フラグと --time_partitioning_type
フラグを指定した bq query
コマンドを使用します。
時間単位列パーティショニング:
bq query \ --use_legacy_sql=false \ --destination_table TABLE_NAME \ --time_partitioning_field COLUMN \ --time_partitioning_type UNIT_TIME \ 'QUERY_STATEMENT'
取り込み時間パーティショニング:
bq query \ --use_legacy_sql=false \ --destination_table TABLE_NAME \ --time_partitioning_type UNIT_TIME \ 'QUERY_STATEMENT'
整数範囲パーティショニング:
bq query \ --use_legacy_sql=false \ --destination_table PROJECT_ID:DATASET.TABLE \ --range_partitioning COLUMN,START,END,INTERVAL \ 'QUERY_STATEMENT'
次のように置き換えます。
- PROJECT_ID: プロジェクト ID。省略した場合は、デフォルトのプロジェクトが使用されます。
- DATASET: プロジェクト内のデータセットの名前。
- TABLE: 作成するテーブルの名前。
- COLUMN: パーティショニング列の名前。
- UNIT_TIME: パーティショニング タイプ。サポートされる値は、
DAY
、HOUR
、MONTH
、またはYEAR
です。 - START: 範囲パーティショニングの開始値(この値は含まれる)。
- END: 範囲パーティショニングの終了値(この値は含まれない)。
- INTERVAL: パーティション内の各範囲の幅。
- QUERY_STATEMENT: テーブルのデータ入力に使用されるクエリ。
次の例では、月別のパーティショニングを使用して transaction_date
列でパーティショニングされたテーブルを作成しています。
bq query \ --use_legacy_sql=false \ --destination_table mydataset.newtable \ --time_partitioning_field transaction_date \ --time_partitioning_type MONTH \ 'SELECT transaction_id, transaction_date FROM mydataset.mytable'
次の例では、整数範囲パーティショニングを使用して customer_id
列でパーティショニングされたテーブルを作成します。
bq query \ --use_legacy_sql=false \ --destination_table mydataset.newtable \ --range_partitioning customer_id,0,100,10 \ 'SELECT * FROM mydataset.ponies'
取り込み時間パーティションパーティション分割テーブルの場合は、パーティション デコレータを使用して特定のパーティションにデータを読み込むこともできます。次の例では、新しい取り込み時間パーティションパーティション分割テーブルを作成し、20180201
(2018 年 2 月 1 日)パーティションにデータを読み込んでいます。
bq query \ --use_legacy_sql=false \ --time_partitioning_type=DAY \ --destination_table='newtable$20180201' \ 'SELECT * FROM mydataset.mytable'
API
クエリ結果をパーティションパーティション分割テーブルに保存するには、jobs.insert
メソッドを呼び出します。query
ジョブを構成します。destinationTable
に宛先テーブルを指定します。timePartitioning
プロパティまたは rangePartitioning
プロパティでパーティショニングを指定します。
日付別テーブルを取り込み時間パーティションパーティション分割テーブルへ変換する
日付別テーブルを以前に作成している場合は、bq
コマンドライン ツールで partition
コマンドを使用して、関連する一連のテーブル全体を単一の取り込み時間パーティションパーティション分割テーブルに変換できます。
bq --location=LOCATION partition \ --time_partitioning_type=PARTITION_TYPE \ --time_partitioning_expiration INTEGER \ PROJECT_ID:SOURCE_DATASET.SOURCE_TABLE \ PROJECT_ID:DESTINATION_DATASET.DESTINATION_TABLE
次のように置き換えます。
- LOCATION: ロケーションの名前。
--location
フラグは省略可能です。 - PARTITION_TYPE: パーティション タイプ。有効な値は
DAY
、HOUR
、MONTH
、またはYEAR
です。 - INTEGER: パーティションの有効期限(秒)。最小値はありません。パーティションの日付(UTC)に、この整数値を足した値が有効期限になります。
time_partitioning_expiration
フラグは省略可能です。 - PROJECT_ID: プロジェクト ID。
- SOURCE_DATASET: 日付別テーブルを含むデータセット。
- SOURCE_TABLE: 日付別テーブルの接頭辞。
- DESTINATION_DATASET; 新しいパーティションパーティション分割テーブルのデータセット。
- DESTINATION_TABLE; 作成するパーティションパーティション分割テーブルの名前。
partition
コマンドは --label
、--expiration
、--description
フラグをサポートしていません。ラベル、テーブルの有効期限、および説明は、テーブルの作成後に追加できます。
partition
コマンドを実行すると、BigQuery によって日付別テーブルからパーティションを生成するコピージョブが作成されます。
次の例では、sourcetable_
という接頭辞が付いた一連の日付別テーブルから、mytable_partitioned
という名前の取り込み時間パーティションパーティション分割テーブルを作成しています。新しいテーブルは毎日パーティション分割され、パーティションの有効期限は 259,200 秒(3 日間)に設定されます。
bq partition \
--time_partitioning_type=DAY \
--time_partitioning_expiration 259200 \
mydataset.sourcetable_ \
mydataset.mytable_partitioned
日付別テーブルが sourcetable_20180126
と sourcetable_20180127
の場合、このコマンドは mydataset.mytable_partitioned$20180126
と mydataset.mytable_partitioned$20180127
というパーティションを作成します。
パーティションパーティション分割テーブルのセキュリティ
パーティションパーティション分割テーブルのアクセス制御は、標準テーブルのアクセス制御と同じです。さらに詳しい内容については、テーブル アクセス制御の概要をご覧ください。
次のステップ
- パーティションパーティション分割テーブルの管理方法と更新方法については、パーティションパーティション分割テーブルの管理をご覧ください。
- パーティションパーティション分割テーブルをクエリする方法については、パーティションパーティション分割テーブルのクエリをご覧ください。