【发布时间】:2020-05-17 10:44:11
【问题描述】:
我已经在这个网站上搜索了很多关于此的主题,但无法实施任何解决方案。我正在使用雪花来提取数据,然后使用数据透视函数来转置表格。问题是我必须在数据透视函数中指定静态字段。在我的查询中,我将日期范围设为 90 天,因此不断更改日期并不是很有效。我正在使用雪花连接在 Jupyter 中提取数据,因此 python 是一个选项。
示例查询(可行):
select * from (
select date, id, count(products) as prod_count
from table1 where date >= '2019-01-01' and date <= '2019-01-05'
group by 1, 2) d
pivot (
max(prod_count) for date in ('2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04', '2019-01-05')) piv
我尝试在“for date in”部分中传递一个选择不同的日期查询,但这不起作用。我还尝试创建单独的数据框和包含所有日期的 python 列表,然后将它们传递进去,但这也不起作用。我还在这个论坛上尝试了各种其他解决方案,但它们似乎专注于 TSQL 或 SQL Server 语法,这在我的情况下不起作用(至少在我尝试时..)感谢任何帮助。
编辑:
显示输入与预期输出的示例:
输入:
Date ID Products
2019-01-01 1 A
2019-01-01 1 B
2019-01-01 2 A
2019-01-02 1 A
2019-01-02 1 B
2019-01-02 1 C
2019-01-02 2 A
2019-01-02 2 B
当前(和预期,但日期动态)输出:
ID 2019-01-01 2019-01-02
1 2 3
2 1 2
【问题讨论】:
-
您能否展示一些数据样本以及动态部分需要放在哪里?
-
@Datanovice 编辑了我的帖子以向您展示示例
-
谢谢,SQL 查询或 Python 代码到底需要动态什么?从您的输出中,无论日期如何,一个简单的 pivot 或 groupby 总是会给出相同的结果?
-
@Datanovice 在 SQL 查询中可以看到日期 >= 2019-01-01 和日期
-
知道了,等一下,我会用 Python 提供答案。
标签: python sql pandas snowflake-cloud-data-platform