编写和运行查询 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

编写和运行查询

您可以在编辑器中输入查询,也可以从 Queries(查询)中列出并选择 Run(运行)以选择已保存的查询。

默认情况下,设置 Limit 100(限制 100),将结果限制为 100 行。您可以禁用此选项来返回较大的结果集。禁用此选项时,如要避免非常大型结果集,则可以在 SQL 语句中包含 LIMIT 选项。有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 ORDER BY 子句

要在结果区域中显示查询计划,请打开 Explase(解释)。

选择 Save(保存),将查询保存到 Queries(查询)文件夹。

查询成功,将显示成功消息。如果查询返回信息,则结果将显示在 Results(结果)部分。如果结果数超过显示区域,则数字将显示在结果区域的顶部。您可以选择数字来显示连续的结果页面。

您可以筛选和排序每一列的 Result(结果)。如要在结果列标题中输入筛选条件,请将鼠标悬停在该列上以查看惨淡( 
                    Filter menu
                ),您可以在其中输入筛选列的条件。

如果查询包含错误,则查询编辑器 v2 将在结果区域中显示错误消息。此消息提供有关如何更正查询的信息。

您可以将当前页面上的查询结果导出为 JSON 或逗号分隔值(CSV)格式的文件。如要以任何一种格式保存文件,请打开结果区域中的上下文(右键单击)菜单,然后选择 Export current page(导出当前页面)或者 JSONCSV。您还可以选择行并导出特定行的结果。

如要添加新的查询选项卡,选择 
                    New query tab
                选项卡,该选项卡随查询选项卡一起出现在行中。

运行查询

  1. 在查询区域中,执行以下任一操作:

    • 输入查询。

    • 粘贴您复制的查询。

    • 选择 Queries(查询)文件夹中,打开上下文菜单(右键单击)中的保存查询,然后选择 Open query(打开查询)。

  2. 确认您为计划运行的 SQL 选择了正确的 Cluster(集群)和Database(数据库)值。

    通过在树状图中选择另一集群来更改您的 Cluster(集群)值。通过在界面中选择其它 Database(数据库)来更改您的数据库。

  3. 选择 Run(运行)。

    将打开 Result(结果)区域并显示查询结果。

显示查询的解释计划

  1. 选择查询。

  2. 启用 Explase(解释)。

    默认情况下,Explain graph(解释图)也将启动。

  3. 选择 Run(运行)。

    运行查询,并在查询的 Result(结果)区域中显示解释计划。

查询编辑器 v2 支持以下功能。

  • 您可以在一个查询选项卡中使用多个 SQL 语句创作查询。这些查询以连续方式运行,并为每个查询打开多个结果选项卡。

  • 您可以通过打开查询选项卡、选择数据库、运行查询来并行运行查询。在该查询运行时,您可以选择不同的数据库(如果需要的话还可以选择不同的集群),然后运行另一个查询。

  • 您可以使用会话变量和临时表创作查询。

  • 您可以使用由 ${parameter} 指定的可替换参数创作查询。您可以使用多个可替换参数创作 SQL 查询,并在 SQL 语句的多个位置使用相同的参数。

    当查询运行时,会显示一个窗口,用来输入参数的值。每次运行查询时,都会显示窗口以输入参数值。

    有关示例,请参阅示例:销售额大于特定参数

  • 自动对查询进行版本控制。您可以选择要运行的查询的早期版本。

  • 在继续工作流程之前,您无需等待查询完成。即使关闭查询编辑器,查询仍会继续运行。

  • 创作查询时,支持使用快捷方式自动完成架构、表和列名称。

    选择 
                            Shortcuts
                        Shortcuts(快捷方式)图标来查找 Auto complete(自动完成)快捷方式。

以下示例演示了其中的一些功能。

查询示例

在下方您可以找到可以运行的各种查询类型的描述。

这些查询中使用的数据来自 tickit 示例架构。有关 tickit 数据的更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的示例数据库

运行这些示例查询时,请确认在编辑器中选择了正确的数据库,例如 sample_data_dev

示例:设置会话变量

以下命令将 search_path 服务器配置参数设置为会话的 public(公有)参数。有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 SETsearch_path

set search_path to public;

示例:按总销售额排列的顶事件

以下查询查找销售额最多的事件。

select eventname, count(salesid) totalorders, sum(pricepaid) totalsales from sales, event where sales.eventid=event.eventid group by eventname order by 3;

以下是结果的部分清单。

eventname totalorders totalsales White Christmas 20 9352 Joshua Radin 38 23469 Beach Boys 58 30383 Linda Ronstadt 56 35043 Rascal Flatts 76 38214 Billy Idol 67 40101 Stephenie Meyer 72 41509 Indigo Girls 57 45399 ...

示例:销售额大于特定参数

以下查询查找销售数量大于 ${numberoforders} 指定参数的销售额。当参数值为 7 时,结果是 60 行。运行查询时,查询编辑器 v2 会显示 Run query form(运行查询表)窗口来收集 SQL 语句中参数值。

select salesid, qtysold from sales where qtysold > ${numberoforders} order by 2;

以下是结果的部分清单。

salesid qtysold 20005 8 21279 8 130232 8 42737 8 74681 8 67103 8 105533 8 91620 8 121552 8 ...

示例:创建一个临时表

通过 sales(销售)和 event(事件)表,以下语句创建临时表 eventsalestemp

create temporary table eventsalestemp as select eventname, count(salesid) totalorders, sum(pricepaid) totalsales from sales, event where sales.eventid=event.eventid group by eventname;

示例:从临时表中选择

按总订单排序,以下语句从临时表 eventsalestemp 中选择事件、订单总数和总销售额。

select eventname, totalorders, totalsales from eventsalestemp order by 2;

以下是部分结果列表。

eventname totalorders totalsales White Christmas 20 9352 Joshua Radin 38 23469 Martina McBride 50 52932 Linda Ronstadt 56 35043 Indigo Girls 57 45399 Beach Boys 58 30383 ...

查询注意事项

请考虑下列有关使用查询编辑器时处理查询的事项:

  • 最大查询结果大小为 5MB 或 100,000 行中的较小者。

  • 您只能将结果的当前页面或选定的结果行导出为 JSON 或 CSV 文件。

  • 您可以运行最长为 300,000 个字符的查询。

  • 您可以保存最长为 30,000 个字符的查询。

  • 不能在查询编辑器中使用事务。有关事务的更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 BEGIN