按月计算列识别记录的第一次出现
Identify the first occurrence of a record by monthly basis calculated column
我有一个要求,我需要创建一个计算列并按月识别记录的第一次出现。
以下是示例数据。数据每月有重复值。
ID MONTH
AA Jan-01
AA Jan-02
BB Feb-10
BB Feb-20
预期输出:
ID Month out
AA Jan-01 1
AA Jan-02 0
BB Feb-10 1
BB Feb-20 0
注意:如果我使用 powerquery 删除重复值,我可以实现这一点。但我需要在计算列中实现这一点。
要解决此问题,您可以执行以下操作:
- 根据您的日期计算一个 "Year-Month" 列(或两个单独的列,"year" 和 "month")
- 克隆或引用您当前的查询
- 在此克隆中使用分组依据(在转换选项卡中)
- 使用高级部分并按 ID 和年月分组
- 计算 "Date" 的最小值(我们称其为 DateKey)
- 这将生成一个 table,其中 ID 和 Year-Month 以及最小日期(第一次出现)
- 通过 ID 和 DateKey 加入(合并查询)原始 table 和聚合
- 要创建自定义列 "out",您有多种选择
- 在聚合 table 中创建一个始终值为 1 的静态列,并将其添加到联接中
- 在联接后创建一个列,如果联接 table 中的任何列有值或为空,则检查是否有任何列并设置一个值。 M公式看起来像这样
Table.AddColumn(#"Expanded Table (2)", "out", each if [#"AggregatedTable.id"] = null then 0 else 1, type number)
我有一个要求,我需要创建一个计算列并按月识别记录的第一次出现。
以下是示例数据。数据每月有重复值。
ID MONTH
AA Jan-01
AA Jan-02
BB Feb-10
BB Feb-20
预期输出:
ID Month out
AA Jan-01 1
AA Jan-02 0
BB Feb-10 1
BB Feb-20 0
注意:如果我使用 powerquery 删除重复值,我可以实现这一点。但我需要在计算列中实现这一点。
要解决此问题,您可以执行以下操作:
- 根据您的日期计算一个 "Year-Month" 列(或两个单独的列,"year" 和 "month")
- 克隆或引用您当前的查询
- 在此克隆中使用分组依据(在转换选项卡中)
- 使用高级部分并按 ID 和年月分组
- 计算 "Date" 的最小值(我们称其为 DateKey)
- 这将生成一个 table,其中 ID 和 Year-Month 以及最小日期(第一次出现)
- 通过 ID 和 DateKey 加入(合并查询)原始 table 和聚合
- 要创建自定义列 "out",您有多种选择
- 在聚合 table 中创建一个始终值为 1 的静态列,并将其添加到联接中
- 在联接后创建一个列,如果联接 table 中的任何列有值或为空,则检查是否有任何列并设置一个值。 M公式看起来像这样
Table.AddColumn(#"Expanded Table (2)", "out", each if [#"AggregatedTable.id"] = null then 0 else 1, type number)