Использование циклов с запросами UDF BigQuery

Я пытаюсь обработать некоторые дистрибутивы между таблицами с помощью Levenshtein-UDF (постоянный) внутри другого UDF (временный). Я себе это представляю:

  1. Получите доступные дистрибутивы в таблице A, которые запрошены в таблице B.
  2. Прокрутите дистрибутивы и, в конце концов, верните таблицу

Почему я думаю, что мне нужно перебрать все районы? Потому что на каждом дистрите много разных адресов, и это приводит к неудачному запросу.

Мой код выглядит следующим образом:

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Переменная содержит массив со всеми районами, которые мне нужно обработать. Итак, идея такая:

  1. Для каждого дистринта процесс выполняет really big query который применяет LevensthteinDistance-UDF
  2. Когда все районы обработаны, вернем результирующую таблицу

На самом деле я не публикую really big queryпотому что... ну, это довольно долго. Но я могу выложить самые важные детали, если это необходимо:)

Как я могу этого добиться? Честно говоря, я не знаю, нужен ли цикл, но это то, что мне пришло в голову, поэтому я открыт для других предложений.

0 ответов

Другие вопросы по тегам