我试图在pyspark中执行下面的sql语法。查询应该返回订阅的成功率(total subscription/total \u entries)。table_name=banking columns name:'y'(购买的订阅)包含'yes'和'no'作为数据值。
执行的查询:
spark.sql(“select(x.total\u subscribed/y.total\u entries)as success\u rate from(select count()as total\u subscribed from banking\u tbl where y='yes')x,(select count()as total\u entries from banking\u tbl)y”).show()
我使用两个内部子查询:
下面的第一个内部查询返回购买订阅的客户总数:
(选择count()作为从银行业认购的总金额,其中y='yes')x)
第二个查询返回表中的客户总数:
(选择count()作为“银行业务”的“总分录”)
以及外部查询获取订阅率:(购买订阅的总客户/总客户)
选择(x.total\u subscribed/y.total\u entries)作为成功率
但我得到一个错误如下:
使用交叉联接语法允许这些关系之间的笛卡尔乘积,或:通过设置配置变量spark.sql.crossjoin.enabled=true来启用隐式笛卡尔乘积
样本数据:+-------+
19条答案
按热度按时间rslzwgfq16#
--+--------+---------+-------+-------+-------+----+-------+---+-----+--------+--------+-----+--------+--------+---+
apeeds0o17#
--+
wz3gfoph18#
我认为使用条件聚合更简单:
axr492tv19#
--+