Power BI-在2列之间选择切片器日期

时间:2020-08-03 19:55:20

标签: powerbi slicers

希望对我希望完成的工作做一个简短的解释,然后再进行我们一年多的工作。

所需结果 我有一个包含两列SCD_Valid_From和SCD_Valid_To的SCD值表。有没有一种方法可以在我的模型中联接日期表(或者简单地使用不带联接的切片器),以便能够选择介于两个SCD列之间的特定日期并返回该行数据? >

原始表

ID   |  SCD_Valid_From  |  SCR_Valid_To  |  Cost
1       2020-08-01         2020-08-03       5.00

选择的切片器日期为2020-08-02。我希望此ID = 1记录返回。

到目前为止我们尝试过的事情 去年,我们有一名顾问来帮助我们启动Power BI。他的解决方案是创建一个扩展表,其中每个ID /日期组合都包含一行。

展开的原始表格

ID   |  SCD_Valid_Date  |  Cost
1       2020-08-01         5.00
1       2020-08-02         5.00
1       2020-08-03         5.00

这最初是在Power BI端发生的,我们将使用增量刷新来控制每天要推送多少表。简而言之,这效率极低,并且刷新速度太慢,无法生效-对于5年的数据量,我们每个ID需要2000多个行才能选择维记录。

有没有一种使用切片器的方法,Power BI可以选择记录的选定日期位于表的两列中的日期之间?

1 个答案:

答案 0 :(得分:2)

让我解释一个解决方法,希望这将帮助您解决问题。我猜你下面有2张桌子-

  1. 从中生成日期切片器的带有“日期”列的“日期”表。
  2. “您的主表”,其列为“ scd_valid_from”和“ scd_valid_to”。

步骤1:如果您在表“ Dates”和“ your_main_table”之间没有关系,那么就可以了,因为您必须创建一个新表,例如“ Dates2”。为此, 您不能在这些表之间建立关系。

如果您已经在这些表之间建立了联系,请使用以下代码创建一个新的自定义表-

Dates2 = 
SELECTCOLUMNS(
    Dates,
    "Date", Dates[Date]
)

在这里,我将把“ Dates2”视为您的日期切片器的来源。但是,如果您具有与表“ your_main_table”没有任何关系的“ Date”表,则在下面的度量创建中考虑使用“ Dates”代替“ Dates2”。现在,在您的表“ your_main_table”中创建以下4个度量

1。

date_from_current_row = max(join_using_date_range[SCD_Valid_From])

2。

date_to_current_row = max(join_using_date_range[SCD_Valid_to])

3。

date_selected_in_slicer = SELECTEDVALUE(Dates2[Date])

4。

show_hide_row = 
if(
    [date_selected_in_slicer] >= [date_from_current_row] 
        && [date_selected_in_slicer] <= [date_to_current_row] 
    , 
    1, 
    0
)

现在您已准备好所有乐器。使用表格“ your_main_table”中的列创建视觉效果

最终步骤:现在,只需添加带有度量“ show_hide_row”的可视级过滤器,设置值仅在“ show_hide_row = 1”时显示。

最终输出将类似于下图-

enter image description here