2016-04-04 26 views
0

Impala'da yeniyim ve bir alanın SUM (X) olduğu bir sorgu yazmaya çalışıyorum ve bu alana bir koşul koymak istiyorum. Bu sorguyu MySQL'de kullandığımda, "HAVING SUM (X) NULL OLDUĞU NULL" "harika çalıştı - Impala'da eşdeğer ne olduğunu bilen var mı?" imzayla eşleşen işlevi: IsNull (STRING) -> AnalysisExceptionCloudera-Impala'da NULL DEĞİLDİR

  • "HAVING SUM (X) IS NOT NULL":

    bu bende ne olduğunu, birkaç yolu denedik.
  • "HAVING SUM (X) NOT NULL" -> AnalysisException: Satırdaki sözdizimi hatası 93: HAVING SUM (X) NOT NULL^Encountered: NULL bekleniyor: BETWEEN, IN, LIKE, REGEXP, RLIKE TARAFINDAN NEDEN OLDU: Özel Durum: Sözdizimi hatası

Benim için bir yanıtım varsa, bunu takdir ediyorum ... Teşekkür ederim!

+1

gönderin ve sorgu örnek Sen NULL karşı = ile doğrudan karşılaştırmak asla – Jared

cevap

-1

IF koşullu işlevini denediniz mi?

HAVING IF(SUM(X) = NULL, FALSE, TRUE) 

Dokümantasyon: http://www.cloudera.com/documentation/archive/impala/2-x/2-1-x/topics/impala_conditional_functions.html

+0

çalıştırıyorsunuz. Bu, SUM'un (X) gerçekte ne olduğuna bakılmaksızın her zaman yanlış olabilir. Örneğin, 'IF (NULL = NULL, 1, 0)' seçeneğini, beklediğiniz gibi 0 ve 1 değil seçin. Öte yandan, 'IF (NULL! = NULL, 1, 0) 'seçeneğini de seçerek 0 değerini verir ve eskiin olumsuzluğunu değil ....' (NULL NULL, 1, 0) ise (NULL değil ise) NULL, 1, 0) 'beklediğim gibi çalışıyorum, burada Impala'nın özel durumu hakkında konuşuyorum. Bu, uygulamadan bağımsızdır, ancak Impala'nın bu açıdan davranışını izler, SQL standardı, inanıyorum. – Mateo

+0

Bu arada, Impala'da, 'IF (expr, false, true) 'ye basit bir alternatif basitçe' '' '' dır (expr) 'dır – Mateo

İlgili konular