Использование циклов с запросами UDF BigQuery
Я пытаюсь обработать некоторые дистрибутивы между таблицами с помощью Levenshtein-UDF (постоянный) внутри другого UDF (временный). Я себе это представляю:
- Получите доступные дистрибутивы в таблице A, которые запрошены в таблице B.
- Прокрутите дистрибутивы и, в конце концов, верните таблицу
Почему я думаю, что мне нужно перебрать все районы? Потому что на каждом дистрите много разных адресов, и это приводит к неудачному запросу.
Мой код выглядит следующим образом:
DECLARE district DEFAULT(ARRAY(SELECT
DISTINCT(dist_name)
FROM
`myproject_id.dataset.table_A`
INNER JOIN (
SELECT
DISTINCT(district_name)
FROM
`myproject_id.dataset.table_B`
WHERE
district_name IS NOT NULL)foo
ON
district_name = foo.district_name
WHERE
district_name IS NOT NULL));
CREATE TEMP FUNCTON dist_func(dist ARRAY<STRING>)
AS (
#loop throught all districts and process them using the Levenshtein-UDF
);
SELECT * FROM UNNEST(dist_func(district));
В
district
Переменная содержит массив со всеми районами, которые мне нужно обработать. Итак, идея такая:
- Для каждого дистринта процесс выполняет
really big query
который применяет LevensthteinDistance-UDF - Когда все районы обработаны, вернем результирующую таблицу
На самом деле я не публикую
really big query
потому что... ну, это довольно долго. Но я могу выложить самые важные детали, если это необходимо:)
Как я могу этого добиться? Честно говоря, я не знаю, нужен ли цикл, но это то, что мне пришло в голову, поэтому я открыт для других предложений.