Obsługa wartości NULL

Jeśli w rezultacie zapytania w bazie danych lub połączenia między tabelami nie można wygenerować danych dla określonego pola, wynikiem jest z reguły wartość NULL.

Przegląd

Następujące wartości są w logice aplikacji Qlik Sense traktowane jako prawdziwe wartości NULL:

  • wartości NULL zwrócone z połączenia ODBC;

  • wartości NULL utworzone w wyniku wymuszonej konkatenacji tabel w skrypcie ładowania danych;

  • wartości NULL utworzone w wyniku sprzężenia wykonanego w skrypcie ładowania danych;

  • wartości NULL utworzone w wyniku wygenerowania kombinacji wartości pól na potrzeby wyświetlania w oknie tabeli.

Uwaga: Zasadniczo nie można używać tych wartości NULL na potrzeby asocjacji i selekcji — wyjątkiem jest zastosowanie instrukcji NullAsValue.

Więcej informacji o NullAsValue zawiera temat NullAsValue.

Pliki tekstowe z definicji nie mogą zawierać wartości NULL.

Powiązywanie/wybieranie wartości NULL z ODBC

Możliwe jest powiązywanie i wybieranie wartości NULL ze źródła danych ODBC. Zdefiniowano w tym celu zmienną skryptową. Można użyć następującej składni:

SET NULLDISPLAY=<sym>;

Symbol <sym> zastąpi wszystkie wartości NULL ze źródła danych ODBC na najniższym poziomie wprowadzania danych. <sym> może być dowolnym ciągiem.

W celu przywrócenia domyślnej interpretacji tej funkcji należy użyć następującej składni:

SET NULLDISPLAY=;

Uwaga: Użycie zmiennej NULLDISPLAY wpływa jedynie na dane ze źródła danych ODBC.

Jeśli logika aplikacji Qlik Sense ma interpretować wartości NULL zwracane z połączenia ODBC jako pusty ciąg znaków, umieść w skrypcie następującą instrukcję przed pierwszą instrukcją SELECT:

SET NULLDISPLAY=";

Uwaga: W tym przypadku '' to nie cudzysłów, a dwa apostrofy bez żadnych znaków rozdzielających.

Więcej informacji o NullDisplay zawiera temat NullDisplay .

Tworzenie wartości NULL z plików tekstowych

Można zdefiniować symbol, którego wystąpienie w pliku tekstowym lub klauzuli inline będzie interpretowane jako rzeczywista wartość NULL. Użyj następującej instrukcji:

SET NULLINTERPRET=<sym>;

Symbol <sym> będzie interpretowany jako NULL. <sym> może być dowolnym ciągiem.

W celu przywrócenia domyślnej interpretacji tej funkcji użyj:

SET NULLINTERPRET=;

Uwaga: Użycie zmiennej NULLINTERPRET wpływa jedynie na dane z plików tekstowych i klauzul wbudowanych.

Więcej informacji o NullInterpret zawiera temat NullInterpret .

Propagacja wartości NULL w wyrażeniach

Wartości NULL są propagowane w wyrażeniach według kilku reguł logicznych zgodnych z intuicją.

Funkcje

Ogólna zasada jest taka, że funkcje zwracają wartość NULL, jeśli ich parametry wykraczają poza zakres zdefiniowanych wartości działania funkcji.

Przykłady
Wyrażenie Wynik
asin(2) zwraca wartość NULL
log(-5) zwraca wartość NULL
round(A,0) zwraca wartość NULL

Z powyższej reguły wynika, że funkcje zazwyczaj zwracają wartość NULL, jeśli dowolny z parametrów niezbędnych do obliczenia wartości jest równy NULL.

Przykłady
Wyrażenie Wynik
sin(NULL) zwraca wartość NULL
chr(NULL) zwraca wartość NULL
if(NULL, A, B) zwraca wartość B
if(True, NULL, A) zwraca wartość NULL
if(True, A, NULL) zwraca wartość A

Wyjątkiem od tej drugiej reguły są funkcje logiczne sprawdzające typ.

Przykłady
Wyrażenie Wynik
isnull(NULL) zwraca wartość True (-1)
isnum(NULL) zwraca wartość False (0)

Operatory arytmetyczne i działające na ciągach znaków

Jeśli po dowolnej stronie tych operatorów napotykana jest wartość NULL, zwracana jest wartość NULL.

Przykłady
Wyrażenie Wynik
A + NULL zwraca wartość NULL
A - NULL zwraca wartość NULL
A / NULL zwraca wartość NULL
A * NULL zwraca wartość NULL
NULL / A zwraca wartość NULL
0% NULL zwraca wartość NULL
0% NULL zwraca wartość NULL
A & NULL zwraca A

Operatory relacyjne

Obsługa wartości NULL po dowolnej stronie operatorów relacyjnych podlega specjalnym zasadom.

Przykłady
Wyrażenie Wynik
NULL (dowolny operator relacyjny) NULL zwraca wartość NULL
A <> NULL zwraca wartość True (-1)
A < NULL zwraca wartość False (0)
A <= NULL zwraca wartość False (0)
A = NULL zwraca wartość False (0)
A >= NULL zwraca wartość False (0)
A > NULL zwraca wartość False (0)