如何在脚本中获取BigQuery数据集的数据位置信息

时间:2017-03-16 20:07:06

标签: google-bigquery

我们知道在使用bq mk命令在BigQuery中创建数据集时,我们可以使用标记--data_location来指定我们希望在此数据集下的表数据位于哪个区域。

我们现在想要设置一个监视器,以便每当有人在我们指定的位置之外创建数据集时,我们就可以向数据集所有者发出警报。为此,我们需要一个可以自动扫描所有数据集并获取位置信息的脚本。我们查看了api调用和bq命令行工具命令,对于显示/查询数据集的数据位置没有任何线索。想知道是否有办法实现我们的目标?

2 个答案:

答案 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属性