---
schema_version: "1"
id: d2e0a2299a375135cbea749c058a6dd2ad3284a061b53e7802acd36458d97034
title: 将一个字段拆分为多个字段
collection: tableau
version: next
locale: zh-cn
portal_url: https://docs.salesforce.com/tableau/next/zh-cn/pro/desktop/split.md
canonical_url: https://help.tableau.com/v0.0/pro/desktop/zh-cn/split.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 0e62e60596bbad9a92ede243c1c5054cd0ba625455460b4910f421d74111af85
description: Split a string field into multiple fields in Tableau.
---
[跳转到主要内容](#main-content)

# 将一个字段拆分为多个字段

如果数据中有包含多个不同信息单元的字符串字段（例如，客户的名字和姓氏），您也许能够将该字段中的值拆分为多个单独的字段。

![一个字段拆分成两列。](/tableau/next/zh-cn/pro/desktop/zh-cn/Img/split.png)

您可以使用 Tableau Desktop 中的拆分选项，基于分隔符或每一行中存在的重复值模式来分隔值。在客户姓名的示例中，常见的分隔符是名字和姓氏之间的空格（“ ”）。

## 找到拆分选项

Tableau Desktop（但不是浏览器中的 Web 编辑）有一个用于自动或自定义拆分的菜单选项。这些拆分基于 SPLIT 字符串函数，也可以在计算中手动使用，以完全控制拆分。

并非所有数据源都支持 SPLIT。通过检查“拆分”和“自定义拆分”菜单选项，您可以判断您的数据是否支持 [SPLIT 函数](https://help.tableau.com/current/pro/desktop/zh-cn/functions_functions_string.htm#SPLIT)：

- 在“数据源”页面上，检查“拆分”和“自定义拆分”菜单。
    
    ![带有“拆分”选项的字段上下文菜单。](/tableau/next/zh-cn/pro/desktop/zh-cn/Img/split_split_command.png)
- 从工作表中的“数据”窗格中，检查菜单以查找“转换”\>“拆分”和“自定义拆分”。
    
    ![数据窗格中字段的右键菜单，显示嵌套在转换选项下的拆分和自定义拆分](/tableau/next/zh-cn/pro/desktop/zh-cn/Img/split_data_pane.jpg)

### 在 Web 上拆分

Web 制作不支持通过菜单拆分。若要在浏览器中工作时拆分数据，您可以手动创建 SPLIT 计算。请参见[从菜单拆分的替代方法](#Alternat)。

## 拆分字段

可基于 Tableau 在字段中检测到的常用分隔符自动拆分字符串字段。您也可以手动定义拆分

根据连接类型，拆分可将字段的值自动分隔为最多十个新字段。

### 自动拆分字段

在**“数据源”页面**上的网格中，单击字段名称旁边的下拉列表，选择“拆分”。

在“数据”窗格中，右键单击要拆分的字段，然后选择“变换”\>“拆分”。

拆分结果是标准计算字段，可以像任何其他计算字段一样进行编辑或删除。拆分生成的新字段的数据类型可能因 Tableau 检测到的模式组合而异。

### 使用自定义拆分拆分字段

使用自定义拆分选项可以更好地控制拆分。您可以指定分隔符，并选择在分隔符出现的前 N 个位置、最后 N 个位置或所有位置拆分值。

在**“数据源”页面**上的网格中，单击字段名称旁边的下拉箭头。选择“自定义拆分”。

**通过“数据”空格**，在“数据”窗格中，右键单击要拆分的字段，然后选择“变换”\>“自定义拆分”。

自定义拆分生成的新字段的数据类型始终会生成字符串数据类型。

**注意：**在某些情况下，如果自动拆分在生成新字段时花费的时间太长，或 Tableau 找不到常用分隔符，则会显示自定义拆分对话框。

当分隔符的数量因值而异时，自定义拆分很有用。在这些情况下不能使用自动拆分。

例如，假设字段“Employee”（员工）具有以下值：

- jsmith| accounting | north
- dnguyen | humanresources
- lscott | recruiting| west
- karnold |recruiting |west

自定义拆分可以配置为按管道字符（“|”）拆分，并拆分所有列。对于没有区域的值，该行的第三个结果字段将为 null。

![使用管道字符作为分隔符的“自定义拆分”对话框和拆分所有列的选项](/tableau/next/zh-cn/pro/desktop/zh-cn/Img/split_custom.jpg)

### 从菜单拆分的替代方法

**使用 SPLIT 功能手动拆分**

SPLIT 函数的工作方式类似于自定义拆分，但每次计算仅返回一个结果字段。您定义分隔符并通过提供令牌编号指定要返回的值。

例如，若要将客户姓名称拆分为名字和姓氏，请创建两个计算字段：

- 名字：`SPLIT([Customer Name], " ", 1)`
- 姓氏：`SPLIT([Customer Name], " ", 2)`

员工信息示例（例如“jsmith| accounting | north”）将使用三个计算字段：

- 用户名：`SPLIT([Employee Info], |, 1)`
- 部分：`SPLIT([Employee Info], |, 2)`
- 区域：`SPLIT([Employee Info], |, 3)`

有关详细信息，请参见 [SPLIT 函数](https://help.tableau.com/current/pro/desktop/zh-cn/functions_functions_string.htm#SPLIT)。

**使用 LEFT 和 RIGHT 函数手动拆分**

如果您的用例更多的是提取字符串的特定部分而不是基于分隔符拆分它，则可以使用 LEFT 和 RIGHT 函数。这些函数根据指定的字符数仅返回字符串的一部分。

举例来说，如果一行的值为 IGW8892：

<table class="table--plain" style="width: 100%;"><colgroup><col><col></colgroup><tbody><tr><td style="font-weight: bold;">计算</td><td style="font-weight: bold;">结果</td></tr><tr><td><code>RIGHT([Value], 4)</code></td><td>8892</td></tr><tr><td><code>LEFT([Value], 4)</code></td><td>IGW8</td></tr><tr><td><code>LEFT(RIGHT([Value], 2) , 1)</code></td><td>9</td></tr></tbody></table>

有关详细信息，请参见[字符串函数](https://help.tableau.com/v0.0/pro/desktop/zh-cn/functions_functions_string.htm)中的“LEFT”和“RIGHT”。

**对包含混合分隔符的字段使用正则表达式**

如果分隔符类型不同，则无法自动拆分字段。例如，假设某个字段包含以下值：

- smith.accounting
- dnguyen-humanresources
- lscott\_recruiting
- karnold\_recruiting

在这种情况下，请考虑使用正则表达式来提取所需的信息。有关详细信息，请参见[其他函数（正则表达式、Hadoop Hive、Google Big Query）](https://help.tableau.com/v0.0/pro/desktop/zh-cn/functions_functions_additional.htm)。

## 使用拆分和自定义拆分

使用拆分和自定义拆分时要记住的事项。

- 新字段不能用作键来联接表，但可用于混合数据源。
- 新字段不能用于转置。
- 集、组、参数和数据桶不支持拆分和自定义拆分选项。
- Microsoft SQL Server 只允许有最多四个拆分字段。
- 若要生成超过十个新字段，请考虑多次拆分。您可以在第一次拆分后仍包含多条信息的字段上再次使用拆分。

## 拆分和自定义拆分疑难解答

使用拆分和自定义拆分时可能会遇到的已知问题：

- **拆分和自定义拆分选项对于支持的数据源类型缺失：**拆分和自定义拆分选项只可用于字符串数据类型的字段。
- **Null 值：**创建拆分或自定义拆分后，新字段可能包含空值或完全不包含值。如果预期的新字段都没有值，则会出现 Null 值或空单元格。
- **数据已移除：** Tableau 可能使用字段值的部分作为分隔符。如果使用字段值的一部分作为分隔符，那些值将不再出现在新字段中。
    
    例如：

<table style="width: 100%;"><colgroup><col><col></colgroup><tbody><tr><td style="font-weight: bold;">原始值</td><td style="font-weight: bold;">拆分字段值</td></tr><tr><td>Zip-98102</td><td>98102</td></tr><tr><td>Zip-98109</td><td>98109</td></tr><tr><td>Zip-98119</td><td>98199</td></tr><tr><td>Zip-98195</td><td>98195</td></tr></tbody></table>

拆分不会为“Zip-”创建单独的字段，因为整个字符串用作分隔符。