我正在使用bq命令行工具从Bigquery表中进行查询.当我登录并开箱即运行查询过程时,有没有办法让服务帐户身份验证保持不变?
我做的步骤:
运行以下命令验证服务帐户:
gcloud auth activate-service-account --key-file /somekeyFile.p12 someServiceAccount.gserviceaccount.com
Run Code Online (Sandbox Code Playgroud)从bigquery表查询,这很好用:
bq --project_id=formal-cascade-571 query "select * from dw_test.clokTest"
Run Code Online (Sandbox Code Playgroud)但后来我从框中退出,然后重新登录.当我再次查询Bigquery表时:
bq --project_id=formal-cascade-571 query "select * from dw_test.clokTest"
Run Code Online (Sandbox Code Playgroud)
它给了我错误:
您当前的有效帐户[someServiceAccount.gserviceaccount.com]没有任何有效凭据.
即使我传入私钥文件:
bq --service_account=someServiceAccount.gserviceaccount.com --service_account_credential_file=~/clok_cred.txt --service_account_private_key_file=/somekeyFile.p12 --project_id=formal-cascade-571 query "select * from dw_test.clokTest"
Run Code Online (Sandbox Code Playgroud)
它给出了同样的错误:
您当前的有效帐户[someServiceAccount.gserviceaccount.com]没有任何有效凭据.
因此,每次我需要通过以下方式重新验证我的服务帐户:
gcloud auth activate-service-account
Run Code Online (Sandbox Code Playgroud)
有没有办法让经过身份验证的服务帐户凭据保持不变?
谢谢您的帮助.
我正在使用Bigquery命令行工具来查询Bigquery表中的数据.
我的查询语句很长.
有没有办法将长查询语句保存在文件中并将文件名传递给Bigquery命令行工具?
谢谢.
当我将重复记录类型的输入字段传递给Bigquery UDF时,它会一直说未找到输入字段.
这是我的2行数据:
{"name":"cynthia", "Persons":[ { "name":"john","age":1},{"name":"jane","age":2} ]}
{"name":"jim","Persons":[ { "name":"mary","age":1},{"name":"joe","age":2} ]}
Run Code Online (Sandbox Code Playgroud)
这是数据的架构:
[{"name":"name","type":"string"},
{"name":"Persons","mode":"repeated","type":"RECORD",
"fields":
[
{"name": "name","type": "STRING"},
{"name": "age","type": "INTEGER"}
]
}
Run Code Online (Sandbox Code Playgroud)
]
这是查询:
SELECT
name,maxts
FROM
js
(
//input table
[dw_test.clokTest_bag],
//input columns
name, Persons,
//output schema
"[
{name: 'name', type:'string'},
{name: 'maxts', type:'string'}
]",
//function
"function(r, emit)
{
emit({name: r.name, maxts: '2'});
}"
)
LIMIT 10
Run Code Online (Sandbox Code Playgroud)
尝试运行查询时遇到错误:
错误:5.3 - 15.6:未定义的输入字段人员作业ID:ord2-us-dc:job_IPGQQEOo6NHGUsoVvhqLZ8pVLMQ
有人请帮忙吗?
谢谢.