2017-05-04 74 views
1

我有一個DAX聲明,它的複雜性持續增長,我感覺好像我正在有效地編寫它。任何人都可以幫助我理解如何簡化此聲明?如何簡化以下DAX聲明?

EVALUATE 
ADDCOLUMNS (
    ADDCOLUMNS (
     ADDCOLUMNS (
      ADDCOLUMNS (
       ADDCOLUMNS (
        ADDCOLUMNS (
         ADDCOLUMNS (
          Query_NewSales, 
          "isKit", NOT (
           ISBLANK (
            LOOKUPVALUE (Query_Kits[KitName], Query_Kits[KitName], Query_NewSales[Item]) 
           ) 
          ) 
         ), 
         "AvgCPI", IF (
          [isKit], 
          LOOKUPVALUE (
           DAX_KitsPricedMissingRemoved[Total Price], 
           DAX_KitsPricedMissingRemoved[KitName], Query_NewSales[Item] 
          ), 
          LOOKUPVALUE (
           DAXTable_NewPurchasesGroupedByItem[AvgCPI], 
           DAXTable_NewPurchasesGroupedByItem[Item], Query_NewSales[Item] 
          ) 
         ) 
        ), 
        "isValid", NOT (ISBLANK ([AvgCPI])) 
       ), 
       "VenueFeeCalculated", IF ([isValid], [Sold Price] * [Linked.VenueFee]), 
       "TransactionFeeCalculated", IF ([isValid], [Sold Price] * [Linked.PaymentFee]) 
      ), 
      "Gross Profit", IF (
       [isValid], 
       [Sold Price] - [VenueFeeCalculated] 
        - [TransactionFeeCalculated] 
        - [Shipping Cost] 
      ) 
     ), 
     "Total Fees", [TransactionFeeCalculated] + [VenueFeeCalculated], 
     "Net Profit", IF ([isValid], [Gross Profit] - [AvgCPI]) 
    ), 
    "Fees Percent", IF ([isValid], [Linked.VenueFee] + [Linked.PaymentFee]), 
    "Shipping Percent", IF ([isValid], [Shipping Cost]/[Sold Price]), 
    "Overhead Percent", IF ([isValid], ([Sold Price] - [Gross Profit])/[Sold Price]) 
) 

此代碼也似乎效率不高,因爲它創造了一大堆虛表,但沒有做這種方式我不能引用我在隨後的查詢中添加列。我不想重複,重複三次,等我繼續查詢。看起來,如果沒有所有的嵌套,我必須有辦法做到這一點。

+1

你可以提取那些ADDCOLUMNS語句轉換爲計算的列或措施,打破代碼。 – David

回答

0

您可以將查詢到的多個措施來代替:

define measure Query_NewSales[isKit] = SUMX(Query_NewSales, IF(NOT (
    ISBLANK (
    LOOKUPVALUE(Query_Kits[KitName],Query_Kits[KitName],Query_NewSales[Item]) 
)), 1, 0)) 
measure Query_NewSales[AvgCPI] = SUMX(Query_NewSales, IF(Query_NewSales[isKit], 
    -- lookup to DAX_KitsPricedMissingRemoved 
    ,-- lookup to DAXTable_NewPurchasesGroupedByItem 
)) 
EVALUATE ADDCOLUMNS(Query_NewSales, "IsKit", Query_NewSales["IsKit"], ...)