【问题标题】:How to convert ifnull statement in tableau to powerbi dax?如何将tableau中的ifnull语句转换为powerbi dax?
【发布时间】:2019-10-22 19:35:04
【问题描述】:

我正在处理从 tableau 到 power bi 的仪表板转换。卡在 tableau 中的计算维度需要使用 dax 转换为 powerbi!

通过替换 tableau 中的 IFNULL 语句。我已经尝试使用 IF 语句在 dax 中使用 ISBLANK 参数,该语句应该检查该字段是否返回空值。我对 dax 的了解是有限的,我想这个问题真的很简单,但我坚持了好几个小时。

需要转换成powerbi的tableau代码:

if LEFT([Supplier Code],1) = "E" then "Employees Claims" else 
IF 
IFNULL(IFNULL([ASL Supplier (SWPS)],IFNULL([Supplier Name],IFNULL([Vendor],[Supplier Code]))),'Not Define')= 'N/A'
THEN IFNULL([Vendor],[Supplier Name]) ELSE
IFNULL(IFNULL([ASL Supplier (SWPS)],IFNULL([Supplier Name],IFNULL([Vendor],[Supplier Code]))),'Not Define') 
END
END

我尝试过的 Power bi 代码:

Supplier (swps) = IF(LEFT([Supplier Code],1) = "E", "Employee Claims",
IF(
IF(ISBLANK(V_FIPnLDashboard_Tne[ASL Supplier (SWPS)]),ISBLANK(V_FIPnLDashboard_Tne[Supplier Name]),ISBLANK(V_FIPnLDashboard_Tne[Supplier Code])),"Not Define") = "N/A")

我的代码不完整,因为我无法理解 tableau 中代码的完整分解。

画面:

if LEFT([Supplier Code],1) = "E" then "Employees Claims" else 
IF 
IFNULL(IFNULL([ASL Supplier (SWPS)],IFNULL([Supplier Name],IFNULL([Vendor],[Supplier Code]))),'Not Define')= 'N/A'
THEN IFNULL([Vendor],[Supplier Name]) ELSE
IFNULL(IFNULL([ASL Supplier (SWPS)],IFNULL([Supplier Name],IFNULL([Vendor],[Supplier Code]))),'Not Define') 
END
END

预期结果是一个维度/列,其值作为 power bi 中的给定条件。

【问题讨论】:

  • 我认为,如果您无需尝试将 Tableau 转换为 DAX,您只需提供数据样本、描述您的数据模型和所需的结果,您将更轻松、更快地实现目标。从头开始解决这些问题比处理转换复杂性要容易得多。

标签: if-statement powerbi tableau-api dax ifnull


【解决方案1】:
IF IFNULL([ASL Supplier(SWPS)],IFNULL([Supplier(SWPS)],IFNULL([Vendor],IFNULL([Supplier Code],'Not Define')))) = 'N/A'
THEN [Supplier(SWPS)] 
ELSE IFNULL([ASL Supplier (SWPS)],IFNULL([Supplier(SWPS)],IFNULL([Vendor],IFNULL([Supplier Code],'Not Define'))))
END

