如何在Power BI中使用DAX选择一天的最后一个值

时间:2019-09-09 04:46:47

标签: powerbi

我刚接触BI并遇到问题。我的模型如下:

  • 日期维度
  • 测量事实

“日期维度”中的“日期”列链接到“测量情况”中的被测对象

以下是示例数据:

enter image description here

注意:在编辑查询中,我将被测对象的类型更改为仅日期。

我尝试了以下措施,但是它无法按照我想要的方式工作。它将汇总一天的所有值,但我想要的是一天的最后一个值:

day_fuel_consumption =
CALCULATE (
    SUM ( measurement[measurementvalue] ),
    FILTER (
        measurement,
        measurement[metername] = "C-FUEL"
     && measurement[measuredate] = MAX ( measurement[measuredate] )
    )
)

我的目标是获取 29242 ,即一天的最后一天。请记住,measuredate是一个Date字段,而不是Datetime(我更改为Date字段,以便我的Year和Month过滤器可以正常工作)。我已经在编辑查询中更改了类型。

3 个答案:

答案 0 :(得分:0)

更改量度以使用变量可能是解决方案:

DFC = 
var maxDate = MAX(measurement[measuredate])

return
CALCULATE(
    SUM(measurement[measurementvalue]), 
    measurement[measuredate] = maxDate
)

但是,您应该保留measureDate的日期时间格式。如果您不想看到时间戳,只需更改I power bi的格式即可。否则,power bi将看到两个具有最大日期的值并将其求和,而不是取最后一个。

答案 1 :(得分:0)

好吧,如果要避免创建度量,可以将要过滤的字段拖到可视过滤器窗格中。单击您的视觉效果,然后滚动一点,您将看到我所指的部分。从那里,只需拖动您要过滤的字段即可。然后选择“前N个”。它将允许您基于另一个字段选择一个顶部(数字)或底部(数字)。足够奇怪,它确实允许您按最高价值来做最高价值。当您大声说出来时,这没有任何意义,但它的工作原理完全一样。 这将显示您要使用的任何值字段的最高值。作为一项额外的奖励,您可以随时显示自己想要多少。

就DAX而言,与其他能够帮助您的人相比,恐怕我有点不识字。

答案 2 :(得分:0)

我必须创建如下所示的两个单独的度量,才能按我的意愿工作:

$(function () {

    $('input:checkbox').on('click', function () {

        var checkboxArray = $('input:checkbox'); // CheckBoxList Items

        var current = $(this); // Get Selected Chec kbox 

        // Uncheck every checkBox that don't match the unique multi selection combo

        if (current.val() != "4" && current.val() != "5") {

            // Loop through checkboxArray and uncheck every item that does not meet the condition
            $(checkboxArray).each(function (i) {
                $(this).prop("checked", false);
            });

            // Check the selected item again
            $(current).prop("checked", true);
        } else {

            // Get the current checkbox value 
            var chk = $(current).val();

            // If the checkbox that matches the unique combo selection was click uncheck all invalid checkboxes that don't match
            if (chk == "4" || chk == "5") {

                // loop through the checkboxlist again
                $(checkboxArray).each(function () {
                    // Get the looped item name
                    var ck = $(this).val().text();
                    // if checkbox does not belong to the unique combo selection, uncheck it
                    if (ck != "4" && ck != "5") {
                        $(this).prop("checked", false);
                    }
                });
            }
        }
    });
});