2014-02-24 3 views
2

KDB로 그룹화를하는 동안. 열의 해당 그룹에서 처음으로 널값이 아닌 값을 찾아야합니다.Kdb 첫 번째 null이 아님 값을 찾습니다.

select first b except 0n by a from t 

내가이 작업을 수행 할 수있는 올바른 방법 인 경우 확실하지 않다 :

t:([]a:1 1 1 2;b:0n 1 3 4) 
select first b by a from t 

나는 이것이 달성하는 한 가지 방법을 발견했다. 제안을 제공해주십시오.

답변

1

나에게 그렇게하는 것이 좋은 방법입니다.

두 대안이 포함됩니다 :

select first b where not null b by a from t 

장점은 특정 열 유형에 의존하지 않는 것, 어쩌면 더 명확하게 의도를 설명하지만 약간 더 길다. 또는

select b:last fills reverse b by a from t 

일부 테스트를 통해 가장 빠른 방법이었습니다.

kdb에는 항상 여러 가지 방법이 있지만 실제로는 옳고 그른 대답은 아닙니다.

+0

답장을 보내 주신 John에게 감사드립니다. 위의 방법을 알지 못했습니다. 난 한 빨리 작동하는 볼 쿼리 다음 달렸다
t ([] A : 1000000 100; B : 1000000 100?)
메타 t

먼저 B 어디서하지 T를 선택한로부터 의해 0Nj 제외한 제 B를 선택 null b by a from
select b : 마지막으로 반대로 b를 반올림하여 b에서
첫 번째와 두 번째 쿼리가 빠르다가 세 번째처럼 보입니다. 3 번째 시나리오가 더 나은 선택이 될 수있는 시나리오가있을 수 있습니다. – Vikas

관련 문제