복수열에 ​​같은 처리―Power Query 반복 처리①

처음에는 알 수 없으며, 대상이 많을 경우 Excel 워크시트에서 코드를 복제하기도 했습니다. 그런 필요는 없습니다.

하려고 하는 것



후술하는 샘플 테이블에 대해서, 이것의 각 열에 같은 처리를 하자고 하는 것이, 이번 과제입니다.
간단한 예로 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"}
)

하면 됩니다.
↓ 다시 쓴 버전의 모습

좋은 웹페이지 즐겨찾기