2015-11-04 3 views
0

Моя конечная цель - передать повторяющееся строковое поле в UDF BigQuery, чтобы создать форму varargs UDF.Создайте промежуточную повторяющуюся строку и перейдите к UDF в BigQuery

Есть лучше способа, чем:

SELECT output from myUDF(SELECT split(concat(field1, ':', field2, ...), ':') ...)

Например, было бы здорово, чтобы быть в состоянии иметь REPEATED встроенный конструктор:

SELECT output from myUDF(SELECT REPEATED(field1, field2) as fields ...)

+0

Я думаю, вы должны просто переместить эту логику внутри UDF –

+0

достаточно справедливо - но все же вызов CONCAT остался бы, и тогда легко забыть разделитель. –

+0

нет CONCAT, вы должны просто сделать - ВЫБЕРИТЕ вывод FROM myUDF (SELECT field1, field2 ...). Вся логика переходит к UDF. Если вам не нужно сначала делать агрегации :) Конкретный пример поможет прибить это –

ответ

2

Спасибо - мы думали о том, будет ли полезной поддержка стиля varargs при запуске скалярных функций. Полезно услышать, что пользователи найдут такую ​​особенность, которая будет полезна при планировании этой функции.

Обходной путь, который вы опубликовали, вероятно, является вашим лучшим вариантом в настоящее время.

+0

. Спасибо - на самом деле мотивация для этого UDF в стиле varargs обусловлена ​​отсутствием скалярных функций: я хочу применить одну и ту же функцию к нескольким общим полям из различные таблицы (я буду использовать пример проверки адресов). Вместо того, чтобы писать UDF для каждой схемы ввода, я бы предпочел построить подзапрос «lookup», который применяется ко всем полям адресов одновременно, и предоставляет «исправленный» вывод. Тем не менее, было бы полезно иметь varargs-скаляры в том смысле, что мы можем затем проверять несколько адресов (например, адрес на транзакцию) в другом измерении (например, клиентом). –

Смежные вопросы