class_docstr: Stores clauses in a SQL query that should be rewritten when a node is reduced.
docstr: Returns true if any of the clauses have ambiguous expressions that will be difficult to re-write.
code: def contains_ambiguous_exprs(self) -> bool:
      """Returns true if any of the clauses have ambiguous expressions that will be difficult to re-write."""
      return any(
          [
              x.expr.lineage.contains_ambiguous_exprs
              for x in self.select_columns
          ]
          + [x.lineage.contains_ambiguous_exprs for x in self.wheres]
          + [
              x.expr.lineage.contains_ambiguous_exprs
              for x in self.group_bys
          ]
          + [
              x.expr.lineage.contains_ambiguous_exprs
              for x in self.order_bys
          ]
      )
  
imports: from __future__ import annotations
  import logging
  from dataclasses import dataclass
  from typing import List, Optional, Sequence, Tuple
  from metricflow.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer
  from metricflow.sql.sql_exprs import SqlColumnAliasReferenceExpression, SqlColumnReference, SqlColumnReplacements, SqlExpressionNode, SqlExpressionTreeLineage, SqlLogicalExpression, SqlLogicalOperator
  from metricflow.sql.sql_plan import SqlJoinDescription, SqlOrderByDescription, SqlQueryPlanNode, SqlQueryPlanNodeVisitor, SqlSelectColumn, SqlSelectQueryFromClauseNode, SqlSelectStatementNode, SqlTableFromClauseNode
label_desc: Use image node_id 3 for calling the RewritableSqlClauses obj's underlying member method code with example usage: obj.contains_ambiguous_exprs() and returns: any