根据输入创建数据曲线

问题描述 投票:0回答:1

我正在尝试在图表上可视化一系列数据,理想情况下创建一些可以显示分布情况的东西。数据位于雪花数据库中,我尝试使用百分位数来执行此操作。我以 10% 的增量计算了该值。我当前的查询如下,但这似乎并没有给我一个很好的可视化输出

select
APPROX_PERCENTILE(field_name, 0.1) "10_percent_value", 
APPROX_PERCENTILE(field_name, 0.2) "20_percent_value", 
APPROX_PERCENTILE(field_name, 0.3) "30_percent_value", 
etc.
from table.name

我确信我以错误的方式处理这个问题,但希望获得一些关于替代方法的帮助,这些方法可以支持曲线类型可视化。希望这是足够的信息吗?

charts snowflake-cloud-data-platform
1个回答
0
投票

太糟糕了,Snowflake 的百分位数函数要求第二个参数是文字常量。我希望有一种方法可以将列名称传递给它,以使这个解决方案更具编程性。

为了获得可视化输出,您需要所有百分位值位于同一列中。这就是它的样子

create or replace temporary table percentiles (percentile varchar, percentile_value int) as

select '10th', approx_percentile(field_name,0.1) from t 
union all
select '20th', approx_percentile(field_name,0.2) from t 
union all
select '30th', approx_percentile(field_name,0.3) from t 
union all
select '40th', approx_percentile(field_name,0.4) from t 
union all
select '50th', approx_percentile(field_name,0.5) from t 
union all
select '60th', approx_percentile(field_name,0.6) from t 
union all
select '70th', approx_percentile(field_name,0.7) from t 
union all
select '80th', approx_percentile(field_name,0.8) from t 
union all
select '90th', approx_percentile(field_name,0.9) from t 
union all
select '100th', approx_percentile(field_name,1.0) from t;

select * from percentiles;

如果性能成为问题,您可以使用 approx_percentile_accumulate() 将百分位状态存储在表中,并在其上运行计算,而不是基表

示例输出:

enter image description here enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.