質問: BigqueryでGoogle Driveなどの日々更新される外部ソースのデータと、CSVアップロードなどの通常のデータを統合させた1つのテーブルを作る方法はございますでしょうか? 詳細としては、 数年分の顧客データの蓄積と解析をBigqueryで実施しようとしています。BigqueryデータのビジュアライズツールとしてGoogle Datastudioを利用予定です。 Datastudioで過去数年分の顧客データを読み込むには、Bigqueryに単一のテーブルとして顧客データを用意しなければならないはずですが、現状は複数のExcelファイルとして顧客データが保存されており、そのデータが日々更新されている状況です。このデータを週次で分析していきたいと考えており、下記の方法で実現できるのではないかと考えました。 1. 2016年より前のデータはBigqueryにそのままCSVデータとしてインポート(input1) 2. 2017年今年のデータは Google Drive(実際はGoogle sheet)で日々更新しているものを外部ソースデータとしてBigqueryのテーブルとしてインポート(input2) 3. 1と2のテーブルを連結させたビューを作成(output)★ 4. Datastudioに3を連携させてビジュアライズ ただ、この★3の部分でGoogle Driveと連携させているデータでは複数テーブルに対するクエリが動きません。 例えば、2つのテーブルを下記のように、 ``` SELECT * FROM `hogehoge.hogehoge.input*` ``` と指定しますと、 ``` Error: External tables cannot be queried through prefix. ``` といようなエラーが出ます。Google Driveなどの外部ソースのテーブルではワイルドカードが動かないということでしょうか。外部ソースデータをビューに切り替えてもエラーが出てしまいます。 ``` Error: Views cannot be queried through prefix. ``` このような場合にエラーを出さず解決させる方法が何かございますでしょうか?いずれにしても、日々更新されるGoogle DriveのデータをBigqueryに取り込みつつ過去のデータとともに単一のテーブルを作れる方法であれば問題ないです。
回答: Legacy SQLのTABLE_DATE_RANGEでは、federated tableに対してもクエリを実行することができました。 StandardSQLもしばらくしたら対応されるのではないかと思いますが、とりあえず今すぐ実行したいなら、Legacy SQLで書いちゃうのが早そうです。 ``` SELECT * FROM TABLE_DATE_RANGE(federated.t, TIMESTAMP('2017-01-01'),TIMESTAMP('2017-01-02')) LIMIT 1000 ```