Database Reference
In-Depth Information
Table 5.8
TableData REST Collection
Method
URL
HTTP
Verb
TableData.list()
. . ./tables/<table_id>/
data/
GET
TableData.insertAll() . . . /tables/<table_id>/
data/insertAll
POST
TableData Resource
The TableData resource is the TableRow, which, at first, looks like an odd
collection of
f
and
v
lists. After you get familiar with it, it still looks like an
odd collection of
f
and
v
lists, but at least they make a little bit more sense.
Each row is a structure with one field
f
, containing a list of structures
that also have a single field, this time called
v
. The TableData rows use
the same format as query results that are returned by
Jobs.query()
and
Jobs.getQueryResults()
and are modeled after the Google GViz
format.
So what's with the
f
and
v
? Why not have more idiomatic JSON with lists of
{"fieldName": "fieldValue"}
? The primary reason is compactness.
If you request a million rows and each row has the same field names, it is
highly redundant to specify the field names in each row. The names
f
and
v
were also chosen to be as compact as possible, rather than something more
verbose like
fields
and
value
.
Schemas in BigQuery can be recursive. In the nested case, there will be a
nested
f
inside of a
v
.