将字段转换为日期字段

每种数据库存储日期字段的方式都略有不同。Tableau 会尽力对日期字段进行解读,但有时导入 Tableau 的字段将会是文本字符串或数字字段。如果发生这种情况,我们可以通过几个步骤来解决问题。

验证日期字段

日期字段可能显示为字符串
在“数据源”页面中

 

或在“数据”窗格中显示为字符串

 

当日期被解读为字符串时,您在使用日期字段时所能享受到的功能和便捷性(例如下钻、使用日期计算以及在连续和离散度量之间切换)将荡然无存。

如果日期解读不正确,请按顺序执行以下步骤:

  1. 更改字段的数据类型

  2. 使用 DATEPARSE 函数创建计算

  3. 使用 DATE 函数创建一个计算

更改字段的数据类型

解决日期字段解读问题的第一步是确保数据类型设置为“日期”“日期和时间”

  1. “数据源”“数据”窗格中,单击数据类型图标,并将数据类型更改为“日期”“日期和时间”

  2. 检查视图或“数据源”窗格中的数据。如果看到许多 Null 值,请将数据类型恢复为“字符串”,并继续使用 DATEPARSE 函数创建计算来纠正问题。

    Null 值显示在“数据源”屏幕中。

使用 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 计算

  1. 检查日期字段的当前格式。记下月、年、小时和天在字段中的显示位置。DATEPARSE 函数需要此信息。

    A:月中的天

    B:月

    C:年

    D:小时、分钟、秒、毫秒、期间

  2. 在“维度”窗格中右键单击日期字段,并选择“创建”>“计算字段”

  3. 在对话框中,编写 DATEPARSE 函数。DATEPARSE 函数包含两个部分:格式字符串字符串是您希望转换的字段,其必须为字符串数据类型。

    A:格式

    B:字符串

    格式是 Tableau 用于将字符串解读为日期的指引。日期或时间字符串的每个部分都有一个匹配符号,如下表中所示。格式必须完全复制日期的显示方式。举例来说,如果在字符串包含 2 位数年份代码(“97”)时使用单一年份代码(“Y”),则计算可能返回 null 值。

    注意:格式要完全复制显示的字符串的例外情况是,日期的长格式部分(“September”)可使用四个符号设置格式(“September" = "MMMM”)。

    格式必须包括所有空格、连字符和其他非字母数字符号才能正确解读字符串。

    日期字段符号

    日期部分符号示例字符串示例格式
    y97、2017yy、y 或 yyyy
    “年中的周”的年份Y1997Y
    时区Z、z-0800、PST-08:00、PSTZ、ZZZZ、zzz
    M9、09、Sep、SeptemberM、MM、MMM、MMMM
    年中的周 (1-52)w8、27w、ww
    年中的季度QQ2、第二季度QQQ、QQQQ
    周中的天E周一、星期一EEE、EEEE
    月中的天d1、15d、dd
    年中的天 (1-365)D23、143D、DD、DDD
    期间(am/pm 标记)aAM、am、PMaa、aaaa
    小时 (1-12),小时 (0-23)h、H1、10、16h、hh、HH
    分钟m8、59m、mm
    一分钟中的秒s5、05s、ss
    小数秒S2、23、235、2350S、SS、SSS、SSSS
    天中的毫秒A34532AAAAA

    有关日期符号的更完整列表,请参见“Unicode 国际化组件”页面的日期和时间格式设置概述(链接在新窗口中打开)

    注意: 并非所有数据库和文件类型都支持某些日期格式。

  4. 依据 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 知识库)

感谢您的反馈!您的反馈已成功提交。谢谢!