雪花-如何使用功能显示列名?

时间:2019-11-15 00:17:50

标签: snowflake-data-warehouse snowflake-schema

我没有从Snowflake文档中获得很多帮助,这是关于如何使用雪花函数获取给定列名的信息。

我有自动报告,可以针对给定日期进行计算。在这里

select
  sum(case when logdate = to_date(dateadd('day', - 10, '2019-11-14')) then eng_fees + data_fees end) AS to_date(dateadd('day', - 10, '2019-11-14'))
from myTable
where logdate = '2019-11-04'

我在下面的列名中得到了关注

to_date(dateadd('day', - 10, '2019-11-14'))
100

我的列名的我的预期输出

2019-11-04
100

如何在Snowflake中将预期日期打印为列名?

3 个答案:

答案 0 :(得分:1)

您的语句使用AS来命名您的列。 Snowflake会将其视为文字,而不是计算。我想,为了执行功能内的要求,您需要使用Javascript功能。这将允许您使用预定义的计算列名来动态构建SQL语句。

https://docs.snowflake.net/manuals/sql-reference/udf-js.html

答案 1 :(得分:0)

不使用外部功能(或TASK调度)就不能拥有动态列名。

您可以创建一个JavaScript存储过程,该存储过程将生成VIEW,其中可以通过动态参数/表达式设置列名。

处理此问题的正常方法是使用报告工具,该报告工具可以显示带有动态标题的固定列结果集或完全运行动态SQL。

答案 2 :(得分:0)

我看到了两种接近您想要的东西的路径:

1)您可以简单地使用UNION将标头显示为第一行,并将实际的列别名更改为1 .... N-以便它们提供列数-这将是最快的,并且最便宜的

2)您可以使用动态SQL生成一个查询,该查询将动态填充您的别名,然后简单地运行它(您可以使用示例PIVOT来构造此类查询)