Help us understand the problem. What is going on with this article?

Table Decoratorを使って処理するレコード数を削減する

More than 5 years have passed since last update.

Google BigQueryはクエリで処理したデータ量だけ課金される。テーブルが大きくなれば大きくなるほど課金されてしまうのである。これではログを1つのテーブルに大量に挿入していると困ったことになってしまうように見える。

Google BigQueryでは、このような追記型のテーブルに対して、テーブルのサブセットを利用することで、クエリにかかるコストを削減できるTable Decoratorという機能がある。

この記事は上記記事の抄訳となる。

Table Decoratorを利用する

通常、BigQueryにはクエリ実行時に全てのカラムをスキャンする。Table Decoratorを使用することで、データのサブセットに対し、費用効果の高いクエリを実行できる。Table Decoratorはコピー、エクスポート、リスト出力など、テーブルを読み込む全ての処理で使用できる。

Table Decoratorはms(ミリセカンド)単位で時刻を指定し、テーブルのサブセットを使用できる。時刻の指定には、現在時刻からの相対指定と、絶対指定ができる。例えば、-3600000は現在時刻より1時間前を示す。3600000はunix epoch(1970年1月1日0時0分)より1時間後を示す。

Snapshot decorators

Syntax

@<time>

<time>時点のテーブルのスナップショットを示す。<time>には、unix epochからの経過時刻をms(ミリセカンド)で指定する。<time>は過去7日以内かつ、テーブル作成時刻よりも大きくなければならない。@0は特別なケースで、最も古いテーブルのスナップショットを参照する。これは、7日前、もしくは、テーブルが作成されて7日以前であればテーブル作成時刻を示す。

Examples

相対指定の場合

1時間前のテーブルのスナップショットを取得する場合:

SELECT COUNT(*) FROM [data-sensing-lab:gartner.seattle@-3600000]

絶対指定の場合

1時間前の時刻は次のクエリで取得できる:

SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)

その後、次のクエリのを置き換えて実行する:

SELECT COUNT(*) FROM [data-sensing-lab:gartner.seattle@<time>]

Range decorators

Syntax

@<time1>-<time2>

<time1><time2>の間に追加されたテーブルデータを参照する。<time1>、および<time2>はunix epochからのms(ミリセカンド)で指定する。<time1><time2>は過去7日以内でなければならない。<time2>は省略でき、省略した場合は現在時刻になる。

Example

1時間前から30分前までに追加されたデータを取得する場合:

SELECT COUNT(*) FROM [data-sensing-lab:gartner.seattle@-3600000--1800000]

絶対値で指定する場合:

<time1><time2>は前述したクエリで取得できる。

SELECT COUNT(*) FROM [data-sensing-lab:gartner.seattle@<time1>-<time2>]
harukasan
よろしくおねがいします。
http://harukasan.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした