【问题标题】:Databricks Spark SQL subquery based query throws TreeNodeException基于 Databricks Spark SQL 子查询的查询抛出 TreeNodeException
【发布时间】:2020-07-29 10:37:14
【问题描述】:

我在 databricks 笔记本中运行一个非常简单的查询,其中涉及一个子查询。

select recorddate, count(*) 
from( select record_date as recorddate, column1 
      from table1 
      where record_date >= date_sub(current_date(), 1) 
    )t
group by recorddate
order by recorddate

我得到以下异常: SQL 语句错误:package.TreeNodeException:绑定属性,树:recorddate

当删除 order by 子句时,查询运行良好。我看到一些帖子谈论类似的问题,但完全相同。这是一种已知的行为吗?有什么解决方法/解决方法吗?

【问题讨论】:

  • 在子查询中我看到别名列,record_date as date
  • 这是一个用存根替换实际表名和列名的错字。现在修好了。
  • 你可以试试不给列加别名吗?

标签: apache-spark apache-spark-sql azure-databricks


【解决方案1】:

对我来说效果很好,(spark = 2.4.5)我认为问题有所不同-

 val df = spark.sql("select current_date() as record_date, '1' column1")
    df.show(false)
    /**
      * +-----------+-------+
      * |record_date|column1|
      * +-----------+-------+
      * |2020-07-29 |1      |
      * +-----------+-------+
      */
    
    df.createOrReplaceTempView("table1")
    spark.sql(
      """
        |select recorddate, count(*)
        |from( select record_date as recorddate, column1
        |      from table1
        |      where record_date >= date_sub(current_date(), 1)
        |    )t
        |group by recorddate
        |order by recorddate
        |
      """.stripMargin)
      .show(false)

    /**
      * +----------+--------+
      * |recorddate|count(1)|
      * +----------+--------+
      * |2020-07-29|1       |
      * +----------+--------+
      */

【讨论】:

  • 我在 databricks 笔记本中使用直接 SQL 查询执行此操作。唔。这可能是数据块的特定问题。不确定。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-27
  • 2013-01-27
  • 2017-01-25
  • 1970-01-01
  • 1970-01-01
  • 2012-12-20
  • 2022-12-11
相关资源
最近更新 更多