我们知道在使用bq mk
命令在BigQuery中创建数据集时,我们可以使用标记--data_location
来指定我们希望在此数据集下的表数据位于哪个区域。
我们现在想要设置一个监视器,以便每当有人在我们指定的位置之外创建数据集时,我们就可以向数据集所有者发出警报。为此,我们需要一个可以自动扫描所有数据集并获取位置信息的脚本。我们查看了api调用和bq命令行工具命令,对于显示/查询数据集的数据位置没有任何线索。想知道是否有办法实现我们的目标?
答案 0 :(得分:3)
获取当前项目中的所有数据集:
bq ls -d --format=json
如果你跑
bq show --format=json <dataset_name>
你得到一个包含location
密钥的JSON:
{
"kind":"bigquery#dataset",
"datasetReference":{
"projectId":"<edited>",
"datasetId":"wr_temp"
},
"creationTime":"1479393712602",
"access":[
{
"specialGroup":"projectWriters",
"role":"WRITER"
},
{
"specialGroup":"projectOwners",
"role":"OWNER"
},
{
"role":"OWNER",
"userByEmail":"<edited>"
},
{
"specialGroup":"projectReaders",
"role":"READER"
}
],
"defaultTableExpirationMs":"604800000",
"etag":"<edited>",
"location":"US",
"lastModifiedTime":"1479393712602",
"id":"<edited>",
"selfLink":"https://www.googleapis.com/bigquery/v2/projects/<edited>"
}
同样关于API,如果你运行数据集的GET调用,你会得到相同的JSON。 https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets/get#try-it
答案 1 :(得分:1)
我们查看了api调用和bq命令行工具命令,对于显示/查询数据集的数据位置没有任何线索。想知道是否有办法实现我们的目标?
您可以使用API来完成此任务:
使用Datasets: list
API,您可以列出指定项目中的所有数据集
然后,使用Datasets: get
API,您可以返回由datasetID指定的数据集,并检查数据集&#39; location
属性