自定义查询
自定义查询是一种使用您自己的自定义数据库查询从数据连接内的外部数据源中选择数据的方法。它是在点击式“选择数据”或“连接中的视图”对话框中选择表和列的一种替代方法。通过自定义查询,您可以运用自己的 SQL 查询方法,做出非常具体的数据选择。自定义查询的结果是一个数据库表,您可以像访问 Spotfire 中的数据表一样访问该表
本页面介绍以下内容
- 自定义查询中的参数
如果您希望查询可根据一个或多个变量的值检索不同的结果,您可以将查询设置为使用参数。例如,您可以将参数映射到文本区域中的某个属性控件。
在数据连接中添加自定义查询
在已安装的 Spotfire 客户端中,当您在“连接中的视图”对话框中选择数据后,可以向数据连接添加自定义查询。
开始之前
- 要添加和编辑自定义查询,必须使用已安装的 Spotfire 客户端。
- 并非所有数据连接器都支持使用自定义查询。
- 添加和编辑自定义查询需要“连接中的自定义查询”许可证。为了能够信任自定义查询,以便其他用户可以打开它们,您还必须是“自定义查询作者”用户组的成员。
- 您可以使用外部数据库的查询语言编写自定义查询。有关详细信息,请参见编写自定义查询。
过程
结果
编写自定义查询
编写自定义查询时,需要牢记一些要求、限制和常规指导。
编写自定义查询时,请使用外部数据源的语言编写查询。这意味着您编写查询的方式取决于您正连接的数据源的类型。例如,对于 Microsoft SQL Server 数据库,您可以使用 SQL 的 Microsoft SQL Server 方言编写自定义查询。
FROM
子句中的子查询,然后 Spotfire 再将最终查询发送给外部数据源。例如,下面是 Microsoft SQL Server 连接的自定义查询:SELECT Country,AVG(Sales) AS AvgCountrySales FROM "World Sales" GROUP BY Country
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 数据引擎中时,仅在导入或明确刷新数据时运行查询。
查询要求和限制
- 查询是使用外部数据库语言所编写的。例如,对于 Microsoft SQL Server 数据库,您可以使用 SQL 的 Microsoft SQL Server 方言编写自定义查询。有关如何为特定的数据源类型编写查询的具体信息,请务必参考该外部数据源的官方文档。功能、限制和语法规则视您正连接的数据源的类型而定。
- 必须能将自定义查询作为
FROM
子句中的子查询运行。有关更多信息,请查看外部数据源的官方文档。注:FROM
子句中的子查询有时称为派生表。 - 自定义查询必须由单个语句组成。您不能将多个语句串联在一起并用分号 ";" 隔开。
- 自定义查询不支持预存程序。
- 自定义查询不支持公用表表达式 (CTE),因为后者要求有
WITH
关键字。
数据类型
创建自定义查询时,仅包含 Spotfire 切实支持其数据类型的列。请参见您目前使用的连接器的说明文档,查看支持的数据类型列表。
如果查询中包含不受支持的列,则会在验证步骤中将其标记为无效,且您无法使用结果表。要解决此类问题,请重写查询以排除不受支持的列,或从结果表中删除这些列。您始终可以将任意数据类型指定给自定义查询列。然而,不保证此类自定义查询生成的 Spotfire 表能正常运行。
安全性 - 信任自定义查询
其他用户都不能运行您创建的自定义查询,除非满足以下两个条件:
- 您必须将自定义查询作为分析的一部分或作为数据连接的一部分保存到库中。
- 您必须是“自定义查询作者”组的成员,这是指您有权代表其他用户创建并信任自定义查询。
虽然仍然可以将您创建的自定义查询与另一个用户共享,但是该用户必须检查和信任此自定义查询。用户可以信任自定义查询,方法为:打开“自定义查询”对话框,检查自定义查询文本,然后单击“确定”。