2017-11-01 15 views
1

BigQueryのテーブルに挿入(「ロード/バッチ」挿入または「ストリーミング」挿入)を受け取らないようにします。
テーブルを「読み取り専用モード」にする可能性はありますか?BigQueryテーブルを「読み取り専用モード」に切り替える

最小の権限レベルを持つ標準のIAM /アクセスコントロールがデータセットレベルであることを避けたいと思います。 "readonly"モードでファイルシステムを強制するときと同じように、すべてのユーザが自分の役割とは独立して1つのテーブルに "readonly"を強制するオプションがあれば、それはすばらしいことになります。

(最後の目標は、ここで説明する「マスタ」と「更新」テーブルの安全なマージを行うことです:Delete/update table entries by joining 2 tables on Google BigQuery without import/export)。

+0

これは、アクセスが制限されたデータセット内のすべてのテーブルを保持し、別のデータセット内のテーブルに対して(当然読取り専用の)ビューを作成することで可能です。ビューを読み込み専用にするためにテーブルを交換します。それは動作しますか?一部の組織では、たとえば、読み取りアクセスのみを持つ「実動」データセットがあります。もしこれが実現可能であるなら、私はより完全な答えを書くことができます。 –

+0

私はそれについて考えましたが、それは私が持っている各 "マスター"テーブルの2つのデータセットを作成することを意味します(現在の "更新"テーブル用の1データセットと、マージしたい新しい "更新"テーブル用の1データセットマージプロセスが完了したら新しいデータを受け取る予定です)。だから私は恐れている多くのデータセットの地獄になります。 – Sourygna

答えて

1

現在のところ、これはBigQueryでは不可能です。機能リクエストをhttps://issuetracker.google.com/issues/new?component=187149&template=0

に送信できます。回避策として、スナップショットデコレータを使用することができます。 (私の記憶が正しければ、最後の2週間以内)
ので、テーブルに追加する行を制限することなく、あなたはいつでもテーブルの状態を取得することができます - ので、間接的に、これはあなたが

スナップショットデコレータはavailable in Legacy SQLをしている何をしたいあなたを与えるだろう最近彼らがそうだったと思っていますadded to Standard SQL

+0

確かに一貫性のために動作します。私はまた、すべての行に追加するEventTimestamp列でいくつかのフィルタリングを使用することも考えていました。 しかし、このアプローチでは、「更新テーブル」を「切り捨てる」ことができません。これは、https://cloud.google.com/bigquery/docs/reference/に従ってストリーミングテーブルでDML /削除操作が有効になっていないためです。標準SQL /データ操作言語(少なくとも、ストリーミングの代わりにマイクロバッチを実行する場合は、そのアプローチを使用できます)。 – Sourygna

+0

フィルタリングは、コードがより高価になる可能性があります。また、テーブルが増加し続ける場合は、テーブルスキャン全体(余分な$$)が発生します。 o) –

+0

提案したように、私は機能要求を記入しました:https://issuetracker.google.com/issues/68743496 – Sourygna

関連する問題