我有一個場景,我需要連接多個表,並確定日期+另一個整數列是否大於另一個日期列。在卡桑德拉/火花查詢日期加/減
Select case when (manufacturedate + LeadTime < DueDate) then numericvalue ((DueDate - manufacturepdate) + 1) else PartSource.EffLeadTime)
有沒有辦法在spark sql中處理它?
感謝, 灰
我有一個場景,我需要連接多個表,並確定日期+另一個整數列是否大於另一個日期列。在卡桑德拉/火花查詢日期加/減
Select case when (manufacturedate + LeadTime < DueDate) then numericvalue ((DueDate - manufacturepdate) + 1) else PartSource.EffLeadTime)
有沒有辦法在spark sql中處理它?
感謝, 灰
假設你有你的數據的數據幀,您使用的斯卡拉和「另一個整數」表示天數,做到這一點的一種方法如下:
import org.apache.spark.sql.functions._
val numericvalue = 1
val column = when(
datediff(col("DueDate"), col("manufacturedate")) > col("LeadTime"), lit(numericvalue)
).otherwise(col("PartSource.EffLeadTime"))
val result = df.withColumn("newVal", column)
期望的值將在一個名爲「newVal」的新列中。
謝謝,是的,我使用scala和整數表示一些整數值,我們可以假設爲天數。我不是這個DataFrame,我只是使用普通查詢,我得到了以下錯誤, 由於數據類型不匹配而無法解析'(17038 + 5)':'(17038 + 5)'中的不同類型' (日期和整數) 我想,我會加入表格並將其設置爲DataFrame並應用您的建議。 – ashK
@ashK你如何運行這個查詢?通過sqlContext.sql?如果是這樣,你可以試試'datediff(DueDate,madeate)> LeadTime' –
我們使用NoSQL,並通過Cassandra上下文運行它。我可以在sqlContext中嘗試。 – ashK
我用sqlcontext試過,有一個date_add('date',integer)。 date_add()是配置單元功能,它也適用於cassandra上下文。
cc.sql("select date_add(current_date(),1) from table").show
感謝 Aravinth
你能解釋一下這個問題了。什麼時候_case when_不工作? – WoodChopper
這個整數代表了多少天?另外,它是Scala還是pyspark? –