2016-05-03 2 views
0

insertAllパラメータを使用して大きなクエリテーブルにデータを挿入しようとしています。 jsonで適切に解析するには、私が使用している方法をここに示します。大きなクエリinsertAllを使用するとAppscriptの解析エラーが発生する

var datasetId = 'XXXXXXX'; 
var tableId = 'XXXXXX'; 
var rowobjects = []; 
var rowData = {}; 
rowData.ldap = ldap; 
rowData.avgrating = rating; 
rowData.emails = 0; 
rowData.jediemails = 0; 
rowobjects.push(rowData); 
Logger.log(rowobjects); 
var rjob = BigQuery.Tabledata.insertAll(ProjectID, datasetId, tableId, rowobjects); 

これは動作していないようです。私はこれを得るerror。どのように正しく解析していないのか分かりません。私は誰かがどのようにこれを解析する必要があるかを提案できることを願っています。これは実際の問題ですが、あなたのコードの最後の行に、あなたは、スペースに存在していない変数を使用しようとしている場合

+0

これはタイプミスです。ごめんなさい!私はまだこの問題に苦しんでいます。 –

答えて

0

私はAppScript経験がないが、私はあなたの行オブジェクトは、あなたのテーブルのスキーマと一致した辞書ているように見えることを指摘しなければなりません。 insertAll APIは、リクエストの再試行時に重複削除の行を一意に識別するために使用される「insertId」フィールドと、スキーマに一致するディクショナリを指す「json」フィールドを持つ「挿入行」を取ります。 insertAllの最後のパラメータは、要求の本文に一致するように意図されている場合、あなたは代わりにプロパティで辞書を移入する必要があり、

実際に
var rowData = {}; 
rowData.insertId = <some deduplication id for retries>; 
rowData.json = {}; 
rowData.json.ldap = ldap; 
rowData.json.avgrating = rating; 
rowData.json.emails = 0; 
rowData.json.jediemails = 0; 
rowobjects.push(rowData); 

おそらく、あなたのコードでは、より多くのようになるはずです必要に応じて他のパラメータを設定して、上記のrowobjectsを指す "rows"(あなたの質問のinsertAllリンクを参照)。

私はSWEAR FINAL EDIT:thisセクションに基づいて

:(「リクエストボディ」セクションhereで説明)insertAllリクエストのボディにマッチした辞書を渡すことに加えて

、あなたのパラメータ次の順序で指定する必要があります。

insertAll(requestBody, projectId, datasetId, tableId) 
+0

私はあなたの提案にコードを変更しましたが、私はまだ同じエラーが発生しています。パラメータの順序を変更しようとしましたが、「要求に行がありません」というエラーが表示されます。 私はどのような構文解析を求めているのかよくわかりません。 –

0

わからない -

var rjob = BigQuery.Tabledata.insertAll(ProjectID, datasetId, tableId, row objects); 

でなければなりません

var rjob = BigQuery.Tabledata.insertAll(ProjectID, datasetId, tableId, rowobjects); 

rowobjects配列をinsertAll関数に渡す。これがあなたの問題を解決すれば教えてください!

関連する問題