데이터 랭글링에 대한 파워 쿼리의 변환 함수
적용 대상: Azure Data Factory Azure Synapse Analytics
팁
기업용 올인원 분석 솔루션인 Microsoft Fabric의 Data Factory를 사용해 보세요. Microsoft Fabric은 데이터 이동부터 데이터 과학, 실시간 분석, 비즈니스 인텔리전스 및 보고에 이르기까지 모든 것을 다룹니다. 무료로 새 평가판을 시작하는 방법을 알아봅니다!
Azure Data Factory의 데이터 랭글링를 사용하면 파워 쿼리 M
스크립트를 데이터 흐름 스크립트로 변환하여 클라우드 스케일에서 코드 없는 신속한 데이터 준비 및 랭글링을 수행할 수 있습니다. ADF는 파워 쿼리 온라인과 통합되며 파워 쿼리 M
함수를 데이터 흐름 Spark 인프라를 사용하여 Spark 실행을 통해 데이터 랭글링에 사용할 수 있도록 합니다.
현재 모든 파워 쿼리 M 함수가 제작 중에도 사용할 수 있는 데이터 랭글링을 지원하는 것은 아닙니다. 매시업을 빌드하는 동안 함수가 지원되지 않으면 다음과 같은 오류 메시지가 표시됩니다.
UserQuery : Expression.Error: The transformation logic is not supported as it requires dynamic access to rows of data, which cannot be scaled out.
다음은 지원되는 파워 쿼리 M 함수 목록입니다.
열 관리
- 선택: Table.SelectColumns
- 제거: Table.RemoveColumns
- 이름 바꾸기: Table.RenameColumns, Table.PrefixColumns, Table.TransformColumnNames
- 다시 정렬: Table.ReorderColumns
행 필터링
M 함수 Table.SelectRows를 사용하여 다음 조건에 따라 필터링합니다.
- 같음 및 같지 않음
- 숫자, 텍스트 및 날짜 비교(DateTime은 제외)
- 숫자 정보(예: Number.IsEven/Odd)
- Text.Contains, Text.StartsWith 또는 Text.EndsWith를 사용하는 텍스트 포함
- 모든 'IsIn' Date 함수를 포함하는 날짜 범위
- and, or 또는 not 조건을 사용한 조합
열 추가 및 변환
M 함수 Table.AddColumn, Table.TransformColumns, Table.ReplaceValue, Table.DuplicateColumn은 열을 추가하거나 변환합니다. 다음은 지원되는 변환 함수입니다.
- 수치 연산
- 텍스트 연결
- 날짜 및 시간 산술 연산(산술 연산자, Date.AddDays, Date.AddMonths, Date.AddQuarters, Date.AddWeeks, Date.AddYears)
- 기간을 날짜 및 시간 산술 연산에 사용할 수 있지만 싱크에 쓰기 전에 다른 형식으로 변환해야 합니다(산술 연산자, #duration, Duration.Days, Duration.Hours, Duration.Minutes, Duration.Seconds, Duration.TotalDays, Duration.TotalHours, Duration.TotalMinutes, Duration.TotalSeconds).
- 대부분의 표준, 공학 및 삼각 수치 함수(Number.Factorial, Number.Permutations 및 Number.Combinations를 제외하고 연산, 반올림 및 삼각 아래에 있는 모든 함수)
- 대체(Replacer.ReplaceText, Replacer.ReplaceValue, Text.Replace, Text.Remove)
- 위치 텍스트 추출(Text.PositionOf, Text.Length, Text.Start, Text.End, Text.Middle, Text.ReplaceRange, Text.RemoveRange)
- 기본 텍스트 서식(Text.Lower, Text.Upper, Text.Trim/Start/End, Text.PadStart/End, Text.Reverse)
- Date/Time 함수(Date.Day, Date.Month, Date.Year Time.Hour, Time.Minute, Time.Second, Date.DayOfWeek, Date.DayOfYear, Date.DaysInMonth)
- If 식(그러나 분기에 일치하는 형식이 있어야 함)
- 행 필터를 논리적 열로
- 숫자, 텍스트, 논리, 날짜 및 날짜/시간 상수
테이블 병합/조인
- 파워 쿼리는 중첩된 조인을 생성합니다(Table.NestedJoin, 사용자는 수동으로 Table.AddJoinColumn을 쓸 수 있음). 그러면 사용자가 중첩된 조인 열을 중첩되지 않은 조인으로 확장해야 합니다(Table.ExpandTableColumn, 다른 컨텍스트에서는 지원되지 않음).
- M 함수 Table.Join은 직접 쓸 수 있으므로 추가 확장 단계가 필요하지 않지만, 사용자는 조인된 테이블 간에 중복된 열 이름이 없는지 확인해야 합니다.
- 지원되는 조인 종류: Inner, LeftOuter, RightOuter, FullOuter
- Value.Equals 및 Value.NullableEquals 값 모두 키 같음 비교자로 지원됩니다.
그룹 기준
Table.Group을 사용하여 값을 집계합니다.
- 집계 함수와 함께 사용해야 합니다.
- 지원되는 집계 함수: List.Sum, List.Count, List.Average, List.Min, List.Max, List.StandardDeviation, List.First, List.Last
정렬
Table.Sort를 사용하여 값을 정렬합니다.
행 축소
상위 행 유지 및 제거, 범위 유지(해당하는 M 함수, 개수만 지원하고 조건은 지원하지 않음: Table.FirstN, Table.Skip, Table.RemoveFirstN, Table.Range, Table.MinN, Table.MaxN)
지원되지 않는 알려진 함수
함수 | 상태 |
---|---|
Table.PromoteHeaders | 지원되지 않습니다. 데이터 세트에서 "첫 행을 머리글로"를 설정하여 동일한 결과를 얻을 수 있습니다. |
Table.CombineColumns | 직접 지원되지 않지만 지정된 두 열을 연결하는 새 열을 추가하여 달성할 수 있는 일반적인 시나리오입니다. 예: Table.AddColumn(RemoveEmailColumn, "Name", each [FirstName] & " " & [LastName]) |
Table.TransformColumnTypes | 대부분의 경우에 지원됩니다. 지원되지 않는 시나리오: 문자열을 통화 형식으로 변환하고, 문자열을 시간 형식으로 변환하고, 문자열을 백분율 형식으로 변환하고, 로캘을 사용하여 변환합니다. |
Table.NestedJoin | 조인을 수행하면 유효성 검사 오류가 발생합니다. 제대로 작동하려면 열을 확장해야 합니다. |
Table.RemoveLastN | 하위 행 제거는 지원되지 않습니다. |
Table.RowCount | 지원되지 않지만 값 1을 포함하는 사용자 지정 열을 추가한 다음, List.Sum을 사용하여 해당 열을 집계하여 달성할 수 있습니다. Table.Group은 지원됩니다. |
행 수준 오류 처리 | 행 수준 오류 처리는 현재 지원되지 않습니다. 예를 들어, 열에서 숫자가 아닌 값을 필터링하려면 한 가지 방법은 텍스트 열을 숫자로 변환하는 것입니다. 변환에 실패하는 모든 셀은 오류 상태가 되며 필터링해야 합니다. 이 시나리오는 스케일 아웃 M에서 가능하지 않습니다. |
Table.Transpose | 지원되지 않음 |
M 스크립트 해결 방법
SplitColumn
길이 및 위치별 분할에 대한 대안은 아래에 나열되어 있습니다.
- Table.AddColumn(소스, "첫 번째 문자", 각 Text.Start([Email], 7), 텍스트 입력)
- Table.AddColumn(#"첫 번째 문자 삽입", "텍스트 범위", 각 Text.Middle([Email], 4, 9), 텍스트 입력)
이 옵션은 리본의 추출 옵션에서 액세스할 수 있습니다.
Table.CombineColumns
- Table.AddColumn(RemoveEmailColumn, "이름", 각 [FirstName] & " " & [LastName])
피벗
- PQ 편집기에서 피벗 변환을 선택하고 피벗 열을 선택합니다.
- 다음으로 값 열과 집계 함수를 선택합니다.
- 확인을 클릭하면 피벗된 값으로 업데이트된 데이터가 편집기에 표시됩니다.
- 변환이 지원되지 않을 수 있다는 경고 메시지도 표시됩니다.
- 이 경고를 편집하려면 PQ 편집기를 사용하여 수동으로 피벗 목록을 확장합니다.
- 리본에서 고급 편집기 옵션 선택
- 수동으로 피벗된 값 목록 확장
- List.Distinct()를 다음과 같은 값 목록으로 바꿉니다.
#"Pivoted column" = Table.Pivot(Table.TransformColumnTypes(#"Changed column type 1", {{"genres", type text}}), {"Drama", "Horror", "Comedy", "Musical", "Documentary"}, "genres", "Rating", List.Average)
in
#"Pivoted column"
날짜/시간 열 서식 지정
파워 쿼리 ADF를 사용할 때 날짜/시간 형식을 설정하려면 다음 설정에 따라 형식을 설정합니다.
- 파워 쿼리 UI에서 열을 선택하고 형식 > 날짜/시간 변경을 선택합니다.
- 경고 메시지가 표시됩니다.
- 고급 편집기를 열고
TransformColumnTypes
를TransformColumns
로 변경합니다. 입력 데이터를 기반으로 형식과 문화권을 지정합니다.
#"Changed column type 1" = Table.TransformColumns(#"Duplicated column", {{"start - Copy", each DateTime.FromText(_, [Format = "yyyy-MM-dd HH:mm:ss", Culture = "en-us"]), type datetime}})
관련 콘텐츠
ADF에서 데이터 랭글링 파워 쿼리를 만드는 방법에 대해 알아보세요.