code: def test_window_function_expr(
      default_expr_renderer: DefaultSqlExpressionRenderer,
  ) -> None:  # noqa: D
      actual = default_expr_renderer.render_sql_expr(
          SqlWindowFunctionExpression(
              sql_function=SqlWindowFunction.FIRST_VALUE,
              sql_function_args=[
                  SqlColumnReferenceExpression(
                      SqlColumnReference("a", "col0")
                  )
              ],
              partition_by_args=[
                  SqlColumnReferenceExpression(
                      SqlColumnReference("b", "col0")
                  ),
                  SqlColumnReferenceExpression(
                      SqlColumnReference("b", "col1")
                  ),
              ],
              order_by_args=[
                  SqlWindowOrderByArgument(
                      expr=SqlColumnReferenceExpression(
                          SqlColumnReference("a", "col0")
                      ),
                      descending=True,
                      nulls_last=False,
                  ),
                  SqlWindowOrderByArgument(
                      expr=SqlColumnReferenceExpression(
                          SqlColumnReference("b", "col0")
                      ),
                      descending=False,
                      nulls_last=True,
                  ),
              ],
          )
      ).sql
      assert (
          actual
          == "first_value(a.col0) OVER (PARTITION BY b.col0, b.col1 ORDER BY a.col0 DESC NULLS FIRST, b.col0 ASC NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)"
      )
  
imports: from __future__ import annotations
  import logging
  import textwrap
  import pytest
  from dbt_semantic_interfaces.type_enums.date_part import DatePart
  from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity
  from metricflow.sql.render.expr_renderer import DefaultSqlExpressionRenderer
  from metricflow.sql.sql_exprs import SqlAggregateFunctionExpression, SqlBetweenExpression, SqlCastToTimestampExpression, SqlColumnReference, SqlColumnReferenceExpression, SqlColumnReplacements, SqlComparison, SqlComparisonExpression, SqlDateTruncExpression, SqlExtractExpression, SqlFunction, SqlIsNullExpression, SqlLogicalExpression, SqlLogicalOperator, SqlNullExpression, SqlRatioComputationExpression, SqlStringExpression, SqlStringLiteralExpression, SqlWindowFunction, SqlWindowFunctionExpression, SqlWindowOrderByArgument
label_desc: Use image node_id 19 for calling a global function with example usage: test_window_function_expr(default_expr_renderer) without return types