BigQuery - объединить значения для записи - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь объединить количество предметов, которые человек купил, в одну строку, чтобы я мог провести анализ корзин сортов в BigQuery. Вот как выглядят мои данные:

Name       Date_Processed       Items.SKU
John       Feb-1                ABC123
                                ABC245
                                CST099
Sarah      Feb 3                ABC245
                                CST099
                                CST099
                                CZT011
Emily      Feb 3                ABC123

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

SELECT name, date, ARRAY(SELECT sku FROM UNNEST(line_items) AS itemSKU ORDER BY sku asc)

FROM (
  SELECT *, ROW_NUMBER() OVER(PARTITION BY id) AS instance
  FROM `shopify.orders`
) orders -- identify duplicate rows

WHERE instance = 1
AND
date(date_processed) BETWEEN date_sub(current_date(), interval 30 day) AND current_date

Могу ли я что-нибудь сделать в BigQuery, чтобы эти данные выглядели так:

Name       Date_Processed       Items.SKU
John       Feb-1                ABC123,ABC245,CST099
Sarah      Feb 3                ABC245,CST099,CST099,CZT011
Emily      Feb 3                ABC123

Я думал об использовании ARRAY_CONCAT, но не могу заставить это работать.

1 Ответ

1 голос
/ 06 марта 2020
SELECT name, date, 
  (SELECT SRING_AGG(sku ORDER BY sku) FROM UNNEST(line_items)) AS skus
FROM `shopify.orders`   

или немного / чуть менее многословно

SELECT name, date, 
  (SELECT SRING_AGG(sku ORDER BY sku) FROM t.line_items) AS skus
FROM `shopify.orders` t 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...