【发布时间】:2022-01-19 14:48:08
【问题描述】:
我正在处理一个简单的 SparkSQL 查询:
SELECT
*,
(DATE + DURATION) AS EXPIRY_MONTH
FROM
loan
WHERE
EXPIRY_MONTH >= 12
loan 表的前 10 行如下:
"loan_id";"account_id";"date";"amount";"duration";"payments";"status"
5314;1787;930705;96396;12;8033.00;"B"
5316;1801;930711;165960;36;4610.00;"A"
6863;9188;930728;127080;60;2118.00;"A"
5325;1843;930803;105804;36;2939.00;"A"
7240;11013;930906;274740;60;4579.00;"A"
6687;8261;930913;87840;24;3660.00;"A"
7284;11265;930915;52788;12;4399.00;"A"
6111;5428;930924;174744;24;7281.00;"B"
7235;10973;931013;154416;48;3217.00;"A"
此查询适用于 SQLite(意味着添加列 EXPIRY_MONTH 并根据条件 EXPIRY_MONTH >= 12 过滤数据)但不适用于 SparkSQL (Spark 3.1.0)。
具体来说,SparkSQL 引擎会抛出错误,因为 EXPIRY_MONTH 列不存在。
如何在不使用子查询的情况下修复此查询?
这种行为的原因是什么?SparkSQL 与更标准的 SQL 有什么区别?
【问题讨论】:
标签: sql select apache-spark-sql