[英]How to transform data into daily snapshot given the two date columns?
我的表中有產品數據,看起來與此類似
產品編號 | 用戶身份 | 銷售開始 | 銷售結束 | 數量 |
---|---|---|---|---|
1個 | 12 | 2022-01-01 | 2022-02-01 | 15 |
2個 | 234 | 2022-11-01 | 2022-12-31 | 123 |
我想將表格轉換為每日快照,使其看起來像這樣:
產品編號 | 用戶身份 | 數量 | 日期 |
---|---|---|---|
1個 | 12 | 15 | 2022-01-01 |
1個 | 12 | 15 | 2022-01-02 |
1個 | 12 | 15 | 2022-01-03 |
... | ... | ... | ... |
2個 | 234 | 123 | 2022-12-31 |
我知道如何在 Pandas 中做類似的事情,但我需要在 AWS Athena 中進行。 我想獲取日期間隔並將其取消嵌套,但我正在努力正確映射它們。
關於如何轉換數據的任何想法?
這將幫助您sequence
SELECT product_id, user_id, quantity, date(date) as date FROM(
VALUES
(1, 12, DATE '2022-01-01', DATE '2022-02-01', 15),
(2, 234, DATE '2022-11-01', DATE '2022-12-31', 123)
) AS t (product_id, user_id, sales_start, sales_end, quantity),
UNNEST(sequence(sales_start, sales_end, interval '1' day)) t(date)
您可以使用sequnece
生成日期范圍,然后unnest
嵌套:
-- sample data
with dataset(product_id, user_id, sales_start, sales_end, quantity) as (
values (1, 12 , date '2022-01-01', date '2022-01-05', 15), -- short date ranges
(2, 234, date '2022-11-01', date '2022-11-03', 123) -- short date ranges
)
-- query
select product_id, user_id, quantity, date
from dataset,
unnest(sequence(sales_start, sales_end, interval '1' day)) as t(date);
Output:
產品編號 | 用戶身份 | 數量 | 日期 |
---|---|---|---|
1個 | 12 | 15 | 2022-01-01 |
1個 | 12 | 15 | 2022-01-02 |
1個 | 12 | 15 | 2022-01-03 |
1個 | 12 | 15 | 2022-01-04 |
1個 | 12 | 15 | 2022-01-05 |
2個 | 234 | 123 | 2022-11-01 |
2個 | 234 | 123 | 2022-11-02 |
2個 | 234 | 123 | 2022-11-03 |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.