programing

전력 쿼리에서 COALESCE를 수행하려면 어떻게 해야 합니까?

testmans 2023. 6. 9. 21:54
반응형

전력 쿼리에서 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

반응형