Транспонирование в Google BigQuery/Excel

# #sql #excel #google-bigquery #pivot-table

#sql #превосходить #google-bigquery #сводный стол

Вопрос:

У меня есть вопрос, касающийся переноса данных в BQ (или фактически экспорта и выполнения его в Excel). Я пытаюсь получить этот результат (извините, я новичок и не знаю, как разделить 2 столбца, вариант 1 и вариант 2 должны быть 2 столбцами) :

КлиентИД Дата Вариант 1. Вариант 2
AB 12/2 123. 456

Мой текущий запрос выдаст этот вывод:

КлиентИД Дата Вариант
AB 12/1 123
AB 12/2 456
 SELECT DISTINCT  case when (hits.ecommerceAction.action_type = '3') then date end date, [enter image description here][1]  clientId AS client_id,  page.pagepath as pagepath,  product.productVariant as variant, FROM  `xxxx.ga_sessions_`,  UNNEST(hits) AS hits, unnest(hits.product) as product   

Есть ли что-нибудь, что я могу использовать для выполнения шага транспонирования? Мой текущий вывод больше похож на основные данные, вся информация, связанная с продуктом, находится в одном столбце. Буду признателен, если вы сможете поделиться какими-либо мыслями!

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

1. вы уверены, что представленный запрос действительно дает какой-либо результат? если да, не могли бы вы поделиться образцом результатов, чтобы мы могли использовать его в качестве отправной точки и в дальнейшем помочь вам

2. @MikhailBerlyant Привет, я только что обновил скриншот вывода здесь в качестве ссылки, спасибо!

3. изображение — это что-то сложное в использовании-не могли бы вы, пожалуйста, скопировать результат вставки в виде текста, чтобы мы могли с ним поиграть. также не ясно, какой ожидается результат — пожалуйста, добавьте его в свой вопрос тоже

4. Привет, извините, я супер новичок и не знаю, как разделить 2 столбца, вариант 1 и вариант 2 должны быть 2 столбцами. Я принял ваше предложение и обновил таблицы, надеюсь, что это лучше! @Михаил Берлянт

5. смотрите мой ответ вместе с комментарием под ним!

Ответ №1:

Рассмотрим следующий подход

 select * from (  select ClientID, Variant, Pagepath,  max(Date) over win Date,  row_number() over (win order by Date) pos  from your_current_output  window win as (partition by ClientID) ) pivot (any_value(Variant) as Variant, any_value(Pagepath) as Pagepath for pos in (1,2,3))   

если обратиться к образцу в вашем вопросе

 with your_current_output as (  select '12/1' Date, 123 ClientID, 'abc' Variant, 'fis.com' Pagepath union all  select '12/2', 123, 'efg', 'fere.com' )   

выход есть

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

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

1. Эй, ты слишком часто меняешь свой вопрос. Примечание: Я предоставил ответ на эту версию вашего вопроса и соответствующие образцы данных, которые я видел около 10 минут назад.

2. Привет, это сработало идеально! Хорошо бы научиться выполнять команду транспонирования в Большом запросе, так привык к процессу транспонирования в SAS. Спасибо за знания, приняли ответ.