直通函数 (RAWSQL)
这些 RAWSQL 直通函数将 SQL 表达式直接发送到数据库,而不先由 Tableau 进行解析。如果您有 Tableau 不能识别的自定义数据库函数,则可以使用直通函数调用这些自定义函数。
因为 Tableau 不解释该表达式,所以您必须在必要时定义聚合。当您需要传递聚合表达式时,可以使用函数的 RAWSQLAGG 版本。
RAWSQL 直通函数可能不适用于联合数据源(跨不同数据库合并)或已发布数据源。
RAWSQL 语法
RAWSQL 函数有两种类型:解聚和聚合。这是在函数名称的第一部分中指定的:RAWSQL 或 RAWSQLAGG。函数名称的最后一部分是输出类型,例如 BOOL、STR 或 INT。在所有 RAWSQL 函数中,参数都为 "sql_expr", [arg1], ...[arg2]。编写函数时,可以使用替换语法 %n 插入正确的字段名称或表达式。
%n 替换语法
您的数据库通常不会理解在 Tableau 中显示的字段名称。因为 Tableau 不会解释直通函数中的 SQL 表达式,所以在表达式中使用 Tableau 字段名称可能会导致错误。使用 %n 将用于 Tableau 计算的正确字段名称或表达式插入直通 SQL。
例如,假设您有一个计算一组中值的函数,则可以对 Tableau 列 [Sales] 调用该函数,如下所示:
RAWSQLAGG_REAL("MEDIAN(%1)", [Sales])REALSQLAGG:因为您想要指定聚合。REAL:因为输出是数字,不一定是整数。MEDIAN是聚合。%1是[Sales]的占位符。
RAWSQL 函数
SQL 表达式直接传递给基础数据库。在 SQL 表达式中将 %n 用作数据库值的替换语法。
Tableau 中提供了以下 RAWSQL 函数:
RAWSQL_BOOL
| 语法 | RAWSQL_BOOL("sql_expr", [arg1], …[argN]) |
| 输出 | 布尔值 |
| 定义 | 从给定 SQL 表达式返回布尔结果。 |
| 示例 | RAWSQL_BOOL("%1 > %2", [Sales], [Profit])在示例中,%1 等于 [Sales],%2 等于 [Profit]。 |
RAWSQLAGG_BOOL
| 语法 | RAWSQLAGG_BOOL("sql_expr", [arg1], …[argN]) |
| 输出 | 布尔值 |
| 定义 | 从给定聚合 SQL 表达式返回布尔结果。 |
| 示例 | RAWSQLAGG_BOOL("SUM( %1) >SUM( %2)", [Sales], [Profit]) 在示例中,%1 等于 [Sales],%2 等于 [Profit]。 |
RAWSQL_DATE
| 语法 | RAWSQL_DATE("sql_expr", [arg1], …[argN]) |
| 输出 | 日期 |
| 定义 | 从给定 SQL 表达式返回日期结果。 |
| 示例 | RAWSQL_DATE("%1", [Order Date])在下例中,%1 等于 [Order Date]。 |
RAWSQLAGG_DATE
| 语法 | RAWSQLAGG_DATE("sql_expr", [arg1], …[argN]) |
| 输出 | 日期 |
| 定义 | 从给定聚合 SQL 表达式返回日期结果 |
| 示例 | RAWSQLAGG_DATE("MAX(%1)", [Order Date])在下例中,%1 等于 [Order Date]。 |
RAWSQL_DATETIME
| 语法 | RAWSQL_DATETIME("sql_expr", [arg1], …[argN]) |
| 输出 | 日期时间 |
| 定义 | 从给定 SQL 表达式返回日期时间结果。 |
| 示例 | RAWSQL_DATETIME("%1", [Order Date])在下例中,%1 等于 [Order Date]。 |
RAWSQLAGG_DATETIME
| 语法 | RAWSQLAGG_DATETIME("sql_expr", [arg1], …[argN]) |
| 输出 | 日期时间 |
| 定义 | 从给定聚合 SQL 表达式返回日期时间结果。 |
| 示例 | RAWSQLAGG_DATETIME("MIN(%1)", [Order Date])在下例中,%1 等于 [Order Date]。 |
RAWSQL_INT
| 语法 | RAWSQL_INT("sql_expr", [arg1], …[argN]) |
| 输出 | 整数 |
| 定义 | 从给定 SQL 表达式返回整数结果。 |
| 示例 | RAWSQL_INT("500 + %1", [Sales])在下例中,%1 等于 [Sales]。 |
RAWSQLAGG_INT
| 语法 | RAWSQLAGG_INT("sql_expr", [arg1,] …[argN]) |
| 输出 | 整数 |
| 定义 | 从给定聚合 SQL 表达式返回整数结果。 |
| 示例 | RAWSQLAGG_INT("500 + SUM(%1)", [Sales])在下例中,%1 等于 [Sales]。 |
RAWSQL_REAL
| 语法 | RAWSQL_REAL("sql_expr", [arg1], …[argN]) |
| 输出 | 数字 |
| 定义 | 从给定 SQL 表达式返回数字结果。 |
| 示例 | RAWSQL_REAL("-123.98 * %1", [Sales])在下例中,%1 等于 [Sales] |
RAWSQLAGG_REAL
| 语法 | RAWSQLAGG_REAL("sql_expr", [arg1,] …[argN]) |
| 输出 | 数字 |
| 定义 | 从给定聚合 SQL 表达式返回数字结果。 |
| 示例 | RAWSQLAGG_REAL("SUM( %1)", [Sales])在下例中,%1 等于 [Sales]。 |
RAWSQL_SPATIAL
| 语法 | RAWSQL_SPATIAL("sql_expr", [arg1], …[argN]) |
| 输出 | 空间 |
| 定义 | 从给定 SQL 表达式返回空间结果。 |
| 示例 | RAWSQL_SPATIAL("%1", [Geometry])在本例中,%1 等于 [Geometry]。 |
| 注意 | 此函数没有 RAWSQLAGG 版本。 |
RAWSQL_STR
| 语法 | RAWSQL_STR("sql_expr", [arg1], …[argN]) |
| 输出 | 字符串 |
| 定义 | 从给定 SQL 表达式返回字符串。 |
| 示例 | RAWSQL_STR("%1", [Customer Name])在下例中,%1 等于 [Customer Name]。 |
RAWSQLAGG_STR
| 语法 | RAWSQLAGG_STR("sql_expr", [arg1,] …[argN]) |
| 输出 | 字符串 |
| 定义 | 从给定聚合 SQL 表达式返回字符串。 |
| 示例 | RAWSQLAGG_STR("AVG(%1)", [Discount])在此示例中,%1 等于 [Discount]。 |
