使用 T-SQL、DAX 或 M 查询在值更改后创建 StartDate 和 EndDate 列
Create a StartDate and EndDate column after value change using either T-SQL, DAX or M Query
我有一个table如下:
日期/姓名/旧值/新值
我想要一种使用以下任何方法创建开始日期和结束日期列的方法:DAX、T-SQL 或 M 查询。
意思;开始日期是[日期],结束日期是同一个人更改值的日期。
提前致谢。
使用 Power Query M,您可以按照以下步骤操作:
在我的演示数据中,列的排序是正确的,但您可以使用此代码来确保它们是:
#"Sort Table" = Table.Sort(#"Changed Type",{{"Name", Order.Ascending}, {"Date", Order.Ascending}})
添加索引列 > 添加列 > 索引列 > 从 0(必须从 0)
添加列 > 自定义列 > 名称结束日期 >
if [Name] <> #"Added Index" [Name] {[Index] + 1} then null else Date.AddDays(#"Added Index" [Date] {[Index] + 1},-1)
右键单击“结束日期”>“替换错误”>“替换为空值”
根据需要调整列顺序
将新值列重命名为“值”,将日期列重命名为“开始日期”。删除不需要的列
来源和输出:
编辑:我应该补充一点,这在小型数据集上工作正常,但在较大的数据集上,您可能 运行 会遇到性能问题。在这种情况下,您应该复制查询,为一个查询添加从 0 开始的索引,并在另一个查询中从 1 开始索引。然后您可以将两者合并在一起以提取必要的日期和值。
我有一个table如下:
日期/姓名/旧值/新值
我想要一种使用以下任何方法创建开始日期和结束日期列的方法:DAX、T-SQL 或 M 查询。
意思;开始日期是[日期],结束日期是同一个人更改值的日期。
提前致谢。
使用 Power Query M,您可以按照以下步骤操作:
在我的演示数据中,列的排序是正确的,但您可以使用此代码来确保它们是:
#"Sort Table" = Table.Sort(#"Changed Type",{{"Name", Order.Ascending}, {"Date", Order.Ascending}})
添加索引列 > 添加列 > 索引列 > 从 0(必须从 0)
添加列 > 自定义列 > 名称结束日期 >
if [Name] <> #"Added Index" [Name] {[Index] + 1} then null else Date.AddDays(#"Added Index" [Date] {[Index] + 1},-1)
右键单击“结束日期”>“替换错误”>“替换为空值”
根据需要调整列顺序
将新值列重命名为“值”,将日期列重命名为“开始日期”。删除不需要的列
来源和输出:
编辑:我应该补充一点,这在小型数据集上工作正常,但在较大的数据集上,您可能 运行 会遇到性能问题。在这种情况下,您应该复制查询,为一个查询添加从 0 开始的索引,并在另一个查询中从 1 开始索引。然后您可以将两者合并在一起以提取必要的日期和值。