TIBCO Cloud™ Spotfire® Web 客户端用户指南

自定义查询

自定义查询是一种使用您自己的自定义数据库查询从数据连接内的外部数据源中选择数据的方法。它是在点击式“选择数据”“连接中的视图”对话框中选择表和列的一种替代方法。通过自定义查询,您可以运用自己的 SQL 查询方法,做出非常具体的数据选择。自定义查询的结果是一个数据库表,您可以像访问 Spotfire 中的数据表一样访问该表

本页面介绍以下内容

在数据连接中添加自定义查询

在已安装的 Spotfire 客户端中,当您在“连接中的视图”对话框中选择数据后,可以向数据连接添加自定义查询。

开始之前

为了能够在数据连接中添加和编辑自定义查询,请注意以下要求:
  • 要添加和编辑自定义查询,必须使用已安装的 Spotfire 客户端。
  • 并非所有数据连接器都支持使用自定义查询。
  • 添加和编辑自定义查询需要“连接中的自定义查询”许可证。为了能够信任自定义查询,以便其他用户可以打开它们,您还必须是“自定义查询作者”用户组的成员。
  • 您可以使用外部数据库的查询语言编写自定义查询。有关详细信息,请参见编写自定义查询

过程

  1. 创建新的数据连接(“文件和数据” >“连接至”),或编辑分析或库中的现有数据连接。
  2. “连接中的视图”对话框中,选择“自定义查询”>“新建自定义查询”

  1. 在“自定义查询”对话框中,输入“查询名称”
  2. “查询”字段中,键入您的数据库查询。
  3. 完成查询后,单击“验证”以测试查询并获取“结果列” 如果在查询中有错误,则会显示有关错误的信息。修复错误,然后再次运行“验证”,确保所有问题均得到解决。
  4. 浏览结果列,确保列出所需的所有结果列,并确保它们具有正确的数据类型。
    提示: 编辑结果列

    即使您的查询选择了更多列,最终数据表中也仅包含“结果列”列表中的列。您可以使用“删除”按钮从查询中去除不需要的列,无需更改查询。您还可以使用“上移”“下移”按钮更改各列的顺序。

    列的名称和数据类型必须与来自外部数据源的名称和数据类型匹配。要更改生成的自定义查询表中的列的名称,请在完成创建自定义查询后在“连接中的视图”对话框中更改。

  5. 要完成自定义查询并将其添加到数据连接,请单击“确定”

结果

基于自定义查询的自定义表将添加到“连接中的视图”对话框的“连接中的视图”列表中。您可以像使用其他表一样使用自定义表。例如,您可以将其与具有结构关系的其他表组合起来,并且可以导入数据或将数据保留为外部数据库中数据。

编写自定义查询

编写自定义查询时,需要牢记一些要求、限制和常规指导。

编写自定义查询时,请使用外部数据源的语言编写查询。这意味着您编写查询的方式取决于您正连接的数据源的类型。例如,对于 Microsoft SQL Server 数据库,您可以使用 SQL 的 Microsoft SQL Server 方言编写自定义查询。

使用自定义查询访问外部数据源中的数据时,您的自定义查询将包装为最终查询的 FROM 子句中的子查询,然后 Spotfire 再将最终查询发送给外部数据源。例如,下面是 Microsoft SQL Server 连接的自定义查询:
SELECT Country,AVG(Sales) AS AvgCountrySales FROM "World Sales" GROUP BY Country
如果您将从本次自定义查询中得到的视图作为数据表导入 Spotfire,则 Spotfire 将向外部数据源发送以下查询。注意原始自定义查询是如何作为 SELECT 语句的 FROM 子句中的子查询被包含在语句中的:
SELECT [SpotfireCustomQuery1].[Country] AS [Country], [SpotfireCustomQuery1].[AvgCountrySales] AS [AvgCountrySales] FROM (SELECT Country,AVG(Sales) AS AvgCountrySales FROM "World Sales" GROUP BY Country) AS [SpotfireCustomQuery1]
提示: 要检查 Spotfire 发送到外部数据源的查询,可以启用日志记录并查看连接器查询日志。

每次从 Spotfire 执行常规查询时都会评估自定义查询。如果对数据库中(外部)数据表使用自定义查询,则每次更新图表或筛选器时都会运行自定义查询。对于内存中(已导入)数据表,也就是当数据加载到 Spotfire 数据引擎中时,仅在导入或明确刷新数据时运行查询。

查询要求和限制

  • 查询是使用外部数据库语言所编写的。例如,对于 Microsoft SQL Server 数据库,您可以使用 SQL 的 Microsoft SQL Server 方言编写自定义查询。有关如何为特定的数据源类型编写查询的具体信息,请务必参考该外部数据源的官方文档。功能、限制和语法规则视您正连接的数据源的类型而定。
  • 必须能将自定义查询作为 FROM 子句中的子查询运行。有关更多信息,请查看外部数据源的官方文档。
    注: FROM 子句中的子查询有时称为派生表。
  • 自定义查询必须由单个语句组成。您不能将多个语句串联在一起并用分号 ";" 隔开。
  • 自定义查询不支持预存程序。
  • 自定义查询不支持公用表表达式 (CTE),因为后者要求有 WITH 关键字。

数据类型

创建自定义查询时,仅包含 Spotfire 切实支持其数据类型的列。请参见您目前使用的连接器的说明文档,查看支持的数据类型列表。

如果查询中包含不受支持的列,则会在验证步骤中将其标记为无效,且您无法使用结果表。要解决此类问题,请重写查询以排除不受支持的列,或从结果表中删除这些列。您始终可以将任意数据类型指定给自定义查询列。然而,不保证此类自定义查询生成的 Spotfire 表能正常运行。

安全性 - 信任自定义查询

其他用户都不能运行您创建的自定义查询,除非满足以下两个条件:

  • 您必须将自定义查询作为分析的一部分或作为数据连接的一部分保存到库中。
  • 您必须是“自定义查询作者”组的成员,这是指您有权代表其他用户创建并信任自定义查询。

虽然仍然可以将您创建的自定义查询与另一个用户共享,但是该用户必须检查和信任此自定义查询。用户可以信任自定义查询,方法为:打开“自定义查询”对话框,检查自定义查询文本,然后单击“确定”。