Skip to content

fix(bigquery): transpile DayOfWeek to EXTRACT(DAYOFWEEK FROM ...) - #8772

Open
ansh-rohilla wants to merge 1 commit into
tobymao:mainfrom
ansh-rohilla:fix/bigquery-dayofweek-8767
Open

ansh-rohilla wants to merge 1 commit into
tobymao:mainfrom
ansh-rohilla:fix/bigquery-dayofweek-8767

Conversation

@ansh-rohilla

Copy link
Copy Markdown
Contributor

Fixes #8767

Transpiling DAYOFWEEK from MySQL, Spark, DuckDB or Snowflake to BigQuery previously produced DAY_OF_WEEK(...), which BigQuery does not have.

MySQL DAYOFWEEK, Spark dayofweek, and BigQuery EXTRACT(DAYOFWEEK FROM ...) all represent day-of-week with Sunday=1 to Saturday=7 semantics. This adds exp.DayOfWeek: _extract_part("DAYOFWEEK") to BigQueryGenerator.TRANSFORMS alongside the existing DayOfMonth, DayOfYear, and WeekOfYear mappings.

Example

import sqlglot

sqlglot.transpile("SELECT DAYOFWEEK(d)", read="mysql", write="bigquery")
# ['SELECT EXTRACT(DAYOFWEEK FROM CAST(d AS DATE))']

sqlglot.transpile("SELECT DAYOFWEEK(d)", read="spark", write="bigquery")
# ['SELECT EXTRACT(DAYOFWEEK FROM CAST(d AS DATE))']

sqlglot.transpile("SELECT DAYOFWEEK(d)", read="duckdb", write="bigquery")
# ['SELECT EXTRACT(DAYOFWEEK FROM d)']

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BigQuery: DAYOFWEEK from MySQL/Spark is generated as DAY_OF_WEEK, which BigQuery does not have

1 participant