当前位置: 首页 > 知识库问答 >
问题:

databricks“date\u trunc”函数如何在后端运行?

裴昊阳
2023-03-14

我希望在Databricks中看到date\u trunc函数的源代码。pyspark源代码没有回答我的问题。基本上,我想知道核心发生了什么;e、 g.它是否运行regexp模式/方法,还是有自己的算法?

有人能帮忙吗?非常感谢。

共有1个答案

尤飞尘
2023-03-14

Spark代码实际上是JVM代码,尽管您可以从Python使用它,并且可以在GitHub上获得:https://github.com/apache/spark

我相信您要查找的代码在https://github.com/apache/spark/blob/b6aea1a8d99b3d99e91f7f195b23169d3d61b6a7/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/DateTimeUtils.scala#L971

def truncTimestamp(micros: Long, level: Int, zoneId: ZoneId): Long = {
    // Time zone offsets have a maximum precision of seconds (see `java.time.ZoneOffset`). Hence
    // truncation to microsecond, millisecond, and second can be done
    // without using time zone information. This results in a performance improvement.
    level match {
      case TRUNC_TO_MICROSECOND => micros
      case TRUNC_TO_MILLISECOND =>
        micros - Math.floorMod(micros, MICROS_PER_MILLIS)
      case TRUNC_TO_SECOND =>
        micros - Math.floorMod(micros, MICROS_PER_SECOND)
      case TRUNC_TO_MINUTE => truncToUnit(micros, zoneId, ChronoUnit.MINUTES)
      case TRUNC_TO_HOUR => truncToUnit(micros, zoneId, ChronoUnit.HOURS)
      case TRUNC_TO_DAY => truncToUnit(micros, zoneId, ChronoUnit.DAYS)
      case _ => // Try to truncate date levels
        val dDays = microsToDays(micros, zoneId)
        daysToMicros(truncDate(dDays, level), zoneId)
    }
  }
 类似资料:
  • 问题内容: 我正在一个有几个无法更改的脚本的项目中。这些脚本通过AJAX更新页面。更新完成后,我需要运行一些代码。 XMLHttpRequest完成时是否会触发任何事件?(或任何XMLHttpRequest状态更改?)。 不幸的是,我无法访问用于发出请求的特定XMLHttpRequest对象。 谢谢, 问题答案: 如果没有jQuery,则可以挂钩该方法以在XHR对象被编辑时为每个XHR对象的事件附

  • 问题内容: 我想在页面加载时运行一个函数,但是我不想在标记中使用它。 我有一个脚本,如果在中将其初始化,它将运行,如下所示: 但是我想在没有的情况下运行它,并且我尝试了很多事情,例如: 但这是行不通的。 那么如何在页面加载后运行它? 问题答案: 应该可以工作这是一个demo,以及完整的代码:

  • 我有一个函数/GUI问题。我正在编码一个轻函数,它开始一个例程,并检查时间是否在上午8点和一些停止时间之间。这个例程从早上8点开始,在那个任意的时间结束。问题是,一旦我点击这个例程的开始,图形用户界面就不会让我带着开始按钮离开窗口,因为它卡在定时例程里面了。我真的希望能够设置计时器在后台运行,然后能够离开图形用户界面的窗口。看起来线程是做到这一点的关键,但我不确定。 我将GUI代码放在一个单独的文

  • 我正在做一个关于类Date的javascript评估,这里是评估:“编写nextWeek(Date)函数的主体,该函数在输入中给定的日期之后7天返回一个日期”Date总是一个定义的Date对象。 所以我写了下面的代码: null null 结果是: “2021-04-25T15:02:16.234Z” “2021-05-01T22:00:00.000Z” 对我来说,这是正确的,因为“2021-04

  • 上述方法工作良好,但有一个警告 我想知道,有没有一种简单明了的方法可以直接调用bash函数,因为它是正常的二进制函数,而不需要包装?也许像是

  • 查询是: 输出为: 有人能解释一下输出是怎么来的吗?