google-bigquery - 如何以编程方式列出可用的 Google BigQuery 位置?
问题描述
如何以编程方式列出可用的 Google BigQuery 位置?我需要一个类似于此页面表格中的结果:https ://cloud.google.com/bigquery/docs/locations 。
解决方案
正如@shollyman 提到的
BigQuery API 目前不公开等效的列表位置调用。因此,您应该考虑在问题跟踪器上提交功能请求。
同时,我想将选项 3 添加到 @Tamir 已经提出的两个选项中
这是一个有点幼稚的选项,有其优点和缺点,但取决于您的特定用例,它可能有用且易于适应您的应用程序
第 1 步 - 加载页面 ( https://cloud.google.com/bigquery/docs/locations ) html
第 2 步 - 解析并提取所需信息
显然,这在您选择的任何客户端中实现起来 都非常简单
由于我是 BigQuery 的忠实粉丝 - 我使用 BigQuery 工具完成了“概念验证” - Magnus
我创建了只有两个任务的工作流程:
API 任务- 将页面的 HTML 加载到变量var_payload
和
BigQuery 任务- 从 html 中解析和提取想要的信息
“整个”工作流程就像下面的屏幕截图一样简单
我在 BigQuery 任务中使用的查询是
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
)
如您所见,我使用了他的库。从它的自述文件中:
他(用于“HTML 实体”)是用 JavaScript 编写的强大的 HTML 实体编码器/解码器。它支持根据 HTML 的所有标准化命名字符引用,处理模棱两可的 & 和其他边缘情况,就像浏览器一样......
执行工作流并完成这两个步骤后 - 结果已输入project.dataset.location_extraction
,我们可以查询此表以确保我们得到了预期的 结果
注意:显然解析和提取所需位置信息非常简单,并且在更改源页面布局方面肯定可以改进以更加灵活
推荐阅读
- sql - Google Cloud SQL 导入 2005 备份失败
- python-3.x - AttributeError:“NoneType”对象没有属性“image_data_format”keras
- python - ImportError:没有名为“dask.dataframe”的模块;
- r - 如何使 purrr 包中的 map_df 返回一个小标题?
- mysql - 在 mysql phpmyadmin 中创建过程时出错
- java - 而 True 循环阻止应用程序加载:Java Netbeans
- css - VSCODE 上的 JAVA FX css 编辑器警告
- reactjs - React Material UI 防止列表重新渲染
- reactjs - (React.js) 冒泡排序问题
- java - HashiCorp Vault + Spring Boot。客户端 SSL 配置