Bigquery замена пустых результатов или нулевых значений на некоторые 000

#google-bigquery

#google-bigquery

Вопрос:

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

выберите trvl_details.strt_dte как cre_dte, trvl_typ_cde, объедините (count(1),0) как createdcount из project.dataset.tableid ОБЪЕДИНИТЕ UNNEST(trvl_details)trvl_details, ГДЕ trvl_details.strt_dte >= «2020-12-24» и trvl_typ_cde= ‘AIR’ group на 1,2

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

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

Может кто-нибудь, пожалуйста, помочь мне с этим?

Ответ №1:

Вы можете использовать GENERATE_DATE_ARRAY для создания списка дат, а затем соединить созданный список дат с вашими результатами:

 WITH your_data AS (
  select trvl_details.strt_dte as cre_dte, trvl_typ_cde, coalesce(count(1),0) as createdcount 
  from project.dataset.tableid JOIN UNNEST(trvl_details)trvl_details 
  WHERE trvl_details.strt_dte >= "2020-12-24" and trvl_typ_cde='AIR' 
  group by 1,2
)
SELECT day, your_data.trvl_typ_cde, IFNULL(your_data.createdcount, 0)
FROM UNNEST(GENERATE_DATE_ARRAY('2020-12-01', '2020-12-31')) as day 
LEFT JOIN your_data 
ON day = your_data.cre_dte
 

Комментарии:

1. .. Это сработало. Но хотелось бы, есть ли способ получить желаемый результат без использования сгенерированного массива, поскольку он включает ручное предоставление дат. .