提示 - AWS Clean Rooms

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

提示

SQL 分析提示提供了用于指导查询执行策略的优化指令 AWS Clean Rooms,使您能够提高查询性能并降低计算成本。提示建议 Spark 分析引擎应如何生成其执行计划。

语法

SELECT /*+ hint_name(parameters), hint_name(parameters) */ column_list FROM table_name;

提示使用注释式语法嵌入到 SQL 查询中,必须直接放在 SELECT 关键字之后。

支持的提示类型

AWS Clean Rooms 支持两类提示:联接提示和分区提示。

组合多个提示

你可以在单个查询中指定多个提示,方法是用逗号分隔它们:

-- Combine join and partitioning hints SELECT /*+ BROADCAST(d), REPARTITION(8) */ e.name, d.dept_name FROM employees e JOIN departments d ON e.dept_id = d.id; -- Multiple join hints SELECT /*+ BROADCAST(s), MERGE(d) */ * FROM employees e JOIN students s ON e.id = s.id JOIN departments d ON e.dept_id = d.id; -- Hints within separate hint blocks within the same query SELECT /*+ REPARTITION(100) */ /*+ COALESCE(500) */ /*+ REPARTITION_BY_RANGE(3, c) */ * FROM t;

注意事项和限制

  • 提示是优化建议,而不是命令。查询优化器可能会根据资源限制或执行条件忽略提示。

  • CreateAnalysisTemplate 和的提示都直接嵌入在 SQL 查询字符串中 StartProtectedQuery APIs。

  • 提示必须直接放在 SELECT 关键字之后。

  • 命名参数不支持带有提示,并且会引发异常。

  • REPARTITION 和 REPARTITION_BY_RANGE 提示中的列名必须存在于输入架构中。

  • REBALANCE 提示中的列名必须出现在 SELECT 输出列表中。

  • 数字参数必须是介于 1 和 2147483647 之间的正整数。不支持像 1e1 这样的科学记法

  • 差异隐私 SQL 查询中不支持提示。

  • PySpark 作业中不支持 SQL 查询的提示。要为 PySpark 任务中的执行计划提供指令,请使用数据框 API。有关更多信息,请参阅 Apache Spark DataFrame API 文档