Решение для "выбора преобразования" для Python UDF в улье
Есть ли способ не включать все столбцы в select transform (), чтобы получить все столбцы в выводе?
например: у меня есть столбцы в таблице улья, как:
c1, c2, c3, c4, c5, c6, c7, c8, c9, c10
и я выполняю преобразование на столбцах c8, c9, c10
и вывод содержит c1, c2, c3, c4, c5, c6, c7, co
где co
= вывод после выполнения преобразования по столбцам c8, c9, c10
Есть способ, которым я могу сделать это:
select transform (c1,c2,c3,c4,c5,c6,c7,c8,c9,c10)
using 'python udf_name'
as (c1,c2,c3,c4,c5,c6,c7,co)
from table_name;
Проблема в том, что я не хочу передавать все столбцы в преобразовании select, так как в моей таблице почти 900 столбцов, и трудно понять, над какими столбцами работает UDF.
Пример:
#temp
c1, c2, c3, c4
a, 1, 0, 5
b, , 8, 9
Теперь я хочу найти первое ненулевое не нулевое значение из столбца c2, c3, c4
и распечатать его с колонкой c1
вот питон UDF
test.py:
import sys
for line in sys.stdin:
line=line.strip()
c=line.split()
l=len(c)
for i in range (1,l):
try:
if (int(c[i])==0):
pass
else:
print c[i]
break
except ValueError:
pass
Я могу добиться этого, пройдя все столбцы
select transform (c1,c2,c3,c4)
using 'python test.py'
as (c1,co)
from temp
выход:
c1, co
a, 1
b, 8
Проблема: я не хочу передавать все столбцы в select transform, так как у меня есть 900 столбцов.
В основном я хочу передать только те столбцы, которые участвуют в UDF, а не все столбцы.