2012-05-15 15 views
8

Google Bigqueryのテーブルからデータの一部を削除するサポートを追加する計画はありますか?今私たちが持っている問題は、時間の経過とともに収集するデータポイントの分析にこの問題を使用していることです。データの最後のX日間にクエリを実行したいが、最後のX日後にデータをBigQueryに保存する必要はなくなりました。Google BigQuery行を削除しますか?

現在、データを削除すると考えることができる唯一の方法は、データテーブル全体を削除し、それを再作成してX日間のデータでロードすることです。これは、毎日のCSVファイルにもデータを保存する必要がありますが、これは最適ではありません。

この問題の対処方法や、近いうちに削除される行のクエリがある場合の推奨事項はありますか?

答えて

12

2016アップデート:BigQueryのは今、削除、更新行することができます - あなたのユースケースを記述するのFH

https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax


感謝を。 BigQueryはデザインによってのみ追加されます。現時点では、既存のデータセットから単一行または一行のバッチを削除することはサポートされていません。 1.毎日新しいテーブルを作成します(必要に応じて古いテーブルを削除します)。 2.データをテーブルに追加し、時間をかけてクエリを実行します。/date

実際には、毎日新しいテーブルを作成することをお勧めします。 BigQueryはクエリされたデータ量によって料金を請求するため、大量のデータセット全体を毎回照会するのではなく、最も経済的です。

ところで - あなたは現在あなたのデータをどのように収集していますか?

+0

良い提案を。私たちは現在、MySQLに保存しています。実際に処理したデータをCSVにダンプしてアップロードします。私は、特定のデータセットのテーブル数に制限があるのを見ていますが、何も見つかりません。これには限界がないのは正しいですか? – Daum

+1

回転テーブルアプローチを採用している場合、ちょうどFYI - BigQueryはテーブルの有効期限をサポートするようになりました。 'bq update --expiration dataset.table'を使ってテーブルをbqツールで更新できます。 –

+0

@Daum BigQueryには、データセットごとに作成できるテーブルの数に制限はありません。 –

2

また、該当する場合は、削除するもの以外のすべてのアイテムを返すために、BigQueryのOMIT RECORD IFを試すことができます。次に、そのクエリ結果から新しいテーブルを作成します。

(Googleのリファレンスドキュメントから取った例)

SELECT * FROM 
    publicdata:samples.github_nested 

OMIT RECORD IF 
    COUNT(payload.pages.page_name) <= 80; 

出典:https://cloud.google.com/bigquery/query-reference

13

ビッグクエリでレコードを削除するには、最初に標準SQLを有効にする必要があります。オープンのBigQueryウェブUIを標準SQL

  1. を有効にするための

    手順。

  2. [クエリの作成]をクリックします。
  3. [オプションを表示]をクリックします。
  4. [レガシSQLを使用する]チェックボックスをオフにします。

これは、更新、挿入、およびBigQueryのテーブル今

からデータを削除するBigQueryの動的な操作言語(DML)を有効にします、あなたは、レコードを削除するには、プレーンなSQLクエリを書くことができます

DELETE [FROM] target_name [alias] WHERE condition 

あなたは、参照することができます: https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax#delete_statement

関連する問題