Как вернуть несколько значений с сохраненными функциями в BigQuery?

#google-bigquery #stored-functions #bigquery-udf

#google-bigquery #хранимые функции #bigquery-udf

Вопрос:

Есть ли какой-либо способ вернуть несколько результатов в bigquery (хранимые функции) Я слышал, что мы должны быть в состоянии сделать это с помощью Array. Вот пример :

 create function if not exists hw6.GetNumTherapistWorking(
    dateInput date
)
returns count1,count2,count3
as
(
    (select count1,count2,count3 from table....);
)
 

Ответ №1:

Рассмотрим приведенный ниже пример, чтобы проиллюстрировать решение

 create temp table mytable as
  select 1 count1, 2 count2, 3 count3, current_date as count_date union all 
  select 11, 12, 13, current_date - 3 union all 
  select 21, 22, 23, current_date - 5
;

# create function if not exists hw6.GetNumTherapistWorking(
create temp function GetNumTherapistWorking(dateInput date) as (
    array(select as struct count1,count2,count3 from mytable where count_date > dateInput)
);

select *
from unnest(GetNumTherapistWorking(current_date - 4));   
 

с выводом

введите описание изображения здесь

Примечание: он использует временный UDF — но то же самое работает для постоянного (сохраненного) UDF — вам просто нужно будет использовать полное имя UDF — hw6.GetNumTherapistWorking