【问题标题】:How to create a DAX calculated column in PowerBi that finds the MIN value based on another columns FIRSTDATE?如何在 PowerBi 中创建一个 DAX 计算列,根据其他列 FIRSTDATE 找到 MIN 值?
【发布时间】:2020-08-03 16:55:34
【问题描述】:

需要一些帮助来计算 DAX 公式中两个单独列中的以下内容

  • 每个装备的最早阅读

  • 每个装备的最新读数

Screenshot of sheet

我已经能够得到每个装备的第一次约会。

CALCULATE(FIRSTDATE(Transactions[Date]),ALLEXCEPT(Transactions,Transactions[Equip No]))

但无法弄清楚如何获取与第一个日期相关的“阅读”值

我已经设法通过测量来做到这一点,但也想在计算中得到它。列。

Latest Reading = 
SUMX (
    VALUES( Transactions[Equip No] ),
    CALCULATE ( MIN ( Transactions[Reading] ), FIRSTDATE ( Transactions[Date] ) )
)

【问题讨论】:

  • 考虑将您的问题行改写为问题。

标签: powerbi dax powerbi-desktop


【解决方案1】:

这应该对你有帮助。

最早的列

Earliest = 
VAR __equipNumber = 'Transaction'[Equip No] //Get the Equip No to filter the main table and create an auxiliar table for every different Equip No.
VAR __minDate = CALCULATE( MIN('Transaction'[Date]), FILTER( 'Transaction', 'Transaction'[Equip No] = __equipNumber ) ) //Get the lowest date asociated to every Equip No.
VAR __subTable = FILTER( 'Transaction', 'Transaction'[Date] = __minDate ) //Create a table that contains 1 row asociate to the lowest date.
Return CALCULATE(SUM('Transaction'[Reading]), __subTable) //Operate over the auxiliar table to get the expected value.

最新专栏

Latest = 
VAR __equipNumber = 'Transaction'[Equip No]
VAR __maxDate = CALCULATE( MAX('Transaction'[Date]), FILTER( 'Transaction', 'Transaction'[Equip No] = __equipNumber ) )
VAR __subTable = FILTER( 'Transaction', 'Transaction'[Date] = __maxDate )
Return CALCULATE(SUM('Transaction'[Reading]), __subTable)

我得到了预期的结果

【讨论】:

  • 我设法让它在我的测试数据集上工作,非常感谢。但是,当我将它添加到我的主数据集时,我无法让它工作(有更多可能影响结果的字段)。最早和最新的列都只是总结了“阅读”列中的每个值(与装备无关)。无论如何你可以分解每个变量并告诉我到底发生了什么,以便我可以进一步调试。
  • 我在答案中添加了一些 cmets,以便您查看。我建议您验证的是 __subTable var 返回的行数。对于所有情况,它都应该返回 1。您还可以在 return 语句中尝试不同的函数。您可以尝试使用 MIN、MAX、DISTINCT 来代替 SUM。希望对您有所帮助。
  • 这行得通。感谢您的帮助。我有另一种情况,我想找到最早的,但它受到某个日期范围的限制。例如。我想查看 2020 年 1 月 3 日至 2020 年 3 月 30 日之间的最早最小值。
  • 我假设范围在 2020 年 1 月 3 日到 2020 年 3 月 30 日之间。范围会根据您的所有值而变化,或者您想创建一个仅针对该范围的列?
  • 该范围内的一列
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-09
  • 2023-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多