我试图从一个系统中获取任意sql语句作为输入,并在spark databricks集群中运行它。在这一点上,我的程序知道sql语句的支持表,并为查询加载了它们。但我遇到了一个问题,sql允许您从任意列中减去整数,而spark不允许。
我试图通过regex找到一种方法来替换 (T1.SomeColumn - 1)
Spark当量;而不必完全剖析select语句来找出列来自哪个表及其数据类型。
我的问题是:spark中有没有一种方法可以从未知类型的任意列中减去一个整数(但要知道它在sql中工作)?
1条答案
按热度按时间z9zf31ra1#
spark中的减法运算符与普通sql中的减法运算符相同,因此不需要替换它。
就减去任意列而言,spark内置了这种行为。基本上,spark将尝试将两个列转换为一个数字,然后执行减法。据我所知,字符串和布尔是唯一可以转换为数字的列。如果您尝试强制转换其他类型,它们将引发异常。请参见下面的示例:
输出:
如果有人试图从不能强制转换为整数的任意列中减去整数,您应该将错误返回到堆栈中的发送给您的人,因为查询无效。