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 )
)
PBI 文件:
https://www.dropbox.com/s/ljnyics6d7n74oc/test.pbix?dl=0
如果我没理解错的话,你完全可以在 Power Query 中做你想做的事。
- 按
Fruit
和 Country
分组
- 按
Start Date
的 Min
和 End Date
的 Max
聚合
- 添加列以计算天数差异:
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 在算术运算中处理空值的方式
我有一个数据集包含: 在各个国家/地区销售各种水果的帐户,我正在研究一些指标,我真的很想计算一个国家/地区首次销售水果与该国家/地区最后一次销售水果之间的时间。
例如:“之间的天数”首先在奥地利销售 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 )
)
PBI 文件: https://www.dropbox.com/s/ljnyics6d7n74oc/test.pbix?dl=0
如果我没理解错的话,你完全可以在 Power Query 中做你想做的事。
- 按
Fruit
和Country
分组
- 按
Start Date
的Min
和End Date
的Max
聚合 - 添加列以计算天数差异:
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 在算术运算中处理空值的方式