如何获取事实数据?

问题描述 投票:0回答:1

我有一个如图所示的模型,其中箭头指示过滤器的方向。我试图从我的事实表中获取数据,以便在给定一系列日期(我通过过滤器获得)的情况下,我可以获得一个表,其中包含哪个农民、拥有哪个农场以及每个农场的哪个区域。例如:在 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,最大容量已更改。

我希望我已经解释清楚了。提前非常感谢您

powerbi dax relationship powerbi-desktop daxstudio
1个回答
0
投票

您需要一个日期过滤器,将数据限制在您想要的特定日期范围(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]))
)
© www.soinside.com 2019 - 2024. All rights reserved.