2016-05-20 19 views
2

Jobs.queryを使用してAPIを経由して(SELECT * from [...]シンプル)BigQueryのテーブルを照会するとき、私はこれはスキーマとして返されます:不完全なスキーマ

"schema": { 
    "fields": [ 
    { 
    "name": "all", 
    "type": "INTEGER", 
    "mode": "NULLABLE" 
    }, 
    { 
    "name": "timestamp", 
    "type": "TIMESTAMP", 
    "mode": "NULLABLE" 
    }, 
    { 
    "name": "last_timestamp", 
    "type": "TIMESTAMP", 
    "mode": "NULLABLE" 
    }, 
    { 
    "name": "unique", 
    "type": "INTEGER", 
    "mode": "NULLABLE" 
    },... 

しかし、正しくによって返される実際のスキーマ( Tables.get)である:私は、スプレッドシートを移入するアプリケーションのスクリプトでクエリ結果を使用していると私は、列名などのスキーマから説明フィールドを使用したい

"schema": { 
    "fields": [ 
    { 
    "name": "all", 
    "type": "INTEGER", 
    "mode": "REQUIRED", 
    "description": "All searches" 
    }, 
    { 
    "name": "timestamp", 
    "type": "TIMESTAMP", 
    "mode": "REQUIRED", 
    "description": "Time of processing" 
    }, 
    { 
    "name": "last_timestamp", 
    "type": "TIMESTAMP", 
    "mode": "REQUIRED", 
    "description": "Last event" 
    }, 
    { 
    "name": "unique", 
    "type": "INTEGER", 
    "mode": "REQUIRED", 
    "description": "Unique users" 
    }, 

。実際のスキーマを取得するのにTable.getを使用できますが、最初のクエリで不完全なスキーマが得られる理由を理解したいと思います。

答えて

1

Jobs.query APIは、クエリの結果のスキーマ(バックグラウンドで一時テーブルに保存されます)を提供します。この表では、型、モードなどが問合せ表に関係するスキーマから派生しているにもかかわらず、フィールドの説明はありません。

他の側からのTables.get APIは実際に表のスキーマを戻します。あなたはこの表のすべてを説明を含めて見ているのです。

+0

ありがとうございました。それは私が得る反応に基づいて意味をなさない。しかし、[Jobs.getQueryResults](https://cloud.google.com/bigquery/docs/reference/v2/jobs/getQueryResults#response)のドキュメントのサンプルレスポンスにスキーマの説明フィールドが含まれているのはなぜですか? – numentar

+0

私は間違っている可能性がありますが、ドキュメントは100%完璧ではないと言います。この特定のケースでは、私はそれが多くの異なるAPIで使用されているテーブルリソースセクションのコピーペーストの問題だと思う。 –

+0

良いキャッチ。ドキュメントはAPI定義から自動生成され、API定義のスキーマ部分は、スキーマが表示されるAPIのさまざまな場所で共有されます。ただし、クエリエンジンはクエリ結果スキーマの説明を生成しないため、(少なくとも当分の間は)このフィールドはすべてのクエリ結果に対して省略されます。 –