전력 쿼리에서 COALESCE를 수행하려면 어떻게 해야 합니까?
분기 값이 있는 테이블이 있는데 지난 분기처럼 null이 아닌 마지막 값을 제공하는 열을 새로 추가해야 합니다.예를들면
ID | Project | Q1 | Q2 | Q3 | Q4 | Current Quarter Value
1 | bal bal | 23 | 32 | 34 | null | 34
2 | cuz cuz | 43 | 56 | null | null | 56
테이블에 사용자 정의 열을 추가할 때 사용할 수 있는 몇 가지 공식이 있습니다(리본 변환 탭에서 액세스 가능).여기 하나 있습니다.
if [Q4] <> null then [Q4] else if [Q3] <> null then [Q3] else if [Q2] <> null then [Q2] else [Q1]
if 문을 많이 쓰지 않으려면 열을 목록에 추가하고 null 값을 필터링할 수 있습니다.
List.Last(List.Select({[Q1], [Q2], [Q3], [Q4]}, each _ <> null))
null 병합 연산자(??)를 사용해 볼 수 있습니다. 다음 두 줄 모두 반환 효과가 동일합니다.ValueA
무효가 아닌 한, 어떤 경우에.ValueB
반환됩니다.
if ValueA <> null then ValueA else ValueB
ValueA ?? ValueB
특정 사례에 적용되는 필수 코드는 다음과 같습니다.
[Q4] ?? [Q3] ?? [Q2] ?? [Q1]
null 병합 연산자는 Power Query에 새로 추가된 연산자입니다.아직 공식적으로 문서화되지 않았으며 일부 환경에서는 제공되지 않을 수 있습니다.
파워 쿼리 M 언어가 시간이 지남에 따라 발전한 것은 훌륭합니다.그리고 운 좋게도 null 병합 연산자가 도입되었습니다.?로 표시됩니다.
COALESCE를 수행하는 가장 쉬운 방법은 마지막 예제를 사용하는 것입니다.그러나 다음 방법 중 하나를 사용할 수 있습니다.
= null ?? null ?? 1 ?? 2
= List.First( List.RemoveNulls( { null, null, 1, 2 } ) )
= List.First( List.RemoveFirstN( { null, null, 1, 2 }, each _ = null ) )
= List.RemoveFirstN( { null, null, 1, 2 }, each _ = null ){0}
= List.Select( { null, null, 1, 2 }, each _ <> null ){0}
이에 대한 자세한 설명은 https://gorilla.bi/power-query/coalesce/ 에서 확인할 수 있습니다.
건배, 릭
조금 늦었다고 생각하지만, 저는 또한 리스트보다 더 나은 해결책을 찾고 있습니다.첫 번째(목록).Null 제거( {list} )
또는 기본값의 경우:
List.First(목록).Nulls(목록)를 제거합니다.{{list}, {defaultValue} } ) 결합
목록 사용.RemoveNulls는 필요 이상의 작업을 수행하는 것 같아 신경이 쓰였습니다.
다음은 첫 번째 null이 아닌 항목을 제외하고 전체 목록을 처리하지 않는 것으로 나타나는 함수입니다.
병합 = 각 목록.첫째(목록).RemoveFirstN(_, 각 _ = null, null)
언급URL : https://stackoverflow.com/questions/31405094/how-can-i-perform-coalesce-in-power-query
'programing' 카테고리의 다른 글
웹 팜 사이트의 web.config에 machineKey 추가 (0) | 2023.06.14 |
---|---|
MariaDB는 함수 인덱스(함수 기반 인덱스)를 만들 수 있습니까? (0) | 2023.06.09 |
응답 svg xmlns:xlink 식별자가 필요합니다. (0) | 2023.06.09 |
Firebase: 서비스 작업자의 위치 변경 (0) | 2023.06.09 |
사례 및 IN을 사용한 업데이트 - Oracle (0) | 2023.06.09 |