类型转换
本文介绍 Tableau 中的类型转换函数及其用法。另外还演示了如何使用示例创建类型转换计算。
为什么使用类型转换函数
类型转换函数允许您将字段从一种数据类型转换为另一种数据类型(这称为“转换”)。例如,如果字符串数据类型的字段中有日期信息,则您将无法在日期计算中使用该字段,除非将该字段转换(更改)为日期数据类型。
例如,若要在 DATEDIFF 函数中使用字符串日期字段,您还需要使用日期类型转换:
DATEDIFF('day', [Date Field], DATE([String Date Field]) )
如果 DATE 函数不更改数据类型,您将收到错误消息“DATEDIFF is being called with (string, date, string)”。
提示:“数据”窗格中的字段具有默认数据类型。在许多情况下,您根本不需要使用类型转换函数。您可以通过单击图标来更改字段的数据类型。但是,在某些情况下,仅更改特定计算的数据类型可能很有用,否则 Tableau 可能无法将字段的内容正确转换为所需的数据类型(例如无法识别日期格式)。然后您需要使用如下列出的类型转换函数。
Tableau 中可用的类型转换函数
DATE
语法 | DATE(expression) |
输出 | 日期 |
定义 | 在给定数字、字符串或日期表达式的情况下返回日期。 |
示例 | DATE([Employee Start Date]) DATE("September 22, 2018") DATE("9/22/2018") DATE(#2018-09-22 14:52#) |
说明 | 与 DATEPARSE(链接在新窗口中打开) 不同,不需要提供模式,因为 DATE 会自动识别许多标准日期格式。但是,如果 DATE 不能识别输入,请尝试使用 DATEPARSE 并指定格式。 MAKEDATE(链接在新窗口中打开) 是另一个类似的函数,但是 MAKEDATE 要求输入年、月和日的数值。 |
DATETIME
语法 | DATETIME(expression) |
输出 | 日期时间 |
定义 | 在给定数字、字符串或日期表达式的情况下返回日期时间。 |
示例 | DATETIME("April 15, 2005 07:59:00") = April 15, 2005 07:59:00 |
FLOAT
语法 | FLOAT(expression) |
输出 | 浮点数(小数) |
定义 | 将其参数转换为浮点数。 |
示例 | FLOAT(3) = 3.000 |
说明 | 另请参见返回整数的 INT。 |
INT
语法 | INT(expression) |
输出 | 整数 |
定义 | 将其参数转换为整数。对于表达式,此函数将结果截断为最接近于 0 的整数。 |
示例 | INT(8/3) = 2 INT(-9.7) = -9 |
说明 | 字符串转换为整数时会先转换为浮点数,然后舍入。 另请参见返回小数的 FLOAT。 |
MAKEDATE
语法 | MAKEDATE(year, month, day) |
输出 | 日期 |
定义 | 返回一个依据指定数字年份、月份和日期构造的日期值。 |
示例 | MAKEDATE(1986,3,25) = #1986-03-25# 请注意,输入错误的值将被调整为一个日期,例如 MAKEDATE(2020,4,31) = May 1, 2020,而不是返回指出没有 4 月 31 日的错误。 |
说明 | 可用于 Tableau 数据提取。检查在其他数据源中的可用性。 MAKEDATE 要求为日期的各个部分输入数字。如果您的数据是应该是日期的字符串,请尝试 DATE 函数。DATE 可自动识别许多标准的日期格式。如果 DATE 不能识别输入,请尝试使用 DATEPARSE。 |
MAKEDATETIME
语法 | MAKEDATETIME(date, time) |
输出 | 日期时间 |
定义 | 返回合并了 date 和 time 的 datetime。日期可以是 date、datetime 或 string 类型。时间必须是 datetime。 |
示例 | MAKEDATETIME("1899-12-30", #07:59:00#) = #12/30/1899 7:59:00 AM# MAKEDATETIME([Date], [Time]) = #1/1/2001 6:00:00 AM# |
说明 | 此函数仅适用于与 MySQL 兼容的连接(对于 Tableau 为 MySQL 和 Amazon Aurora)。 MAKETIME 是一个类似的函数,可用于 Tableau 数据提取和其他一些数据源。 |
MAKELINE
语法 | MAKELINE(<Spatial Point1>,<Spatial Point2>) |
输出 | 几何空间对象(线) |
定义 | 在两点之间生成线标记。 |
示例 | MAKELINE(OriginPoint, DestinationPoint) MAKELINE( MAKEPOINT(OriginLat],[OriginLong]) , MAKEPOINT([DestinationLat],[DestinationLong] ) |
说明 | 对于构建起点-目的地地图或使用 MAKEPOINT 将纬度和经度转换为空间对象非常有用。 |
MAKEPOINT
语法 | MAKEPOINT(<latitude>, <longitude>) |
输出 | 几何空间对象(点) |
定义 | 将数据从纬度和经度列转换为空间对象。 |
示例 | MAKEPOINT([AirportLatitude],[AirportLongitude]) |
说明 | 您可以使用 MAKEPOINT 使数据源具备空间特性,以便可以使用空间联接将其与空间文件联接。有关详细信息,请参见在 Tableau 中联接空间文件。 若要使用 MAKEPOINT,您的数据必须包含纬度和经度坐标。 |
MAKETIME
语法 | MAKETIME(hour, minute, second) |
输出 | 日期时间。参见注释。 |
定义 | 返回一个依据指定小时、分钟和秒构造的日期值。 |
示例 | MAKETIME(14, 52, 40) = #1/1/1899 14:52:40# |
说明 | 由于 Tableau 不支持时间数据类型,只支持日期时间,因此输出是日期时间。字段的日期部分将是 1/1/1899。 类似于 MAKEDATETIME 的函数,只适用于 MYSQL 兼容的连接。 |
STR
语法 | STR(expression) |
输出 | 字符串 |
定义 | 将其参数转换为字符串。 |
示例 | STR([ID]) |
转换布尔表达式
可以将布尔值转换为整数、浮点数或字符串,但不能将其转换为日期。
True
映射到 1、1.0 或“1”False
映射到 0、0.0 或“0”Unknown
映射到Null
创建一个类型转换计算
请按照以下步骤学习如何创建一个类型转换计算。
- 在 Tableau Desktop 中,连接到 Tableau 附带的示例 - 超市已保存数据源。
- 导航到工作表。
- 选择“分析”>“创建计算字段”。
- 在打开的计算编辑器中,将“Postal Code”(邮政编码)字段从数字转换为字符串:
- 将计算字段命名为“Postal Code”(邮政编码)字符串。
- 输入以下公式:
STR([Postal Code])
- 完成后,单击“确定”。
新的计算字段将出现在“数据”窗格中的“维度”下。就像其他字段一样,您可以在一个或多个可视化项中使用该字段。
将此字段从数字转换为字符串可确保 Tableau 将其视为字符串而不是数字(因此不会对其进行聚合)。