读取SQL QUERY并将其转换为Azure Databricks/Spark python



我使用的是azure databricks,我有以下sql查询,我想将其转换为spark python代码:

SELECT DISTINCT 
personID,
SUM(quantity) as total_shipped
FROM(
SELECT  p.personID,
p.systemID,
s.quantity
FROM shipped s
LEFT JOIN ordered p
on (s.OrderId = p.OrderNumber OR
substr(s.OrderId,1,6) = p.OrderNumber )
and p.ndcnum = s.ndc
where s.Dateshipped <= "2022-04-07"
AND personID is not null
group by personID

我打算先合并spark数据帧,然后执行聚合和。然而,我认为我正在使它变得比实际情况更复杂。到目前为止,这就是我所拥有的,但我得到了InvalidSyntax错误:

ordered.join(shipped, ((ordered("OrderId").or(ordered.select(substring(ordered.OrderId, 1, 6)))) === ordered("ORDERNUMBER")) &&
(ordered("ndcnumber") === ordered("ndc")),"left")
.show()

我感到困惑的是SQL查询中的OR语句,如何将其转换为spark-python语句?

使用数据块很有美感。您可以通过调用spark.sql(""" {your sql query here} """)直接使用相同的代码,仍然会得到相同的结果。您可以将它分配给一个变量,这样您就有了一个数据帧。

相关内容

  • 没有找到相关文章

最新更新