class_docstr: Renders the SQL query plan assuming ANSI SQL.
class_docstr_tok: ["Renders","the","SQL","query","plan","assuming","ANSI","SQL","."]
docstr: Render a function call like CONCAT(a, b).
docstr_tok: ["Render","a","function","call","like","CONCAT","(","a",",","b",")","."]
code: def visit_function_expr(
      self, node: SqlAggregateFunctionExpression
  ) -> SqlExpressionRenderResult:  # noqa: D
      """Render a function call like CONCAT(a, b)."""
      args_rendered = [
          self.render_sql_expr(x) for x in node.sql_function_args
      ]
      combined_params = SqlBindParameters()
      for arg_rendered in args_rendered:
          combined_params = combined_params.combine(
              arg_rendered.bind_parameters
          )
  
      distinct_prefix = (
          "DISTINCT "
          if SqlFunction.is_distinct_aggregation(node.sql_function)
          else ""
      )
      args_string = ", ".join([x.sql for x in args_rendered])
  
      return SqlExpressionRenderResult(
          sql=f"{node.sql_function.value}({distinct_prefix}{args_string})",
          bind_parameters=combined_params,
      )
  
imports: from __future__ import annotations
  import logging
  import textwrap
  from abc import ABC, abstractmethod
  from collections import namedtuple
  from dataclasses import dataclass
  from typing import Collection, List
  import jinja2
  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.sql.sql_bind_parameters import SqlBindParameters
  from metricflow.sql.sql_exprs import SqlAggregateFunctionExpression, SqlBetweenExpression, SqlCastToTimestampExpression, SqlColumnAliasReferenceExpression, SqlColumnReferenceExpression, SqlComparisonExpression, SqlDateTruncExpression, SqlExpressionNode, SqlExpressionNodeVisitor, SqlExtractExpression, SqlFunction, SqlGenerateUuidExpression, SqlIsNullExpression, SqlLogicalExpression, SqlNullExpression, SqlPercentileExpression, SqlPercentileFunctionType, SqlRatioComputationExpression, SqlStringExpression, SqlStringLiteralExpression, SqlSubtractTimeIntervalExpression, SqlWindowFunctionExpression
  from metricflow.sql.sql_plan import SqlSelectColumn
label_desc: Use image node_id 8 for calling the DefaultSqlExpressionRenderer obj's underlying member method code with example usage: obj.visit_function_expr(node) and returns: SqlExpressionRenderResult