2017-05-10 11 views
-1

私はpowerpivotとpowerクエリーを使用してデータウェアハウスから大量のデータを抽出し、特定のルールに基づいて一連のアクションを実行するExcelモデルを開発したいと考えています。if then else文を複数適用する方法は?

私は最初の部分を管理しましたが、私はルールを適用することに苦労しています。要するに、モデルはまずルール1が正しいかどうかチェックし、そうでない場合はルール2が正しいかどうかをチェックし、ルール3とそうでなければチェックする必要があります。

1つ以上のルールが正しい可能性がありますが、適用されるアクションはルールの順序に基づいている必要があります。

一連のif文が機能するかもしれませんが、私はそれを避けることを望んでいます。

ご意見・ご感想をお寄せください。

Rules

答えて

0

は、私は、これは、外部結合を使用することによって、それを行うための一つの方法があると信じています。

あなたが(ルール)自分のルールのテーブルを持っている場合: enter image description here

そして、あなたのレコードのテーブル(レコード): enter image description here

をあなたが各テーブル内のあなたの変数の列をマージして、マージすることができますキーマッチとしてRulesテーブルとRecordsテーブルの新しいマージ済み変数列を使用して、2つのテーブルを結合(結合)します。ここではルールテーブルからMコードです enter image description here

let 
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], 
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Rule #", Int64.Type}, {"Variable 1", type text}, {"Variable 2", type text}, {"Variable 3", type text}, {"Variable 4", type text}, {"Variable 5", type text}}), 
#"Demoted Headers" = Table.DemoteHeaders(#"Changed Type"), 
#"Merged Columns" = Table.CombineColumns(#"Demoted Headers",{"Column2", "Column3", "Column4", "Column5", "Column6"},Combiner.CombineTextByDelimiter(",", QuoteStyle.None),"Merged") 
in 
#"Merged Columns" 

はここだ、その後、最終的には、比較結果(比較)のこのテーブルを取得するには、新しいマージされたテーブルにありますマージされた変数の列を分割レコードテーブルからMコード:

let 
Source = Excel.CurrentWorkbook(){[Name="Table15"]}[Content], 
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Record", type text}, {"Variable 1", type text}, {"Variable 2", type text}, {"Variable 3", type text}, {"Variable 4", type text}, {"Variable 5", type text}}), 
#"Demoted Headers" = Table.DemoteHeaders(#"Changed Type"), 
#"Merged Columns" = Table.CombineColumns(#"Demoted Headers",{"Column2", "Column3", "Column4", "Column5", "Column6"},Combiner.CombineTextByDelimiter(",", QuoteStyle.None),"Merged") 
in 
#"Merged Columns" 

そして、ここで比較表からMコードがあります:

let 
Source = Table.NestedJoin(Records,{"Merged"},Rules,{"Merged"},"NewColumn",JoinKind.FullOuter), 
#"Expanded NewColumn" = Table.ExpandTableColumn(Source, "NewColumn", {"Column1"}, {"NewColumn.Column1"}), 
#"Split Column by Delimiter" = Table.SplitColumn(#"Expanded NewColumn","Merged",Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv),{"Merged.1", "Merged.2", "Merged.3", "Merged.4", "Merged.5"}), 
#"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Merged.1", type text}, {"Merged.2", type text}, {"Merged.3", type text}, {"Merged.4", type text}, {"Merged.5", type text}}), 
#"Promoted Headers" = Table.PromoteHeaders(#"Changed Type", [PromoteAllScalars=true]), 
#"Renamed Columns" = Table.RenameColumns(#"Promoted Headers",{{"Rule #", "Rule # Matched"}}) 
in 
#"Renamed Columns" 
関連する問題