Dax/powerquery 根据限制检索与某个国家/地区的最后一次约会

Dax/powerquery retrieve last date with a country based on restriction

我有一个数据集包含: 在各个国家/地区销售各种水果的帐户,我正在研究一些指标,我真的很想计算一个国家/地区首次销售水果与该国家/地区最后一次销售水果之间的时间。

例如:“之间的天数”首先在奥地利销售 ORANGE 到最后在奥地利销售 ORANGE

我已经使用一种措施解决了这个问题,该措施有效,但这不允许我进一步使用它,因为它会引发循环依赖错误(所有参考!)

我想知道我能不能把这个做的不那么复杂?一个想法是在 powerquery 中设置一个额外的 table 具有水果和国家销售的最新日期类似于枢轴在 excel 中可以做的事情,之后我可以 link 到我的主table 并使用 RELATED 选项检索日期。

有什么想法吗?

powerBI 中的当前测量值:

DURATION = 
VAR dispdate =
    MIN( 'Test dat'[Dispath] )
VAR lastsoldthiscountry =
    CALCULATE(
        MAX( 'Test dat'[Last sold date] ),
        ALL( 'Test dat' ),
        SUMMARIZE( 'Test dat', 'Test dat'[Fruit], 'Test dat'[Country] )
    )
RETURN
    IF(
        NOT ( ISBLANK( lastsoldthiscountry ) ) && NOT ( ISBLANK(dispdate) ),
        INT( lastsoldthiscountry - dispdate )
    )

Excel 原始测试: https://www.dropbox.com/scl/fi/cppyzagm4ahusrxmadlg6/Test_data_withPivot.xlsx?dl=0&rlkey=2nf5wzl7etwr2hqg2lh4oyifx

PBI 文件: https://www.dropbox.com/s/ljnyics6d7n74oc/test.pbix?dl=0

如果我没理解错的话,你完全可以在 Power Query 中做你想做的事。

  • FruitCountry
  • 分组
  • Start DateMinEnd DateMax 聚合
  • 添加列以计算天数差异:
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{
        {"Fruit", type text}, {"Account ID", type text}, {"Country", type text}, 
        {"Sold amount", Int64.Type}, {"Dispath", type date}, {"First sold date", type date}, {"Last sold date", type date}}),
    
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Fruit", "Country"}, {
        {"First Date Sold", each List.Min([First sold date]), type nullable date}, 
        {"Last Date Sold", each List.Max([Last sold date]), type nullable date}}),
    
    #"Sorted Rows" = Table.Sort(#"Grouped Rows",{{"Fruit", Order.Ascending}, {"Country", Order.Ascending}}),
    
    #"Added Custom" = Table.AddColumn(#"Sorted Rows", "Days Sold", each 
        Duration.Days([Last Date Sold]-[First Date Sold]),Int64.Type)
in
    #"Added Custom"



法国苹果的负数似乎是由于数据输入错误造成的

如果缺少日期条目,table 将显示空值,这是由于 PQ 在算术运算中处理空值的方式