使用 sql 的 Databricks Windows 组

Posted

技术标签:

【中文标题】使用 sql 的 Databricks Windows 组【英文标题】:Databricks windows group by using sql 【发布时间】:2021-02-02 04:24:42 【问题描述】:

我无法找到如何将 pyspark 窗口语句转换为等效的 SQL 格式。

例子:

  eventsDF \
    .groupBy(
      "deviceId",
      window("eventTime", "10 minutes", "5 minutes")) \
    .count()

应该是这样的:

   select window, deviceId, count(deviceId)
   from events
   group by window eventTime 10 minutes 5 minutes, deviceId

【问题讨论】:

我不确定 SQL 是否可以按照您提到的语法处理 group by。你现在的情况是什么?您是否收到任何错误或结果不同或...? 都是语法错误 【参考方案1】:

您需要修复一些语法错误。 window 应该用括号括起来。

select
    window(eventTime, '10 minutes', '5 minutes'),
    deviceId,
    count(deviceId)
from events
group by
    window(eventTime, '10 minutes', '5 minutes'),
    deviceId

【讨论】:

谢谢@mck,你知道有没有关于window 语法的文档吗?貌似官方文档不完整:spark.apache.org/docs/latest/api/sql/#window @Emer 查看 pyspark 文档:spark.apache.org/docs/3.0.2/api/python/…【参考方案2】:

我认为以下查询的结果是您所期望的:

select deviceId, count(deviceId)
from events
group by `eventTime`, `10 minutes`,  `5 minutes`, `deviceId`

group by 将在您期望的所有窗口上对行进行分组

【讨论】:

以上是关于使用 sql 的 Databricks Windows 组的主要内容,如果未能解决你的问题,请参考以下文章

R中databricks中的SQL雪花查询

使用 sql 的 Databricks Windows 组

使用 Pyspark 将 SQL 查询从 DataBricks 发送到 SQL Server [重复]

使用带有 python 公式的 Databricks 数据框创建一个新的计算字段写回 sql 表

spark sql如何在databricks中创建表

如何从 Databricks 中的 SQL 语句输出创建变量