Power BI如果为空,则赋值

时间:2019-09-09 13:46:36

标签: powerbi

此代码段显示了我们正在查看的图表,并且有空白。我们要显示这些值是什么,而不是这些日期和ID的空格。但是,每个ID或Date的值(费率)可能不同。 (这可能在极少数情况下发生。)

Visual Display

此代码段显示了从excel中提取到Power BI中的数据(仅示例数据)。请注意,所有日期都是按顺序排列的,但是请注意,某些ID在某些日期没有条目。

Table Display

我想说IF(此日期ID为空,然后将附加到此ID的Value(Rate))。

在Power BI中可能无法做到这一点。我们有一个具有类似数据的excel电子表格,可以执行我们想要的操作,但是我们希望使用Power BI进行自动化。

有什么想法吗?

更新

但是,我已经采取了有利于我的措施。我需要获得度量的总和:“价值或利率”度量。我确实有“价值或比率”-如果我可以做与“价值或比率”度量相同的事情,并且总和是很好的话,那么可以通过直观的总计得出。

请在下面查看更新的屏幕截图。

Visual with fields Relationships

1 个答案:

答案 0 :(得分:1)

作为一种度量,您可以执行以下操作。我假设您的模型如下:

  • 事实:(日期,ID,值)
  • DimDate :(日期,...)
  • 费率:(ID,费率)
  • 昏暗:(ID,...)

使用这些表,您将具有以下关系:

  • 昏暗-1:N->事实
  • 昏暗<-1:1->价格
  • DimDate -1:N->事实

使用上述模型,您可以构建以下内容的视觉效果

  • 行:DimDate [Date]
  • 列:Dim [ID]
  • 值:[值或费率度量]
Value = SUM ( 'Fact'[Value] )
Rate = SUM ( 'Rates'[Rate] )
Value Or Rate Measure =
VAR Value = [Value]
RETURN
  IF ( ISBLANK ( Value ), [Rate], Value )

这可能不符合您想要的总数-您未指定。因此,如果您需要视觉总计,则可以尝试以下操作:

Value or Rate - visual totals =
SUMX (
  CROSSJOIN ( VALUES ( 'Dim'[ID] ), VALUES ( 'DimDate'[Date] ) ),
  [Value Or Rate Measure]
)

您也可以在Power Query M中处理此问题,前提是您拥有与上述相同的表。我假设每个表都有一个同名的关联查询。

let
    Source = Table.AddColumn(Dim, "Date", each DimDate[Date]),
    #"Expanded Date" = Table.ExpandListColumn(Source, "Date"),
    #"Merged Queries" = Table.NestedJoin(#"Expanded Date", {"id", "Date"}, Fact, {"ID", "Date"}, "Fact", JoinKind.LeftOuter),
    #"Expanded Fact" = Table.ExpandTableColumn(#"Merged Queries", "Fact", {"Value"}, {"Value"}),
    #"Merged Queries1" = Table.NestedJoin(#"Expanded Fact", {"id"}, Rates, {"ID"}, "Rates", JoinKind.LeftOuter),
    #"Expanded Rates" = Table.ExpandTableColumn(#"Merged Queries1", "Rates", {"Rate"}, {"Rate"}),
    #"Added Custom" = Table.AddColumn(#"Expanded Rates", "Value Or Rate", each if [Value] = null then [Rate] else [Value]),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Value", "Rate"})
in
    #"Removed Columns"

在这里,我们正在做类似的事情,但是是在表级别,而不是作为度量。我们交叉连接Dim [ID]和DimDate [Date]以获得所有日期和ID组合的密集表。然后我们离开原来的事实表和费率表。然后,我们添加一列,如果存在[Value],则接受[Value];如果[Value]为空,则接受[Rate]。