class_docstr: Expression renderer for the BigQuery engine.
class_docstr_tok: ["Expression","renderer","for","the","BigQuery","engine","."]
docstr: Renders extract expressions with required output conversions for BigQuery.
  
  BigQuery does not have native support for the ISO standard day of week output of 1 (Monday) - 7 (Sunday).
  Instead, BigQuery returns 1 (Sunday) - 7 (Monday). Therefore, we need custom rendering logic to normalize
  the return values to the ISO standard.
docstr_tok: ["Renders","extract","expressions","with","required","output","conversions","for","BigQuery",".","BigQuery","does","not","have","native","support","for","the","ISO","standard","day","of","week","output","of","1","(","Monday",")","-","7","(","Sunday",")",".","Instead",",","BigQuery","returns","1","(","Sunday",")","-","7","(","Monday",")",".","Therefore",",","we","need","custom","rendering","logic","to","normalize","the","return","values","to","the","ISO","standard","."]
code: def visit_extract_expr(
      self, node: SqlExtractExpression
  ) -> SqlExpressionRenderResult:
      """Renders extract expressions with required output conversions for BigQuery.
  
      BigQuery does not have native support for the ISO standard day of week output of 1 (Monday) - 7 (Sunday).
      Instead, BigQuery returns 1 (Sunday) - 7 (Monday). Therefore, we need custom rendering logic to normalize
      the return values to the ISO standard.
      """
      extract_rendering_result = super().visit_extract_expr(node)
  
      if node.date_part is not DatePart.DOW:
          return extract_rendering_result
  
      extract_stmt = extract_rendering_result.sql
      case_expr = f"IF({extract_stmt} = 1, 7, {extract_stmt} - 1)"
  
      return SqlExpressionRenderResult(
          sql=case_expr,
          bind_parameters=extract_rendering_result.bind_parameters,
      )
  
imports: from __future__ import annotations
  from fractions import Fraction
  from typing import Collection
  from dbt_semantic_interfaces.enum_extension import assert_values_exhausted
  from dbt_semantic_interfaces.type_enums.date_part import DatePart
  from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity
  from typing_extensions import override
  from metricflow.errors.errors import UnsupportedEngineFeatureError
  from metricflow.sql.render.expr_renderer import DefaultSqlExpressionRenderer, SqlExpressionRenderer, SqlExpressionRenderResult
  from metricflow.sql.render.sql_plan_renderer import DefaultSqlQueryPlanRenderer
  from metricflow.sql.sql_bind_parameters import SqlBindParameters
  from metricflow.sql.sql_exprs import SqlCastToTimestampExpression, SqlDateTruncExpression, SqlExtractExpression, SqlGenerateUuidExpression, SqlPercentileExpression, SqlPercentileFunctionType, SqlSubtractTimeIntervalExpression
  from metricflow.sql.sql_plan import SqlSelectColumn
label_desc: Use image node_id 9 for calling the BigQuerySqlExpressionRenderer obj's underlying member method code with example usage: obj.visit_extract_expr(node) and returns: SqlExpressionRenderResult, extract_rendering_result