Как сказал @shollyman
API BigQuery в настоящее время не предоставляет эквивалент вызова списка местоположений.
Итак, вам следует рассмотреть возможность подачи запроса на функцию средство отслеживания проблем .
Тем временем , я хотел добавить вариант 3 к тем двум, которые уже были предложены @Tamir
Это немного наивный вариант с плюсами и минусами , но в зависимости от вашего конкретного случая использования может быть полезным и легко адаптируемым для вашего приложения
Шаг 1 - загрузить страницу (https://cloud.google.com/bigquery/docs/locations) html
Шаг 2 - разобрать и извлечь необходимую информацию
Очевидно, это супер просто для реализации в любом клиенте по вашему выбору
Поскольку я большой поклонник BigQuery - я прошел через "проверку концепции" с помощью BigQuery Tool - 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
)
Как видите, я использовал в библиотеке . Из его README:
он (для «сущностей HTML») - надежный кодировщик / декодер сущностей HTML, написанный на JavaScript. Он поддерживает все стандартизированные именованные ссылки на символы в соответствии с HTML, обрабатывает неоднозначные амперсанды и другие крайние случаи так же, как браузер ...
После того, как рабочий процесс выполнен и эти два шага выполнены - результат находится в project.dataset.location_extraction
, и мы можем запросить эту таблицу, чтобы убедиться, что мы получили то, что ожидается
Примечание: очевидно, что анализ и извлечение информации о необходимых местоположениях довольно упрощены и, несомненно, могут быть улучшены, чтобы быть более гибкими с точки зрения изменения макета исходной страницы