테이블의 열끼리의 계산을 레코드 함수로
3190 단어 PowerBIExcelPowerQuery
하고 싶은 일
테이블의 특정 여러 열에 동일한 행의 특정 열 값을 곱하고 결과를 새 열로 갖습니다. 이미지는 아래 이미지와 같습니다.
※Power BI 공부회 Power Query 비밀 특훈 「호랑이의 구멍」 #3에서, 이야기가 나온 계산 방법의 재현입니다.
모델 데이터
뭐든지 괜찮습니다만, 이 때, 최근의 마이 붐의 List.Generate()를 사용해, 테이블을 만들었습니다.
모델 데이터
let
ソース = List.Generate(
()=>[index=0,a=100,b=200,c=150,rate=1.5],
each [index]<50,
each [index=[index]+1,a=[a]+10,b=[b]+11,c=[c]+5,rate=[rate]+0.1]
),
テーブルに変換済み = Table.FromList(ソース, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"展開された Column1" = Table.ExpandRecordColumn(テーブルに変換済み, "Column1",
{"index", "a", "b", "c", "rate"}, {"index", "a", "b", "c", "rate"})
in
#"展開された Column1"
↓완성되는 테이블
각 행의 계산 결과를 레코드에 포함하는 열을 추가하는 코드
아래 코드에서 레코드가있는 상태가됩니다. expand는 UI로 하는 편이 열명 붙이는 수고를 생략할 수 있으므로, 쓰지 않습니다.
let
ソース = モデルテーブル,
列追加 = Table.AddColumn(ソース, "A国",
(rec)=>Record.TransformFields(rec,{
{"a",each _*rec[rate]},
{"b",each _*rec[rate]},
{"c",each _*rec[rate]}
})
)
in
列追加
별법 : 열명의 리스트를 건네주어 단번에 계산시켜 보았다
대상으로 하는 열명의 리스트를 인수로 해 주는 것도 할 수 있을 것 같네요.
기분이 좋으면 기사에 추가할지도 모릅니다.
↓ 썼습니다. (추기 2019.4.8)
열이 많거나 반복적으로 이 계산을 하는 장면이 나오면 활약할지도 모릅니다.
이번에는 인수가 섞이지 않기 때문에 보통 each와 _로 썼습니다. (물론 위의 코드와 마찬가지로 수법도 가능)
열 이름 목록을 전달하는 버전
let
ソース = モデルテーブル,
列追加 = Table.AddColumn(ソース, "カスタム",
each List.Accumulate({"a","b","c"},
[],
(state,current)=>
Record.AddField(state,current,
Record.Field(_,current)*_[rate]
)
)
)
in
列追加
보충: List.Accumulate 함수
Power Query의 List.Accumulate 함수는 무엇입니까?
Reference
이 문제에 관하여(테이블의 열끼리의 계산을 레코드 함수로), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tanuki_phoenix/items/d592f4e4aa912305002b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)