From 70739f59a12f9e9052d86a3c8208bc7de67a9f49 Mon Sep 17 00:00:00 2001 From: Joshua Wilson Date: Thu, 9 Apr 2026 14:54:55 -0500 Subject: [PATCH] fix(databricks-jdbc-driver): map ISODOW to DAYOFWEEK_ISO in extract template MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CubeSQL emits PostgreSQL-standard date parts like `isodow` for EXTRACT expressions. Spark SQL does not support `ISODOW` — the documented equivalent is `DAYOFWEEK_ISO` (Monday=1 through Sunday=7). This follows the same pattern used by BigqueryQuery, which already maps DOW → DAYOFWEEK and DOY → DAYOFYEAR. See: https://docs.databricks.com/en/sql/language-manual/functions/extract.html Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/cubejs-databricks-jdbc-driver/src/DatabricksQuery.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cubejs-databricks-jdbc-driver/src/DatabricksQuery.ts b/packages/cubejs-databricks-jdbc-driver/src/DatabricksQuery.ts index ac08b4328d099..fa4a9c60c526d 100644 --- a/packages/cubejs-databricks-jdbc-driver/src/DatabricksQuery.ts +++ b/packages/cubejs-databricks-jdbc-driver/src/DatabricksQuery.ts @@ -178,7 +178,7 @@ export class DatabricksQuery extends BaseQuery { templates.functions.GREATEST = 'GREATEST({{ args_concat }})'; templates.functions.TRUNC = 'CASE WHEN ({{ args[0] }}) >= 0 THEN FLOOR({{ args_concat }}) ELSE CEIL({{ args_concat }}) END'; templates.expressions.timestamp_literal = 'from_utc_timestamp(\'{{ value }}\', \'UTC\')'; - templates.expressions.extract = '{% if date_part|lower == "epoch" %}unix_timestamp({{ expr }}){% else %}EXTRACT({{ date_part }} FROM {{ expr }}){% endif %}'; + templates.expressions.extract = '{% if date_part|lower == "epoch" %}unix_timestamp({{ expr }}){% elif date_part|lower == "isodow" %}EXTRACT(DAYOFWEEK_ISO FROM {{ expr }}){% else %}EXTRACT({{ date_part }} FROM {{ expr }}){% endif %}'; templates.expressions.interval_single_date_part = 'INTERVAL \'{{ num }}\' {{ date_part }}'; templates.quotes.identifiers = '`'; templates.quotes.escape = '``';