字符串与整数的 Google BigQuery 和 JSON 输出格式

Ral*_*zzo 5 google-bigquery

似乎 BigQuery 在选择 --format json 时总是在值周围加上双引号,即使该字段是整数字段

如果你运行这个:

node --eval 'console.log(JSON.stringify({a:1}));'
Run Code Online (Sandbox Code Playgroud)

你会看到字符串:

{"a":1}
Run Code Online (Sandbox Code Playgroud)

(1 是 an integer,它在 javascript 对象中显示为整数。)

我们希望 BigQuery 中的查询输出也是

{"a":1}
Run Code Online (Sandbox Code Playgroud)

当字段是integer字段时

例如,“bqtest”文件包含:

a
1
Run Code Online (Sandbox Code Playgroud)

请执行下列操作:

bq load --skip_leading_rows 1 --replace --project_id YOUR-PROJECT-ID nfl.jsontestinteger bqtest  a:integer
Run Code Online (Sandbox Code Playgroud)

然后

bq query --format json --project_id YOUR-PROJECT-ID "SELECT * FROM nfl.jsontestinteger"
Run Code Online (Sandbox Code Playgroud)

你会看见:

[{"a":"1"}]
Run Code Online (Sandbox Code Playgroud)

如果您不想创建一个公共表,可以使用以下公共表:

bq query --format json --project_id YOUR-PROJECT-ID "SELECT * FROM [personal-real-estate:nfl.jsontestinteger]"
Run Code Online (Sandbox Code Playgroud)

问题:有没有办法让 BigQueryintegers在 json 格式输出中没有双引号的情况下格式化?

只是为了确认这里的流程相同,但我们将字段创建为string字段

bq load --skip_leading_rows 1 --replace --project_id YOUR-PROJECT-ID nfl.jsonteststring bqtest  a:string

bq query --format json --project_id YOUR-PROJECT-ID "SELECT * FROM [personal-real-estate:nfl.jsonteststring]"
Run Code Online (Sandbox Code Playgroud)

还返回完全相同的结果:

[{"a":"1"}]
Run Code Online (Sandbox Code Playgroud)

stringinteger字段的输出不应该不同吗?