2016-10-19 5 views
0

の使用:SSAS表形式DAX私はSQLで書かれたこのクエリ持つIF文

SELECT 
    CustomerId, 
    CustomerType, 
    CASE WHEN CustomerStatus = 'VIP' 
     THEN CustomerDiscountType 
     ELSE NULL 
    END AS CustomerDiscountType 
FROM Customer 

をそして、私はDAXクエリでこれを書きたい:私はこのように書くことができることを知っている :

EVALUATE 
(
    SUMMARIZE 
    (
     'Customer', 
     'Customer'[CustomerId], 
     'Customer'[Type], 
     'Customer'[DiscountType], 
     "Customer VIP", IF('Customer'[Status] = "VIP", 'Customer'[DiscountType], BLANK()) 
    ) 
) 

しかし条件ならば、私が書くとき、私は属性「お客様」あまりにも、そのクエリで[DiscountType]を含める必要がありますが、私はそのIF文 「Discouの列名を書きたいですntType "ですが、私の場合は以下のようにはできません。

EVALUATE 
(
    SUMMARIZE 
    (
     'Customer', 
     'Customer'[CustomerId], 
     'Customer'[Type], 
     "DiscountType", IF('Customer'[Status] = "VIP", 'Customer'[DiscountType], BLANK()) 
    ) 
) 

それはので、既存のDiscountType列のこのエラーで失敗しました:それはすでに存在するため 関数「まとめるには」[DiscountType]列を追加することはできません。

答えて

1

SUMMARIZEの代わりにSELECTCOLUMNS機能を使用できます。私は、IF関数がDiscountTypeカラムを返し、あなたのCustomerテーブルにすでに存在しているので、エラーが発生したと思います。また、SUMMARIZEがDAX式で使用されているような集約なしで動作するかどうかはわかりません。

EVALUATE 
(
    SELECTCOLUMNS (
     'Customer', 
     "CustomerId", 'Customer'[CustomerId], 
     "Type", 'Customer'[Type], 
     "DiscountType", IF ('Customer'[Status] = "VIP", 'Customer'[DiscountType], BLANK()) 
    ) 
) 

がUPDATE: OPが使用されるバージョンはSELECTCOLUMNS機能をサポートしていないSSAS 2014でのコメントを経由して伝えます

はこの表現を試してみてください。

期待通りの結果を得るには、SUMMARIZEADDCOLUMNS関数の組み合わせを使用できます。

EVALUATE 
(
    SUMMARIZE (
     ADDCOLUMNS (
      ADDCOLUMNS (
       DISTINCT (Customer[CustomerID]), 
       "Type", CALCULATE (VALUES (Customer[Type])), 
       "Status", CALCULATE (VALUES (Customer[Status])), 
       "DiscountType1", CALCULATE (VALUES (Customer[DiscountType])) 
      ), 
      "DiscountType", IF ([Status] = "VIP", [DiscountType1], BLANK()) 
     ), 
     [CustomerId], 
     [Type], 
     [DiscountType] 
    ) 
) 

これはテストされていませんが動作するはずです。これが役立つ場合はお知らせください。

+0

SELECTCOLUMNSを使用しようとしましたが、エラーで失敗しました。名前 'SELECTCOLUMNS'を解決できませんでした。有効な表または関数名ではありません。 SSASバージョン2014はそのバージョンで動作しますか? – Bushwacka

+0

@ Bushwacka、私は2014年版でサポートされている関数を使って答えを更新しました。 –

関連する問題