我有一个如图所示的模型,其中箭头指示过滤器的方向。我试图从我的事实表中获取数据,以便在给定一系列日期(我通过过滤器获得)的情况下,我可以获得一个表,其中包含哪个农民、拥有哪个农场以及每个农场的哪个区域。例如:在 2024/01/01 到 2024/01/31 的日期范围内,农民 g1 有一个农场 g1,有 4 个区域 z1-z4,并且从每个农场获取其 max_capacity,并从每个区域获取 max_capacity。这样我就可以看到农场每个区域的容量历史记录。
关于区域,我已经尝试过这段代码:
zone_max_capacity =
CALCULATE(
MAX(fact_zone_params[max_capacity]),
CROSSFILTER(dim_zone[id_zone], fact_farm_zone_farmer[id_zone], Both),
CROSSFILTER(fact_zone_params[id_zone], dim_zone[id_zone], Both)
)
显然,由于最大值,我只得到一个结果,但我想获得所有出现的结果,以便我有一个像这样的表格:
农民 | 最大容量 | 区 | 日期 | 最大容量 |
---|---|---|---|---|
f1 | 500 | z1 | 2024/01/01 | 25 |
f2 | 300 | z1 | 2024/01/01 | 20 |
f2 | 300 | z1 | 2024/01/02 | 50 |
f2 | 300 | z1 | 2024/01/03 | 70 |
f3 | 100 | z1 | 2024/01/08 | 100 |
通过这种方式,我可以看到类似于历史的内容,我知道每个农场的每个区域的最大容量是多少以及它是谁的农场。请注意,对于 farmer2 和 zone 1,最大容量已更改。
我希望我已经解释清楚了。提前非常感谢您
您需要一个日期过滤器,将数据限制在您想要的特定日期范围(2024/01/01 到 2024/01/31)。
对于您的 DAX,我会选择使用
SUMMARIZE
或 ADDCOLUMNS
与 CALCULATE
来获取历史记录:
History_Capacity_View =
VAR DateRange =
DATESBETWEEN(dim_date[Date], DATE(2024, 1, 1), DATE(2024, 1, 31))
RETURN
SUMMARIZE(
FILTER(fact_zone_params, fact_zone_params[Date] IN DateRange),
dim_farmer[Farmer],
fact_farm_zone_farmer[Farm],
dim_zone[Zone],
fact_zone_params[Date],
"Farm_Max_Capacity", CALCULATE(MAX(fact_farm_params[max_capacity])),
"Zone_Max_Capacity", CALCULATE(MAX(fact_zone_params[max_capacity]))
)