如何以编程方式列出可用的Google BigQuery位置?

问题描述 投票:1回答:2

如何以编程方式列出可用的Google BigQuery位置?我需要一个类似于本页表格中的结果:https://cloud.google.com/bigquery/docs/locations

google-bigquery
2个回答
0
投票

不幸的是,没有API提供BigQuery支持的位置列表。

我看到两个可能对你有用的选择:

选项1 您可以手动管理列表,并通过API或您的应用程序支持的任何其他方式将此列表公开给您的客户端(您需要遵循BigQuery产品更新以遵循此列表中的更新)

选项2 如果您的用例是提供用于存储您自己的数据的位置列表,您可以调用dataset.list获取位置列表并在您的应用中显示/使用它


    {
          "kind": "bigquery#dataset",
          "id": "id1",
          "datasetReference": {
            "datasetId": "datasetId",
            "projectId": "projectId"
          },
          "location": "US"
    }

2
投票

正如@shollyman所说

此时,BigQuery API不会公开等效的列表位置调用。因此,您应该考虑在issue tracker上提交功能请求。

同时,我想将选项3添加到@Tamir已经提出的那两个中

这是一个有点天真的选择,它的优点和缺点,但取决于您的具体用例可能是有用的,并很容易适应您的应用程序

第1步 - 加载页面(https://cloud.google.com/bigquery/docs/locations)html 第2步 - 解析并提取所需信息

显然,这在您选择的任何客户端中实现都非常简单

因为我是巨大的BigQuery粉丝 - 我使用BigQuery Tool - Magnus进行了“概念验证”

我只用两个任务创建了工作流程: API任务 - 将页面的HTML加载到变量var_payload中 和 BigQuery任务 - 从html中解析和提取想要的信息

“整个”工作流程就像在下面的屏幕截图中看到的一样简单

enter image description here

我在BigQuery Task中使用的查询是

CREATE TEMP FUNCTION decode(x STRING) RETURNS STRING
LANGUAGE js AS """
  return he.decode(x);
"""
OPTIONS (library="gs://my_bucket/he.js");
WITH t AS (
 SELECT html, 
   REGEXP_EXTRACT_ALL(
     REGEXP_REPLACE(html, 
       r'\n|<strong>|</strong>|<code>|</code>', ''), 
     r'<table>(.*?)</table>'
   )[OFFSET(0)] x
 FROM (SELECT'''<var_payload>''' AS html)
)
SELECT pos, 
  line[SAFE_OFFSET(0)] Area, 
  line[SAFE_OFFSET(1)] Region_Name, 
  decode(line[SAFE_OFFSET(2)]) Region_Description
FROM (
 SELECT  
   pos, REGEXP_EXTRACT_ALL(line, '<td>(.*?)</td>') line
 FROM t, 
    UNNEST(REGEXP_EXTRACT_ALL(x, r'<tr>(.*?)</tr>')) line 
    WITH OFFSET pos
 WHERE pos > 0
)

如你所见,我使用了he library。从其自述文件:

他(对于“HTML实体”)是一个用JavaScript编写的健壮的HTML实体编码器/解码器。它支持所有标准化的命名字符引用,按照HTML,处理模糊的&符号和其他边缘情况,就像浏览器一样......

在执行工作流并完成这两个步骤后 - 结果在project.dataset.location_extraction中,我们可以查询此表以确保我们已经得到了预期的结果

enter image description here

注意:显然解析和提取所需的位置信息非常简单,并且可以在改变源页面布局方面更加灵活

© www.soinside.com 2019 - 2024. All rights reserved.