我正在处理 PowerPivot 项目,我需要将日期转换为另一种格式。我的 SQL Server Analysis Cube 为我提供了一个包含日期属性的时间维度。我想将其转换为 dd/mm/yyyy 格式以创建对另一个数据源(Excel 文件)的引用。
我尝试使用标准 DAX 日期函数对其进行转换,但它不被识别为日期,这似乎是由于添加了作为前缀的日期名称。如何将其转换为 dd/mm/yyyy 格式?如何提取逗号后的子字符串?
谢谢 !
我正在处理 PowerPivot 项目,我需要将日期转换为另一种格式。我的 SQL Server Analysis Cube 为我提供了一个包含日期属性的时间维度。我想将其转换为 dd/mm/yyyy 格式以创建对另一个数据源(Excel 文件)的引用。
我尝试使用标准 DAX 日期函数对其进行转换,但它不被识别为日期,这似乎是由于添加了作为前缀的日期名称。如何将其转换为 dd/mm/yyyy 格式?如何提取逗号后的子字符串?
谢谢 !
我使用以下数据来测试我的解决方案。
您可以使用 SEARCH 函数查找字符串的第一个实例。因此,我可以使用以下公式仅解析日期部分:
=right([Datefield],(LEN([Datefield])-SEARCH(",",[Datefield])-1))
它获取从逗号后的字符开始到字符串末尾的子字符串。
DATEVALUE 函数接受一个表示日期的字符串并将其转换为日期。我可以将它与我之前的功能结合起来:
=datevalue(right([Datefield],(LEN([Datefield])-SEARCH(",",[Datefield])-1)))
在下图中,第一列是原始数据。第二列是解析日期子字符串的函数。第三列采用第二列中该日期字符串的日期值。第四列是包含子字符串和日期值的多合一公式。
如果您将定期从数据库中加载数据,我建议您使用 Power Query 将数据加载到 PowerPivot 模块中。
这是可以为您执行结果的示例代码。
数据如下所示(表 2):
Date
Monday, January 12, 2014
Tuesday, January 13, 2014
Wednesday, January 14, 2014
let
Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
#"Split Column by Delimiter" = Table.SplitColumn(Source,"Date",Splitter.SplitTextByEachDelimiter({","}, null, false),{"Date.1", "Date.2"}),
#"Change to Date Format" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Date.1", type text}, {"Date.2", type date}}),
#"Removed Columns" = Table.RemoveColumns(#"Change to Date Format",{"Date.1"})
in
#"Removed Columns"
正如@mmarie 解释的那样,以下公式效果很好(需要一些更改):
=datevalue(right([Datefield];(LEN([Datefield])-SEARCH(",";[Datefield])-1)))