2017-01-30 9 views
0

Предположим, у меня есть этот CSV-файл:Как заставить Apache Drill понимать явный `NULL` в файле csv?

a,b 
NULL,1 
1,2 

Тогда я пытаюсь делать некоторые запросы:

> SELECT * FROM dfs.`/path/to/foo.csv`; 
+-------+----+ 
| a | b | 
+-------+----+ 
| NULL | 1 | 
| 1  | 2 | 
+-------+----+ 
2 rows selected 

> SELECT * FROM dfs.`/path/to/foo.csv` WHERE a is NULL; 
+----+----+ 
| a | b | 
+----+----+ 
+----+----+ 
No rows selected 

> SELECT * FROM dfs.`/path/to/foo.csv` WHERE a is NOT NULL; 
+-------+----+ 
| a | b | 
+-------+----+ 
| NULL | 1 | 
| 1  | 2 | 
+-------+----+ 
2 rows selected 

> SELECT * FROM dfs.`/path/to/foo.csv` WHERE a > 0; 
Error: SYSTEM ERROR: NumberFormatException: NULL 

Fragment 0:0 

Это кажется Apache Drill рассматривает NULL в виде строки.

Даже если я заменил его пустой строкой (sed -i 's/NULL//g' foo.csv), Apache Drill все еще считает, что эти значения не равны нулю.

Есть ли способ учесть это NULL (или пустое значение) как ... хорошо ... null?

Я использую последнюю версию выпуска: 1.9.0.

ответ

1

Абсолютно вы можете!

  1. Откройте консоль на http://[your Drillbit ф]: 8047 и нажмите на кнопку «Параметры» в правом верхнем углу.
  2. Найдите «drill.exec.functions.cast_empty_string_to_null» и установите для него значение true.