열 이름 변경

첫 번째 열의 승격만으로는 잘 판단 할 수없는 경우가 있습니다. 그래서, 열 승격 이외에, 복수 열을 정리해 열명 변경하는 코드를 써 보았습니다.
분해하면, UI에서도 할 수 있을지도 모르지만, 시도하지 않습니다. m(_)m

예 1: 첫 번째 열 이외의 항목을 승격하고 싶습니다.



예를 들어, "폴더에서"메뉴에서 가져와서 아래 그림과 같이 된 경우.

파일명을 열명에 올려 ​​버리면, 이렇게 됩니다.


이것이라고 하면, 선두열을 이용한 처리가 들어가 있는 쿼리는, 「1901.csv」가 선두가 아니게 되었다든가, 지운 순간에, 에러가 되어 버립니다.

예 1의 코드



주의사항
"#Changed Type"・・・대상이 되는 테이블의 이름이 이것이었다고 하는 것뿐입니다. 매번 적절하게 변경하십시오.
List.Skip을 걸은 2번째의 리스트··· 이 예에서는 3행째(0시작으로 2번째)에, 열명으로 하고 싶은 값이 있으므로, {2}로 하고 있습니다.

열 이름 바꾸기 예
= Table.RenameColumns(#"Changed Type",
                    List.Zip({ List.Skip(Table.ColumnNames(#"Changed Type"),1),
                               List.Skip(Record.ToList(#"Changed Type"{2}),1)
                              }
                    )
    )

결과가 이쪽↓


List.Zip() 정보



파괄호로 둘러싼 각 리스트에 대해서, 같은 요소 위치 마다 리스트에 재구성하는 함수입니다.
위의 코드를 분해하여 실행해 본 것이 아래 그림.


예 2 : DateTime 표시가 아니라 하루에 열 이름을 지정하고 싶습니다.



아래 그림과 같이 날짜와 수치가 모두 있으면 날짜는 DateTime의 표시가 되어 버리는 것 같습니다. 이제 그대로 열 이름으로 승격하고 싶지 않네요.


예 2의 코드



# "Changed Type"은 예 1과 마찬가지로 대상이되는 테이블의 이름이므로 적절하게 바꾸십시오.
또, 이 예에서는 1행째(0시작으로 2번째)에, 열명으로 하고 싶은 값이 있으므로, {2}로 하고 있습니다.

열 이름 바꾸기 2
= Table.RenameColumns(#"Changed Type",
                    List.Zip({
                              Table.ColumnNames(#"Changed Type"),
                              List.FirstN(Record.ToList(#"Changed Type"{0}),2)
                              & List.Transform(List.Skip(Record.ToList(#"Changed Type"{0}),2),
                                               each DateTime.ToText(_,"yyyy/M/d")
                                )
                    })
    )

↓완성도(갑자기 작아서 죄송합니다)

좋은 웹페이지 즐겨찾기