2017-12-07 5 views
0

私はテーブル内にnull可能な配列列を持っています:Array(Nullable(UInt16))。 arrayExists(またはarrayAll)を使用してこの列にクエリを実行して、特定のしきい値を超える値が含まれているかどうかを確認できますが、配列にnull値が含まれていると例外が発生します。配列にnull値が含まれている場合、どのようにしてarrayExists関数を使用できますか?

例外: arrayExistsはUINT8を返す必要があり、私のクエリは距離がアレイ列である未満でNULL可能(UINT8)

が見つかりました:

SELECT * TracabEvents_ArrayTest arrayExistsから(X - > X> 9、距離)。

ラムダの比較を「(isNotNull(x)and x> 9)」に更新しようとしましたが、まだエラーが発生しています。これらの式でNULLを処理する方法はありますか、まだサポートされていませんか?

おかげ

答えて

1

はarrayExistsでxについてnotEmptyとassumeNotNullを使用して空のリストを持つ行をフィルタリングするための条件を追加します。

SELECT * FROM TracabEvents_ArrayTest WHERE notEmpty(distance) AND arrayExists(x -> assumeNotNull(x) > 9, distance) 
+0

ありがとうMikhail。私は "assumNotNull"に関するドキュメントを見つけることができません。それは新しい機能ですか?私はこの文書を使っていますが、最新ではありませんか? http://clickhouse.readthedocs.io/en/latest/reference_en.html – MoshMcCabe

+1

唯一の説明はここにあります [FunctionsNull](https://github.com/yandex/ClickHouse/blob/master/dbms/src /Functions/FunctionsNull.h#L101) このドキュメントでは、この関数の使用例を説明しますが、説明はありません[https://clickhouse.yandex/docs/en/single](https://clickhouse .yandex/docs/en/single /) この機能がどのバージョンから導入されているかわかりません。 インストールでこのクエリを試しましたか? – Mikhail

+0

今後、そのドキュメントを使用することもあります。それはもっと最新のようです。はい、使用しているバージョン(バージョン1.1.54310)で試してみましたが、動作しています。ありがとう – MoshMcCabe

関連する問題