Spotfire® 用户指南

从信息链接生成的 SQL 的示例

该部分包括使用信息链接时对数据库生成的 SQL 查询的外观,以及查询与 Information Designer 中的元素之间关系的示例。

示例:来自筛选器的 SQL

在此示例中,我们定义具有筛选器的列元素。该列应只返回金额超过 10000 的销售事务:
列元素的 SQL 筛选器的屏幕截图

使用名称“高销售额”保留该列元素。

上述定义的列元素作为信息链接的一部分执行时,将产生以下 SQL:

SELECT
   S1."Sales" AS "HIGHSALES"
FROM
   "Sales"."dbo"."SalesandCost" S1
WHERE
   (S1."Sales" > 10000)
   AND <conditions>

示例:GROUP BY

在此示例中,我们使用聚合计算我们公司在一些产品上的平均利润,以找出最好的产品。

我们假定数据库提供了列来包含每次事务中购买者向我们提供的价格(销售额)以及我们公司在当时为原始材料支付的金额(成本)。我们还拥有一个列来包含在每次事务中销售的产品类型(类型)。

定义称为“平均利润”的列元素,如下所示:

还必须定义列元素类型来返回用于对查询分组的产品类型。

如果我们使用这三个列定义信息链接,则会生成以下 SQL。(请注意 GROUP BY 子句。)

SELECT
   tmp1."AVERAGEPROFIT",
   E1."TYPE" AS "TYPE"
FROM
   "Sales"."dbo"."SalesandCost" S1
      SELECT
         AVG(E1."Sales" - E1."Cost") AS "AVERAGEPROFIT",
         E1."TYPE" AS col1
      FROM
        "Sales"."dbo"."SalesandCost" S1
      GROUP BY
         E1."TYPE"
   ) tmp1
WHERE
   (E1."TYPE" = tmp1.col1)
   AND <conditions>

示例:子查询

Information Designer 支持子查询(内部 SQL)在本示例中,我们演示如何检索大于平均值的所有销售事:
“子查询”对话框

我们通过以下筛选表达式创建一个新列“高销售额事务”

%1 > (Select avg(Sales) from Sales.dbo.SalesandCost)
注: 包含所有括号,否则表达式无法起作用。

当作为信息链接的一部分执行时,以上定义的列元素将产生以下 SQL(请注意,WHERE 子句包含筛选器条件中的子查询):

SELECT
   S1."Sales" AS "HIGHSALESTRANSACTIONS"
FROM
   "Sales"."dbo"."SalesandCost" S1
WHERE
   (S1."Sales" >(
      Select
         avg(Sales)
      from
         Sales.dbo.SalesandCost
   ))
   AND <conditions>