按月计算列识别记录的第一次出现

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 删除重复值,我可以实现这一点。但我需要在计算列中实现这一点。

要解决此问题,您可以执行以下操作:

  1. 根据您的日期计算一个 "Year-Month" 列(或两个单独的列,"year" 和 "month")
  2. 克隆或引用您当前的查询
  3. 在此克隆中使用分组依据(在转换选项卡中)
    • 使用高级部分并按 ID 和年月分组
    • 计算 "Date" 的最小值(我们称其为 DateKey)
  4. 这将生成一个 table,其中 ID 和 Year-Month 以及最小日期(第一次出现)
  5. 通过 ID 和 DateKey 加入(合并查询)原始 table 和聚合
  6. 要创建自定义列 "out",您有多种选择
    • 在聚合 table 中创建一个始终值为 1 的静态列,并将其添加到联接中
    • 在联接后创建一个列,如果联接 table 中的任何列有值或为空,则检查是否有任何列并设置一个值。 M公式看起来像这样 Table.AddColumn(#"Expanded Table (2)", "out", each if [#"AggregatedTable.id"] = null then 0 else 1, type number)