Tableau 中的 DATEPARSE 是一个日期函数,它根据 date_format 和 date_string 参数将任何字段(通常是字符串)转换为日期字段。本文介绍如何使用 DATEPARSE 函数将字段转换为日期字段,以及有哪些预置的替代方法,并附有示例。
通常,每个数据库都有其存储日期字段的独特方法。在某些情况下,用户会故意以字符串格式存储日期时间。在这种情况下,桌面会自动将这些字段转换为日期字段。但是,在某些情况下,它可能不会,为了解决这些问题,请使用 Tableau DATEPARSE 函数。
DATEPARSE 函数的语法如下所示。
DATEPARSE(date_format, date_string)
在上面的 DATEPARSE 函数语法中,第一个参数(即 date_format)描述了 Tableau 如何在 date_string 参数中排列日期。第一个和第二个参数的顺序应该匹配。否则,它只会返回空值。例如,如果 date_format = ‘yyyy-MM-dd’,则 date_string 必须是 ‘2020-12-31’。因此,请始终根据字符串列更改 date_format。
Tableau DATEPARSE 函数示例
DATEPARSE 函数将特定格式的字符串作为日期返回。该列(维度)可能显示为字符串,而不是日期字段。我们的工作是根据需要将该字符串字段(Abc)或列转换为日期或日期时间(日历+时间符号)。
为了演示 Tableau DATEPARSE 函数,我们将使用一个简单的员工表,其中 HireDate 和 HDate 列包含日期和时间。但是,数据类型是字符串(Abc)。
在 DataSource 中将字符串转换为日期
在数据源中的“字段”部分,单击 HireDate 旁边的 Abc 类型将打开下面的上下文菜单。如果您观察图像,默认情况下它会勾选字符串。因此,请将其更改为日期和时间。请参阅 Tableau 中有关日期函数和其他函数的文章。

同样,对 HDate 字段也执行相同操作。

我将撤销这些步骤,以展示 Tableau DATEPARSE 函数的更多可能性。
在数据架中将字符串转换为日期
由于我们将 HireDate 和 HDate 列保留为数据源中的字符串,因此数据架将它们显示为字符串。因此,在“表”部分下,单击 HireDate 旁边的 Abc 类型,然后选择“日期和时间”选项。它将它们更改为日期时间字段。

Tableau DATEPARSE 函数用于从字符串解析日期和时间
为了演示此 DATEPARSE 日期函数,我们创建了一个用于编写表达式的计算字段。使用“分析”菜单并选择“创建计算字段…”选项来执行此操作。接下来,将此 HireCal 字段添加到“行”架以显示结果。
从字符串解析日期
让我介绍一种将字符串转换为日期的基本方法。如果您观察表达式,我们在 Tableau DATEPARSE 函数内部使用了一个静态表达式,它将为 HireCal 列的每一行显示相同的日期和默认时间。
DATEPARSE('dd-mm-yyyy', '10-12-2020')

从字符串解析日期和时间
请单击 HireCal 旁边的向下箭头并选择“编辑”选项以更改计算字段表达式。这次,我们将日期时间作为 date_string,并将适当的格式作为第一个参数传递。
DATEPARSE('dd.MMM.yyyy hh:mm:ss', '02.April.2022 10:30:00')

下一节将解释 DATEPARSE 函数的另外几个将字符串转换为日期的选项。
如何将字符串列转换为日期字段?
在以上所有示例中,我们都使用了静态的单个日期作为第二个参数。让我使用实际的字符串字段来展示实际工作。下面的表达式将把 HireDate 字符串字段转换为日期列。
DATEPARSE('MMM dd yyyy h:mma', [Hire Date])
如果您观察 HireCal 列,Tableau DATEPARSE 函数效果非常好。它返回日期,并且旁边还有一个日历+时间符号。但是,表达式产生了两个 NULL 值,因为 SQL 数据库将 Sep 视为九月,而 Tableau 将 Sept 视为九月。

因此,创建一个新的计算字段并使用字符串 REPLACE() 函数将单词“ Sep ”替换为“Sept”。
REPLACE([Hire Date], 'Sep', 'Sept')
接下来,将此字段用作 DATEPARSE 函数的第二个参数。如果您仔细观察,在前面的表达式中 Hire 和 Date 之间有一个空格,但在这里没有。
DATEPARSE('MMM dd yyyy h:mma', [HireDate])

同样,将 H Date 字符串列更改为日期时间(HCal);表达式如下所示。
DATEPARSE('MMMddyyyyh:mm', [H Date])
