首页 > 解决方案 > “无法评估不支持的子查询类型”在雪花 UDF 中使用两个不同的日期比较

问题描述

在 Snowflake 中,当使用 UDF 时出现上述错误(在什么是完全合法的查询中):

SELECT
  dd.date,
  person_count(dd.date) AS cnt
FROM dim_date dd
WHERE dd.date BETWEEN '2019-11-01' and '2019-11-07'

本质上,这有效:

CREATE OR REPLACE FUNCTION person_count(d date)
  RETURNS number 
  AS 
  $$
  SELECT COUNT(DISTINCT person_id) 
   FROM persons
   WHERE (deceased_date > d)
  $$;

这会产生错误:

CREATE OR REPLACE FUNCTION person_count(d date)
  RETURNS number 
  AS 
  $$
  SELECT COUNT(DISTINCT person_id) 
   FROM persons
   WHERE (deceased_date = '1901-01-01' OR deceased_date > d)
  $$;

我试过TO_DATE在日期字符串上使用。我尝试过使用deceased_date < '1901-01-02'并且尝试将所有日期转换为字符串。似乎没有任何效果。我想这可能是一个错误。

标签: snowflake-cloud-data-platform

解决方案


问题是子查询支持中的 OR 谓词存在一些限制。


推荐阅读