Snowflake cloud data platform 如何准确地使用雪花比率报告?

Snowflake cloud data platform 如何准确地使用雪花比率报告?,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我对雪花函数比率报告有一个问题,它是四舍五入的。似乎存在默认舍入行为,这导致总和不同于1 你将如何解决这个问题 干杯 Joe从技术上讲,这里发生的一切都不是“错误的”——正如您所指出的,这是一个取整问题。每个比率报告结果都是正确的,值之和也是正确的 解决这一问题的最佳方法是通过将输入强制转换为number而不是INTEGER来强制比率报告输出更精确的数字。在我的测试中,以下各项效果良好: -- Create the table for testing CREATE TABLE R2R_TEST

我对雪花函数比率报告有一个问题,它是四舍五入的。似乎存在默认舍入行为,这导致总和不同于1

你将如何解决这个问题

干杯


Joe

从技术上讲,这里发生的一切都不是“错误的”——正如您所指出的,这是一个取整问题。每个比率报告结果都是正确的,值之和也是正确的

解决这一问题的最佳方法是通过将输入强制转换为
number
而不是
INTEGER
来强制比率报告输出更精确的数字。在我的测试中,以下各项效果良好:

-- Create the table for testing
CREATE TABLE R2R_TEST (activity_count integer);

-- Insert the values from the example screenshot.
INSERT INTO R2R_TEST VALUES (210),(11754),(3660),(66);

-- Create the test RATIO_TO_REPORT query with the cast to NUMBER
SELECT RATIO_TO_REPORT(activity_count::number(32,8))  OVER (ORDER BY activity_count) r2r FROM R2R_TEST;

-- Check our work.
with test as (SELECT RATIO_TO_REPORT(activity_count::number(32,8))  OVER (ORDER BY activity_count) r2r FROM R2R_TEST)
SELECT SUM(r2r) FROM test; -- 1.0000000000[...]

您可以看到,我所做的只是将
activity\u count
转换为
数字
,这给出了未舍入的结果。

这里发生的任何事情在技术上都不是“错误的”-正如您所指出的,这是一个舍入问题。每个比率报告结果都是正确的,值之和也是正确的

解决这一问题的最佳方法是通过将输入强制转换为
number
而不是
INTEGER
来强制比率报告输出更精确的数字。在我的测试中,以下各项效果良好:

-- Create the table for testing
CREATE TABLE R2R_TEST (activity_count integer);

-- Insert the values from the example screenshot.
INSERT INTO R2R_TEST VALUES (210),(11754),(3660),(66);

-- Create the test RATIO_TO_REPORT query with the cast to NUMBER
SELECT RATIO_TO_REPORT(activity_count::number(32,8))  OVER (ORDER BY activity_count) r2r FROM R2R_TEST;

-- Check our work.
with test as (SELECT RATIO_TO_REPORT(activity_count::number(32,8))  OVER (ORDER BY activity_count) r2r FROM R2R_TEST)
SELECT SUM(r2r) FROM test; -- 1.0000000000[...]

您可以看到,我所做的只是将
活动\u count
转换为
数字
,这会给出未经排序的结果。

这可能值得向Snowflake提供一张支持票,因此他们可以为您查询。这可能值得向Snowflake提供一张支持票,以便他们可以为您查询。