【问题标题】:Set Datefirst in read.jdbc SparkR在 read.jdbc SparkR 中设置 Datefirst
【发布时间】:2019-12-01 19:44:26
【问题描述】:

我正在使用SparkRread.jdbc 函数从Databricks 查询Azure-SQL-database

向数据库发送查询没有问题,但是,我想使用 SET DATEFIRST 7; 将星期的开始时间设置为星期日,但我找不到这样做的方法。

我已经阅读了question 的答案,我可以使用其中的一些作为解决方法。但是,我想知道是否有办法从Databricks 设置DATEFIRST(我不介意使用pythonScala 来做到这一点)。

我的代码如下:

query <- "SET DATEFIRST 7;
(SELECT
DATEPART(yyyy,[calday])  * 100 + DATEPART(WEEK,[calday])  as calyearweek
FROM [dbo].[table]) out"

table <-
  read.jdbc(
    url = jdbcUrl,
    database = jdbcDatabase ,
    tableName = query,
    user = user,
    password = password
  )

如果我删除SET DATEFIRST 7;,我会得到查询结果。 如果我保留它,我会收到以下错误:

jdbc 中的错误:com.microsoft.sqlserver.jdbc.SQLServerException: 关键字“SET”附近的语法不正确

【问题讨论】:

标签: r azure-sql-database databricks sparkr


【解决方案1】:

7 是 SQL Azure 中的默认值,您可以使用 @@DATEFIRST 函数确认。您不必将 DATEFIRST 设置为 7。

SELECT @@DATEFIRST;

如果您需要为 DATEFIRST 设置不同的值,请尝试从存储过程内部进行设置。

【讨论】:

  • 我想知道是否有办法从 Databricks 中设置 DATEFIRST,因为我必须组合不同的值(并不总是 7)。我相信我包含的链接中解释了这种方法,使代码在长期内更具可持续性,但是,我想知道是否可以从 Databricks 设置 DATEFIRST 以在开发时进行测试。
  • 从存储过程中运行语句。
猜你喜欢
  • 2012-09-11
  • 2023-03-11
  • 1970-01-01
  • 2019-07-16
  • 1970-01-01
  • 1970-01-01
  • 2018-11-21
  • 1970-01-01
  • 2015-12-24
相关资源
最近更新 更多