提问人:Prabhash Mishra 提问时间:11/10/2023 更新时间:11/10/2023 访问量:46
snowflake 中的日期差函数为 DB2 中的相同查询再提供一次计数
Date difference function in snowflake is giving one more count for same query in DB2
问:
我们正在从 DB2 迁移到 Snowflake。对于 DB2 和 snowflake 中的相同查询,snowflake 的 datediff() 为某些值提供比 1 更多的计数,而不是所有值都归入 DB2 的 Days()。大多数值都是匹配的。我在 java 中动态生成查询并将其发送到雪花以执行。
Db2 查询:
Select
'1' as fromPattern, Cast(p1.patternnumber as varchar(20)) as fromCode,
'2' as toPattern, Cast(p2.patternnumber as varchar(20)) as toCode,
Cast(Cast(count(*) as Integer) as varchar(20)) as num,
Cast(Cast(avg(Days(p2.datepointer) - Days(p1.stopdate)) as Integer) as varchar(20)) as avgGap
from TenMillion_20220731.NS8661_562_20231109_104300_097 p1
join TenMillion_20220731.NS8661_564_20231109_104338_543 p2 on p1.personid=p2.personid
group by p1.patternnumber, p2.patternnumber
order by fromPattern, toPattern, fromCode, toCode
Snowflake查询:
Select
'1' as fromPattern, Cast(p1.patternnumber as varchar(20)) as fromCode,
'2' as toPattern, Cast(p2.patternnumber as varchar(20)) as toCode,
Cast(Cast(count(*) as Integer) as varchar(20)) as num,
Cast(Cast(avg(datediff(day,p1.stopdate,p2.datepointer)) as Integer) as varchar(20)) as avgGap
from TenMillion_20220731.NS10386_147_20231108_235900_717 p1
join TenMillion_20220731.NS10386_149_20231108_235900_717 p2 on p1.personid=p2.personid
group by p1.patternnumber, p2.patternnumber
order by fromPattern, toPattern, fromCode, toCode
DB2 的 AVGGAP 列是日期差列,在 DB2 中值为 619 和 340,但在 snowflake 中分别为 620 和 341。除两个值外,其他值匹配。
谁能帮我理解为什么相同的函数给出相同和不同的值。理解这个问题很重要,因为它在我们的应用程序中数据不匹配,需要向供应商澄清。请帮忙。
谢谢 普拉巴什·米什拉
答: 暂无答案
评论