libro
www.tuyano.com
Google Apps Scriptプログラミング [中級編]

BigQuery APIの利用 (4/5)

作成:2012-06-07 13:33
更新:2012-06-07 13:33

■QueryResultsとテーブルデータ

では、テーブル内のデータはどのようにして取り出し処理するのでしょうか。これには、いくつかのやり方があります。まずは「全レコードを取り出して処理する」ということから考えていきましょう。

1. TableDataの取得
テーブルのデータは、BigQueryの「Tabledata」というプロパティでとり出すことができます。これはテーブルのデータを管理するTableDataというオブジェクトが設定されているものです。

2. TableDataListの取得
この中の「list」メソッドを使って、特定のテーブルのデータを取得します。これは以下のように呼び出します。
var 変数 = BigQuery.Tabledata.list("…プロジェクトID…",
    "…データセット名…","…テーブル名…");
このlistメソッドで返されるのは、「TableDataList」というオブジェクトです。文字通りデーブルのデータをまとめてリストとして管理するためのものです。

3. QueryResultsRowsの取得
ここから、「行データ」を取得します。行データは、行(Row)単位でデータを管理するものです。これは「getRows」という引数なしのメソッドで得られます。
var 変数 = 《TableDataList》.getRows();
このgetRowsで返されるのは、「QueryResultsRows」というオブジェクトの配列です。QueryResultsRowsが行データを管理するもので、1つ1つの行データがQueryResultsRowsの配列としてまとめられているわけです。

4. QueryResultsRowsFの取得
このQueryResultsRows配列から、必要な行データであるQueryResultsRowsを取り出し、そこから「QueryResultsRowsF」というオブジェクトを取得します。これは「getF」という引数なしメソッドで得られます。
var 変数 = 《QueryResultsRows》.getF();
これで返されるのは、QueryResultsRowsFオブジェクトの配列です。つまり、QueryResultsRowsFというのは、行データ内の個々のフィールドを管理するものと考えることができます。

5. getVで値を得る
このQueryResultsRowsF配列から利用するフィールドのQueryResultsRowsFを取り出し、そこから「getV」メソッドを呼び出して、そのフィールドの値をとり出すことができます。
var 変数 = 《QueryResultsRowsF》.getV();

――さあ、これでようやく1つ1つのデータを取り出せるところまで来ました。実際の利用例として、簡単なスクリプトを下に掲載しておきます。プロジェクトIDとデータセット名は、例によってそれぞれの環境にあわせて書き換えてください。

ここでは、各レコードのデータを「NAME:○○, MAIL:○○, AGE:○○」といった形式でログに書きだしていきます。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

function showTableData(){
  var result = BigQuery.Tabledata.list("…プロジェクトID…","…データセット名…","mytable");
  var rows = result.getRows();
  for(var i in rows){
    var row = rows[i];
    var f = row.getF();
    var record = "NAME:" + f[0].getV() + ", MAIL:" + f[1].getV() + ", AGE:" + f[2].getV();
    Logger.log(record);
  }
  Logger.log("-- total " + rows.length + " records.");
  
}

※関連コンテンツ

「Google Apps Scriptプログラミング [中級編]」に戻る