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

Google bigquery 如何在脚本中获取BigQuery数据集的数据位置信息,google-bigquery,Google Bigquery,我们知道,当使用bq mk命令在BigQuery中创建数据集时,我们可以使用标志--data\u location来指定我们希望此数据集下的表数据位于哪个区域 我们现在想要设置一个监视器,这样每当有人在我们指定的位置之外创建数据集时,我们就可以触发对数据集所有者的警报。为了做到这一点,我们需要一个脚本,它可以自动扫描所有数据集并获取位置信息。我们查看了api调用和bq命令行工具命令,对于显示/查询数据集的数据位置没有任何线索。想知道是否有办法实现我们的目标?获取当前项目中的所有数据集: bq l

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


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

获取当前项目中的所有数据集:

bq ls -d --format=json
如果你跑

bq show --format=json <dataset_name>
同样关于API,如果您运行dataset的GET调用,您将返回相同的JSON

我们查看了api调用和bq命令行工具命令,对于显示/查询数据集的数据位置没有任何线索。想知道是否有办法实现我们的目标

您可以使用API来实现这一点:

使用API,您可以列出指定项目中的所有数据集

然后,使用API可以返回datasetID指定的数据集并检查数据集的属性

{  
   "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>"
}