pyspark sql子查询不支持

pw9qyyiw  于 2021-07-09  发布在  Spark
关注(0)|答案(19)|浏览(508)

我试图在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来启用隐式笛卡尔乘积
样本数据:+-------+

z9gpfhce

z9gpfhce4#

实际上,您的查询格式不正确spark.sql(''select subscription\u count/total\u count as success\u rate from(select(select count()from banking\u tbl)as total\u count,(select count()from banking\u tbl where subscription='y')as subscription\u count)'')。show()它是如何执行的请检查输出链接https://knowledges.co.in/q-a/

zpf6vheq

zpf6vheq8#

--+--------+---------+-------+-------+-------+----+-------+---+-----+--------+--------+-----+--------+--------+---+| 58 |管理|已婚|大专|否| 2143 |是|否|未知| 5 |五月| 261 | 1 | 0 |未知|否| 44 |技师|单身|中学|否| 29 |是|否|未知| 5 |五月| 151 | 1 | 0 |未知|否| 33|创业企业家已婚|已婚|已婚|第二|第二|第二|创业者,已婚|第二|第二|第二|第二|第二|无无| 2 124;是124;是未知|未知|未知124 |未知| 5 | 5 | 5 | 5 | 5 | 5 |可能| 5 | 5 | 5 | 5未知|否|否|否|未知| 5 |可能| 198 | 1 |-1 | 0 |未知|否| 35 |管理|已婚|大专|否| 231 |是|否|未知| 5|5 |可能| 139 | 5 | 5 | 5 | 5 | 5 | 5 | 5 124 | 5 124 124 124 |-1 | 0 |未知|否| 58 |退休|已婚|初级|否| 121 |是|否|未知| 5 |五月| 50 | 1 |-1 | 0 |未知|否| 43 |技师|单身|次要|否| 593 |是|否|未知| 5 |可能| 55 | 1 | 0 |未知|否| 41 |管理|离婚|中学|否| 270 |是|否|未知| 5 |可能| 222 | 1 | 0 |未知|否| 29 |管理|单身|中学|中学|中学|中学|中学|中学|中学|中学|无|否|无|无|无| 390 124;是124;否124;未知124 124 124 124 124 124 124;5 124;5 |可能否| 71 |是|否|未知| 5 |可能| 71 | 1 | 0 |未知|否| 57 |服务|已婚|次要|否| 162 |是|否|未知| 5 |可能| 174 1|-1 | 0 |未知|否|+---+

jk9hmnmh

jk9hmnmh12#

--+--年龄|工作|婚姻|教育|违约|余额|住房|贷款|联系|日|月|持续时间|活动| pdays |前| poutcome | y |+---+

相关问题