Direct Query
Instrukcja DIRECT QUERY umożliwia uzyskanie dostępu do tabel za pośrednictwem połączenia ODBC lub OLE DB przy użyciu funkcji aplikacji Direct Discovery.
Składnia:
DIRECT QUERY DIMENSION fieldlist [MEASURE fieldlist] [DETAIL fieldlist] FROM tablelist
[WHERE where_clause]
Słowa kluczowe DIMENSION, MEASURE i DETAIL mogą być używane w dowolnej kolejności.
Klauzule słów kluczowych DIMENSION i FROM są wymagane we wszystkich instrukcjach DIRECT QUERY. Słowo kluczowe FROM musi poprzedzać słowo kluczowe DIMENSION.
Pola określane bezpośrednio po słowie kluczowym DIMENSION są ładowane do pamięci i mogą być używane w celu tworzenia asocjacji między danymi w pamięci i danymi aplikacji Direct Discovery.
Przy użyciu słowa kluczowego MEASURE można określić słowa, które aplikacja Qlik Sense rozpoznaje na „poziomie meta”. Rzeczywiste dane pola miary istnieją tylko w bazie danych podczas procesu ładowania danych. Są one pobierane doraźnie w zależności od wyrażeń wykresu używanych w wizualizacji.
Zwykle pola zawierające wartości dyskretne, które będą używane jako wymiary, powinny być ładowane za pomocą słowa kluczowego DIMENSION, a liczby, które będą używane tylko w agregacjach, powinny być wybierane za pomocą słowa kluczowego MEASURE.
Pola DETAIL udostępniają informacje lub szczegóły, na przykład pola komentarzy, które użytkownik może wyświetlać w tabeli pozwalającej na drążenie do szczegółów. Pola DETAIL nie mogą być używane w wyrażeniach wykresu.
Domyślnie instrukcja DIRECT QUERY działa niezależnie od źródła danych w przypadku źródeł danych, które obsługują SQL.SQL Z tego powodu ta sama instrukcja DIRECT QUERY może być używana dla różnych baz danych SQL bez zmian. Aplikacja Direct Discovery generuje w razie potrzeby zapytania właściwe dla bazy danych.
Rodzima składnia zapytań może być używana, gdy użytkownik zna bazę danych, której dotyczą zapytania, i zamierza użyć rozszerzeń SQL właściwych dla tej bazy danych. Składnia rodzima dla źródła danych jest obsługiwana:
- Jako wyrażenia pola w klauzulach DIMENSION i MEASURE.
- Jako treść klauzuli WHERE
Przykłady:
DIMENSION Dim1, Dim2MEASURENATIVE ('X % Y') AS X_MOD_Y
DIMENSION Dim1, Dim2MEASURE X, YFROM TableNameWHERE NATIVE ('EMAIL MATCHES "\*.EDU"')
Argumenty:
Argument | Opis |
---|---|
fieldlist |
Rozdzielana przecinkami lista specyfikacji pól, fieldname {, fieldname}. Specyfikacja pola może być nazwą pola. W takiej sytuacji ta sama nazwa będzie używana jako nazwa kolumny bazy danych i nazwa pola Qlik Sense. Specyfikacja pola może być też aliasem pola. W takiej sytuacji wyrażeniu bazy danych lub kolumnie jest nadawana nazwa pola Qlik Sense. |
tablelist |
Lista nazw tabel lub widoków w bazie danych, z której dane będą ładowane. Zwykle są to widoki, które zawierają wynik operacji JOIN wykonywanej w bazie danych. |
where_clause |
Pełna składnia klauzul WHERE bazy danych nie została zdefiniowana w niniejszej publikacji, ale większość „relacyjnych wyrażeń” SQL jest dozwolona — między innymi stosowanie wywołań funkcji, operator LIKE dla ciągów znaków, IS NULL i IS NOT NULL, z kolei operator IN. BETWEEN nie jest uwzględniony. NOT jest operatorem jednoelementowym w przeciwieństwie do modyfikatora w niektórych słowach kluczowych. Przykłady: WHERE x > 100 AND "Region Code" IN ('south', 'west')
WHERE Code IS NOT NULL and Code LIKE '%prospect'
WHERE NOT X in (1,2,3)
Ostatniego przykładu nie można zapisać jako: WHERE X NOT in (1,2,3)
|
Przykład:
W tym przykładzie używana jest tabela bazy danych o nazwie TableName, która zawiera pola Dim1, Dim2, Num1, Num2 i Num3.Dim1 i Dim2 zostaną załadowane do zestawu danych Qlik Sense.
Dim1 i Dim2 będą dostępne do użycia jako wymiary. Num1, Num2 i Num3 będą dostępne do agregacji. Dim1 i Dim2 również są dostępne do agregacji. Typ agregacji, dla których można użyć wymiarów Dim1 i Dim2, jest zależny od ich typów danych. Na przykład w wielu sytuacjach pola DIMENSION zawierają dane w postaci ciągu znaków, takie jak nazwy lub numery kont. Pola te nie mogą być sumowane, ale mogą być liczone: count(Dim1).
Na przykład instrukcję SELECT
SQL SELECT
SalesOrderID,
RevisionNumber,
OrderDate,
SubTotal,
TaxAmt
FROM MyDB.Sales.SalesOrderHeader;
można zmienić w następującą instrukcję DIRECT QUERY:
DIRECT QUERY
DIMENSION
SalesOrderID,
RevisionNumber
MEASURE
SubTotal,
TaxAmt
DETAIL
OrderDate
FROM MyDB.Sales.SalesOrderHeader;