将字段转换为日期字段
每种数据库存储日期字段的方式都略有不同。Tableau 会尽力对日期字段进行解读,但有时导入 Tableau 的字段将会是文本字符串或数字字段。如果发生这种情况,我们可以通过几个步骤来解决问题。
验证日期字段
日期字段可能显示为字符串
| 或在“数据”窗格中显示为字符串
|
当日期被解读为字符串时,您在使用日期字段时所能享受到的功能和便捷性(例如下钻、使用日期计算以及在连续和离散度量之间切换)将荡然无存。
如果日期解读不正确,请按顺序执行以下步骤:
更改字段的数据类型
解决日期字段解读问题的第一步是确保数据类型设置为“日期”或“日期和时间”。
在“数据源”或“数据”窗格中,单击数据类型图标,并将数据类型更改为“日期”或“日期和时间”
检查视图或“数据源”窗格中的数据。如果看到许多 Null 值,请将数据类型恢复为“字符串”,并继续使用 DATEPARSE 函数创建计算来纠正问题。
使用 DATEPARSE 函数创建计算
日期采用一系列近乎无限的格式存储。某些日期字段将年放在月之前,其他一些日期字段用句点分隔日期的各个部分,还有一些则使用各种格式的组合。当 Tableau 无法解读日期字段时,原因可能是无法转换特定格式。
DATEPARSE 函数使您能够清晰地定义字段的哪些部分对应于日期的哪些部分。本质上,您是在创建一个 Tableau 可用于将字符串转换为日期字段的映射。这种映射称为格式。
注意:此函数可通过以下连接器获得:非旧版 Excel 和文本文件连接、Amazon EMR Hadoop Hive、Cloudera Hadoop、Google Sheets、Hortonworks Hadoop Hive、MapR Hadoop Hive、MySQL、Oracle、PostgreSQL 以及 Tableau 数据提取。有些格式可能并非适用于所有连接。
注意:Hive 变体不支持 DATEPARSE。仅支持 Denodo、Drill 和 Snowflake。
创建 DATEPARSE 计算
检查日期字段的当前格式。记下月、年、小时和天在字段中的显示位置。DATEPARSE 函数需要此信息。
A:月中的天
B:月
C:年
D:小时、分钟、秒、毫秒、期间
在“维度”窗格中右键单击日期字段,并选择“创建”>“计算字段”。
在对话框中,编写 DATEPARSE 函数。DATEPARSE 函数包含两个部分:格式和字符串。字符串是您希望转换的字段,其必须为字符串数据类型。
A:格式
B:字符串
格式是 Tableau 用于将字符串解读为日期的指引。日期或时间字符串的每个部分都有一个匹配符号,如下表中所示。格式必须完全复制日期的显示方式。举例来说,如果在字符串包含 2 位数年份代码(“97”)时使用单一年份代码(“Y”),则计算可能返回 null 值。
注意:格式要完全复制显示的字符串的例外情况是,日期的长格式部分(“September”)可使用四个符号设置格式(“September" = "MMMM”)。
格式必须包括所有空格、连字符和其他非字母数字符号才能正确解读字符串。
日期字段符号
日期部分 符号 示例字符串 示例格式 年 y 97、2017 yy、y 或 yyyy “年中的周”的年份 Y 1997 Y 时区 Z、z -0800、PST-08:00、PST Z、ZZZZ、zzz 月 M 9、09、Sep、September M、MM、MMM、MMMM 年中的周 (1-52) w 8、27 w、ww 年中的季度 Q Q2、第二季度 QQQ、QQQQ 周中的天 E 周一、星期一 EEE、EEEE 月中的天 d 1、15 d、dd 年中的天 (1-365) D 23、143 D、DD、DDD 期间(am/pm 标记) a AM、am、PM aa、aaaa 小时 (1-12),小时 (0-23) h、H 1、10、16 h、hh、HH 分钟 m 8、59 m、mm 一分钟中的秒 s 5、05 s、ss 小数秒 S 2、23、235、2350 S、SS、SSS、SSSS 天中的毫秒 A 34532 AAAAA 有关日期符号的更完整列表,请参见“Unicode 国际化组件”页面的日期和时间格式设置概述(链接在新窗口中打开)。
注意: 并非所有数据库和文件类型都支持某些日期格式。
依据 Tableau 中显示的字符串检查您的格式。如果符号和格式设置正确无误,请选择“确定”创建新计算字段。计算字段将充当视图中的日期字段。
Hyper 数据提取
对于 .hyper 数据提取数据源,符号是由 Unicode 协会定义的。有关详细信息,请转到 数据提取数据源 DATEPARSE 函数的格式语法,查看可与 .hyper 数据提取中的 DATEPARSE 函数结合使用的字段类型和符号子集。
区域设置注意事项
DATEPARSE 函数依赖于计算机设置指定的区域设置来进行解释,然后显示要转换的字符串。更具体地说,区域设置将影响特定格式是否可识别。这意味着如果区域设置不支持某种格式,那么您可能会看到 Null 值或者不会返回值。例如,假设数据中有以下字符串:
12Sep2016:9:8:8.6546
根据区域设置,DATEPARSE 函数为此字符串返回的值也有所不同。在英语区域设置中,您将获取一个特定值,但对于日语区域设置,您将不会获取任何值。在这种情况下,不返回值的原因是日语区域设置无法识别“Sep”。
日期和时间值
英语区域设置 | 日语区域设置 |
---|---|
#9/12/2016 9:08:09 AM# | - |
如同所有日期一样,在您使用了 DATEPARSE 函数将字符串转换为日期时间类型后,默认情况下 Tableau 将以您的区域设置的默认格式显示日期时间值。如果区域设置发生变化,则 DATEPARSE 函数的结果可能会以不同的格式显示新的日期时间值。
注意: 由于 Jet 限制的缘故,在根据 Access 数据源创建的数据提取中,DATEPARSE 函数无法正确识别您的计算机设置指定的区域设置信息。若要解决此问题,请考虑将 Access 数据导出到 Excel 中。
使用 DATE 函数创建一个计算
如果 DATEPARSE 函数不适用于您正在处理的数据,或者您要转换的字段是数字数据类型,则可以改用 DATE 函数。
DATE 函数会将数字、字符串或日期表达式转换为日期类型。创建一个使用 DATE 函数的计算时,Tableau 会在 Tableau 数据源中创建一个新字段,该字段允许您与作为日期的日期数据进行交互。若要使用 DATE 函数利用数字、字符串或日期表达式成功生成日期值,Tableau 需要能够将字符串的组件解释为日期部分。识别日期的组件后,Tableau 会使用计算机区域设置确定日期的默认格式。
例如,假设您正在使用的表包含一个称为“原始日期”的日期数据列。“原始日期”列是字符串类型。
原始日期 |
---|
03Jan2017 |
05Jan2017 |
07Mar2017 |
19Mar2017 |
30Apr2017 |
在此情况下,您可以创建一个称为“新日期”的计算字段,该字段使用 DATE 函数中的表达式将“原始日期”字段中的字符串值转换为日期值。
对于此示例,日期表达式由用于确定日组件的 LEFT 函数、用于确定月组件的 MID 函数以及用于确定年组件的 RIGHT 函数组成。
DATE (LEFT([Original Date], 2) + "/" + MID([Original Date],3,3) + "/" + RIGHT([Original Date],4))
“新日期”计算会生成以下列:
新日期 |
---|
1/3/2017 |
1/5/2017 |
3/7/2017 |
3/19/2017 |
4/30/2017 |
在此示例中,新日期值基于英语区域设置和默认格式。
另请参见
使用 ISO-8601 周和年份设置日期格式(链接在新窗口中打开)
STR() 函数忽略默认日期和数字格式设置(链接在新窗口中打开)(Tableau 知识库)