我正在尝试在图表上可视化一系列数据,理想情况下创建一些可以显示分布情况的东西。数据位于雪花数据库中,我尝试使用百分位数来执行此操作。我以 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
我确信我以错误的方式处理这个问题,但希望获得一些关于替代方法的帮助,这些方法可以支持曲线类型可视化。希望这是足够的信息吗?
太糟糕了,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() 将百分位状态存储在表中,并在其上运行计算,而不是基表
示例输出: