---
schema_version: "1"
id: b4c97fd6175522761e733670b2c3ac08a28cc414c7d496399343e6cf52960c27
title: 直通函数 (RAWSQL)
collection: tableau
version: next
locale: zh-cn
portal_url: https://docs.salesforce.com/tableau/next/zh-cn/public/desktop/functions_functions_passthrough.md
canonical_url: https://help.tableau.com/v0.0/public/desktop/zh-cn/functions_functions_passthrough.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 78ffac9ee79010978df2d8ffc8add1f9e0677b565141f4762364c22877f6a115
description: Reference for RAWSQL pass-through functions that send SQL directly to the database.
---
[跳转到主要内容](#main-content)

# 直通函数 (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

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>RAWSQL_BOOL("sql_expr", [arg1], …[argN])</code></td></tr><tr><td>输出</td><td>布尔值</td></tr><tr><td>定义</td><td>从给定 SQL 表达式返回布尔结果。</td></tr><tr><td>示例</td><td><pre xml:space="preserve">RAWSQL_BOOL("%1 &gt; %2", [Sales], [Profit])</pre><p>在示例中，%1 等于 [Sales]，%2 等于 [Profit]。</p></td></tr></tbody></table>

### RAWSQLAGG\_BOOL

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>RAWSQLAGG_BOOL("sql_expr", [arg1], …[argN])</code></td></tr><tr><td>输出</td><td>布尔值</td></tr><tr><td>定义</td><td>从给定聚合 SQL 表达式返回布尔结果。</td></tr><tr><td>示例</td><td><pre xml:space="preserve">RAWSQLAGG_BOOL("SUM( %1) &gt;SUM( %2)", [Sales], [Profit]) </pre><p>在示例中，%1 等于 [Sales]，%2 等于 [Profit]。</p></td></tr></tbody></table>

### RAWSQL\_DATE

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>RAWSQL_DATE("sql_expr", [arg1], …[argN])</code></td></tr><tr><td>输出</td><td>日期</td></tr><tr><td>定义</td><td>从给定 SQL 表达式返回日期结果。</td></tr><tr><td>示例</td><td><pre xml:space="preserve">RAWSQL_DATE("%1", [Order Date])</pre><p>在下例中，%1 等于 [Order Date]。</p></td></tr></tbody></table>

### RAWSQLAGG\_DATE

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>RAWSQLAGG_DATE("sql_expr", [arg1], …[argN])</code></td></tr><tr><td>输出</td><td>日期</td></tr><tr><td>定义</td><td>从给定聚合 SQL 表达式返回日期结果</td></tr><tr><td>示例</td><td><pre xml:space="preserve">RAWSQLAGG_DATE("MAX(%1)", [Order Date])</pre><p>在下例中，%1 等于 [Order Date]。</p></td></tr></tbody></table>

### RAWSQL\_DATETIME

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>RAWSQL_DATETIME("sql_expr", [arg1], …[argN])</code></td></tr><tr><td>输出</td><td>日期时间</td></tr><tr><td>定义</td><td>从给定 SQL 表达式返回日期时间结果。</td></tr><tr><td>示例</td><td><pre xml:space="preserve">RAWSQL_DATETIME("%1", [Order Date])</pre><p>在下例中，%1 等于 [Order Date]。</p></td></tr></tbody></table>

### RAWSQLAGG\_DATETIME

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>RAWSQLAGG_DATETIME("sql_expr", [arg1], …[argN])</code></td></tr><tr><td>输出</td><td>日期时间</td></tr><tr><td>定义</td><td>从给定聚合 SQL 表达式返回日期时间结果。</td></tr><tr><td>示例</td><td><pre xml:space="preserve">RAWSQLAGG_DATETIME("MIN(%1)", [Order Date])</pre><p>在下例中，%1 等于 [Order Date]。</p></td></tr></tbody></table>

### RAWSQL\_INT

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>RAWSQL_INT("sql_expr", [arg1], …[argN])</code></td></tr><tr><td>输出</td><td>整数</td></tr><tr><td>定义</td><td>从给定 SQL 表达式返回整数结果。</td></tr><tr><td>示例</td><td><pre xml:space="preserve">RAWSQL_INT("500 + %1", [Sales])</pre><p>在下例中，%1 等于 [Sales]。</p></td></tr></tbody></table>

### RAWSQLAGG\_INT

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>RAWSQLAGG_INT("sql_expr", [arg1,] …[argN])</code></td></tr><tr><td>输出</td><td>整数</td></tr><tr><td>定义</td><td>从给定聚合 SQL 表达式返回整数结果。</td></tr><tr><td>示例</td><td><pre xml:space="preserve">RAWSQLAGG_INT("500 + SUM(%1)", [Sales])</pre><p>在下例中，%1 等于 [Sales]。</p></td></tr></tbody></table>

### RAWSQL\_REAL

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>RAWSQL_REAL("sql_expr", [arg1], …[argN])</code></td></tr><tr><td>输出</td><td>数字</td></tr><tr><td>定义</td><td>从给定 SQL 表达式返回数字结果。</td></tr><tr><td>示例</td><td><pre>RAWSQL_REAL("-123.98 * %1", [Sales])</pre><p>在下例中，%1 等于 [Sales]</p></td></tr></tbody></table>

### RAWSQLAGG\_REAL

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>RAWSQLAGG_REAL("sql_expr", [arg1,] …[argN])</code></td></tr><tr><td>输出</td><td>数字</td></tr><tr><td>定义</td><td>从给定聚合 SQL 表达式返回数字结果。</td></tr><tr><td>示例</td><td><pre xml:space="preserve">RAWSQLAGG_REAL("SUM( %1)", [Sales])</pre><p>在下例中，%1 等于 [Sales]。</p></td></tr></tbody></table>

### RAWSQL\_SPATIAL

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>RAWSQL_SPATIAL("sql_expr", [arg1], …[argN])</code></td></tr><tr><td>输出</td><td>空间</td></tr><tr><td>定义</td><td>从给定 SQL 表达式返回空间结果。</td></tr><tr><td>示例</td><td><pre xml:space="preserve">RAWSQL_SPATIAL("%1", [Geometry])</pre><p>在本例中，%1 等于 [Geometry]。</p></td></tr><tr><td>注意</td><td>此函数没有 <code>RAWSQLAGG</code> 版本。</td></tr></tbody></table>

### RAWSQL\_STR

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>RAWSQL_STR("sql_expr", [arg1], …[argN])</code></td></tr><tr><td>输出</td><td>字符串</td></tr><tr><td>定义</td><td>从给定 SQL 表达式返回字符串。</td></tr><tr><td>示例</td><td><pre xml:space="preserve">RAWSQL_STR("%1", [Customer Name])</pre><p>在下例中，%1 等于 [Customer Name]。</p></td></tr></tbody></table>

### RAWSQLAGG\_STR

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>RAWSQLAGG_STR("sql_expr", [arg1,] …[argN])</code></td></tr><tr><td>输出</td><td>字符串</td></tr><tr><td>定义</td><td>从给定聚合 SQL 表达式返回字符串。</td></tr><tr><td>示例</td><td><pre xml:space="preserve">RAWSQLAGG_STR("AVG(%1)", [Discount])</pre><p>在此示例中，%1 等于 [Discount]。</p></td></tr></tbody></table>