Решение для "выбора преобразования" для 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, а не все столбцы.

0 ответов

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