我在Azure SQL服务器上有两个巨大的表,我试图将它们放入我的笔记本。第一个表是按日期过滤的,但要过滤第二个表,我需要找到第二个表的主键的最小值,并导入它。基本上,这就是我正在尝试的:
val date = "make_date(2023,06,01)"
val TableA= spark.read.synapsesql("sqlserver.dbo.table1")
.select("columnA"
,"columnB"
,"DateColumn")
.toDF()
.filter(expr("DateColumn>="+date))
.repartition(20)
.createOrReplaceTempView("TableA")
val min = spark.sql("""select min(columnA) as mincolA from TableA""".stripMargin)
val TableB = spark.read.synapsesql("sqlserver.dbo.tableB")
.select("columnA"
,"columnC")
.filter(expr("columnA >="+min))
这是给我以下错误时,试图过滤:
org.apache.spark.sql.catalyst.parser.ParseException:
===SQL===
columnA >= [min: bigint]
我该怎么解决这个问题?任何帮助是非常感谢!如果可以避免的话,我不想拉进十亿条记录
1条答案
按热度按时间3wabscal1#
在提供的代码中,
val min
的类型是Dataframe(不是日期)。对于get date,可以使用getAs[Date]
: