복수열에 같은 처리―Power Query 반복 처리①
3292 단어 PowerBIExcelPowerQuery
하려고 하는 것
후술하는 샘플 테이블에 대해서, 이것의 각 열에 같은 처리를 하자고 하는 것이, 이번 과제입니다.
간단한 예로 100을 곱해 보겠습니다.
샘플 테이블
아래를 상세 편집기에 붙이면 테이블이 됩니다.
샘플
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("ZY7LEcAgCAV74ewBNRo9JimDof82osEPTA46zLo+HhFc4OBu5wF2BCdim8u6O+tz+EgeJCirDhZxe8dgkiYvHo1YjSgsTVGxaKpUtWQFeiXGzXZFm5h/v2cTB4KKath3Mb8=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Column1 = _t, 列1 = _t, 列2 = _t]),
#"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"A", Int64.Type}, {"B", Int64.Type}, {"C", Int64.Type}})
in
#"Changed Type"
↓이런 테이블입니다.
A
B
C
700
800
800
0
200
600
200
800
900
300
200
400
700
300
1000
300
900
400
300
500
100
300
300
800
900
200
1000
100
300
300
1000
800
100
300
600
1000
1000
400
0
800
900
200
출발점 : UI 조작만으로 여러 단계를 만들 수밖에 없다
1열이면, UI의 변환―표준의 버튼을 누를 수 있습니다만, 복수열이 되면, 그레이 아웃해 버립니다.
1열씩 하라고 하는 것 같습니다.
UI 조작 +α로 간다
1열로 한 코드를 열분 복제한다고 해도 있습니다만, 여기는 다른 방법으로 해 봅시다.
라고 하는 것도, 정리해의 곱셈은 할 수 없는데, 제곱근 등 다른 처리라면, 정리해 처리를 할 수 있거나 하기 때문입니다. 그래서 제곱근을 해두고 코드를 다시 쓸 수도 있습니다.
제곱근을 취하다
UI 조작 : 변환 탭 - '숫자 열'그룹의 '지수'-제곱근
↓조작 후의 모습
코드 재작성
{"A", Number.Sqrt, type number}
와 같은 부분의 함수의 개소 Number.Sqrt
를 각각, each _*100
이 _
(언더 바) 곳에, 그 열의 각 값이 인수로서 퍼집니다.↓완성
코드로 작성
UI+α에서는 어쨌든, 각 열에 따라 재작성이 필요합니다.
코드를 제대로 쓰면 반복해서 쓸 필요가 없어집니다.
모든 열을 처리하는 코드
let
Source = t_sample,
Custom1 = Table.TransformColumns(Source,
List.Transform( Table.ColumnNames(Source),each {_,(x)=>x*100} )
)
in
Custom1
포착
위 코드의
Table.ColumnNames(Source)
부분은 열 이름 목록입니다. 이 예라면{"A","B","C"}
그리고 쓰기와 결과는 동일합니다. 이 목록을 다시 작성하여 처리 대상을 좁힐 수 있습니다.
예를 들어, B열을 처리하지 않으려면,
List.RemoveMatchingItems(
Table.ColumnNames(Source),{"B"}
)
하면 됩니다.
↓ 다시 쓴 버전의 모습
Reference
이 문제에 관하여(복수열에 같은 처리―Power Query 반복 처리①), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tanuki_phoenix/items/d46c8ca43794e3b42dd6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)