やりたいこと。
ASPのレポート(大概はCSVファイル)をBigQueryのテーブルに日々インサートしたい。
現状
現状はGASを使って一度スプレッドシートにレポート内容を転記。
そのスプレッドシートをbigqueryのテーブルと連携させ、データポータル(データスタジオ)でレポート生成に必要なバッチ処理を行っています。
ですが定期的(週1くらい)にスプレッドシート側のエラーでバッチ処理がコケているようで、手動実行をする日があり、解消するために直接レポートデータをBigQueryのテーブルに保存していきたいです。
テストコード
function bq_test() { // 必要データ準備 var projectId = "ほげほげほげほ" // var select_query = 'SELECT * FROM [テーブル名] LIMIT 10;' var insert_query2 = '#standardSQL\n INSERT INTO `テーブル名` (text1 , text2 ) VALUES ("あいうえお","サンゴ礁");' // 多分オプションとかqueryとか色々入りそう。 var resource = { "query" : insert_query2 } // query実行 BigQuery.Jobs.query(resource, projectId); }
上記のソース自体は動いており、SELECTやINSERTはできています。
現状いちいち「#StandardSQL」をオプションで付けているのでこれもなんだかなぁと思っています。
おそらくresourcesにオプションでなに書けるのかなぁとは思うのですが、resourcesの中身にどういう項目が有るのかわからず、現状はクエリのみを渡しています。
さて、本題ですが、このままレポートのデータを流し込もうとするとなが~いSQLを生成して流し込む形になってしまうのでいやだなぁと思い、CSVのデータを比較的簡単に流し込む方法があればそちらを採用したいです。
…(略 //CSV仮データ var test = "\"aaa\",bbb\r\nuuu,ooo\r\n" var csv = Utilities.newBlob(test).setContentType('application/octet-stream'); // insert実行 BigQuery.Jobs.insert(resource, projectId,csv);
↑こんな感じでできそうっぽいところまではわかったのですが、resourcesの中身に何を用意してやればいいのかわからず…
一応リファレンスや参考になりそうな記事も目を通したのですが、理解できず…お助け願いたいです。
あなたの回答
tips
プレビュー