snowflake-cloud-data-platform - “无法评估不支持的子查询类型”在雪花 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'
并且尝试将所有日期转换为字符串。似乎没有任何效果。我想这可能是一个错误。
解决方案
问题是子查询支持中的 OR 谓词存在一些限制。
推荐阅读
- r - 绘图功能仅在此数据框中绘制一个数量。可能是什么原因?
- javascript - 用其他数组中的元素替换 Javascript 数组元素
- vue.js - Vue整页未知元素
- swift - 检测何时按下相机闪光灯按钮?
- javascript - 意外的令牌,预期的“,”,同时遍历对象
- apache - 使用 google auth,当 asp.net core 仅运行 http,但反向代理仅运行 https 时,如何设置 asp.net core 以请求 https 重定向?
- python - 元组列表的python numba列表
- amazon-web-services - 在哪里可以找到现有 EC2 实例的域名
- c# - 比较 Web 服务响应
- node.js - 如何使用 AWS Lamba 函数获取和返回日期