【讨论】:

    【解决方案2】:
    supplier = var supplierswps = 
     `IF (
                                  ISBLANK (V_FIPnLDashboard_Tne[ASL Supplier(SWPS)]),
            IF (
                 ISBLANK (V_FIPnLDashboard_Tne [Supplier (SWPS)]),
                IF (
                    ISBLANK ( V_FIPnLDashboard_Tne[Vendor] ),
                    IF (
                        ISBLANK (V_FIPnLDashboard_Tne [Supplier Code]),"Not Define")))= "N/A",V_FIPnLDashboard_Tne[Supplier (swps)])
    var supplierswpsfalse = IF(supplierswps = "Not define", TRUE(), FALSE())
            return
                if( 
                   ISBLANK(V_FIPnLDashboard_Tne[ASL Supplier (SWPS)] ),
                    IF (
                        ISBLANK (V_FIPnLDashboard_Tne[Supplier (SWPS)]),
                         IF(
                            ISBLANK ( V_FIPnLDashboard_Tne[Vendor] ),
                                IF (
                                    ISBLANK (V_FIPnLDashboard_Tne[Supplier Code] )
                                ,"Not Define",
                                V_FIPnLDashboard_Tne[Supplier Code]
                                    ),
    `
    
                           V_FIPnLDashboard_Tne[Vendor]  
    
                         ),V_FIPnLDashboard_Tne[Supplier (SWPS)]
                    ),V_FIPnLDashboard_TnE[ASL Supplier (SWPS)]
                )
    

    【讨论】:

      【解决方案3】:

      在您的示例中,我发现分解 Tableau 代码的原始逻辑最有用:

      • 如果供应商代码以“E”开头,则为“Employee Claims”
      • 否则,
        • 按顺序检查,如果 ASL 供应商 (SWPS)、供应商名称、供应商、供应商代码 = “N/A”,则
          • 如果 Vendor 不为空,则为 Vendor
          • 其他,供应商名称
        • 否则,按顺序检查,
          • 如果 ASL 供应商 (SWPS)、供应商名称、供应商、供应商代码有值,请使用它
          • 否则,使用“未定义”

      鉴于此,DAX 公式为:

      Supplier (swps) =
      VAR vendorOrSupplier =
          IF (
              ISBLANK ( V_FIPnLDashboard_Tne[Vendor] ),
              V_FIPnLDashboard_Tne[Supplier Name],
              V_FIPnLDashboard_Tne[Vendor]
          )
      VAR firstValidField =
          IF (
              ISBLANK ( V_FIPnLDashboard_Tne[ASL Supplier (SWPS)] ),
              IF (
                  ISBLANK ( V_FIPnLDashboard_Tne[Supplier Name] ),
                  IF (
                      ISBLANK ( V_FIPnLDashboard_Tne[Vendor] ),
                      IF (
                          ISBLANK ( V_FIPnLDashboard_Tne[Supplier Code] ),
                          "Not Defined",
                          V_FIPnLDashboard_Tne[Supplier Code]
                      ),
                      V_FIPnLDashboard_Tne[Vendor]
                  ),
                  V_FIPnLDashboard_Tne[Supplier Name]
              ),
              V_FIPnLDashboard_Tne[ASL Supplier (SWPS)]
          )
      VAR allBlank =
          IF ( firstValidField = "Not Defined", TRUE (), FALSE () )
      RETURN
          IF (
              LEFT ( V_FIPnLDashboard_Tne[Supplier Code], 1 ) = "E",
              "Employee Claims",
              IF (
                  V_FIPnLDashboard_Tne[ASL Supplier (SWPS)] = "N/A",
                  vendorOrSupplier,
                  IF (
                      ISBLANK ( V_FIPnLDashboard_Tne[ASL Supplier (SWPS)] ),
                      IF (
                          V_FIPnLDashboard_Tne[Supplier Name] = "N/A",
                          vendorOrSupplier,
                          IF (
                              ISBLANK ( V_FIPnLDashboard_Tne[Supplier Name] ),
                              IF (
                                  V_FIPnLDashboard_Tne[Vendor] = "N/A",
                                  vendorOrSupplier,
                                  IF (
                                      ISBLANK ( V_FIPnLDashboard_Tne[Vendor] ),
                                      IF ( [Supplier Code] = "N/A", vendorOrSupplier, firstValidField ),
                                      firstValidField
                                  )
                              ),
                              firstValidField
                          )
                      ),
                      firstValidField
                  )
              )
          )
      

      【讨论】:

      • Tableau Logic :在列供应商 (swps) 下方检查供应商 swps、供应商、供应商代码,如果它们等于 = "N/A",则返回供应商(swps)。如果不是,他们应该返回相同的值?下面还提到了我为创建此列而生成的 Powerbi 代码。你能验证它是否正确吗?我正在生成列,但如果我犯了错误,请感觉!
      • Nafih,您可能想在一列中尝试您的公式并在另一列中挖掘以帮助您验证。
      猜你喜欢
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多