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 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 QlikView 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 wykresie.
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. 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.
Składnia zapytań NATIVE 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 NATIVE dla źródła danych jest obsługiwana:
- Jako wyrażenia pola w klauzulach DIMENSION i MEASURE.
- Jako treść klauzuli WHERE
Przykłady:
DIRECT QUERY
DIMENSION Dim1, Dim2
MEASURE
NATIVE ('X % Y') AS X_MOD_Y
FROM TableName;
DIRECT QUERY
DIMENSION Dim1, Dim2
MEASURE X, Y
FROM TableName
WHERE 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 QlikView. Specyfikacja pola może być też aliasem pola. W takiej sytuacji wyrażeniu bazy danych lub kolumnie jest nadawana nazwa pola QlikView. |
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.Pola Dim1 i Dim2 zostaną wczytane do zestawu danych QlikView.
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 przypadkach pola DIMENSION zawierają dane tekstowe, takie jak nazwiska lub numery kont. Tych pól nie można sumować, ale można je policzyć: count(Dim1).
Przykład dotyczący instrukcji SELECT:
SQL SELECT
SalesOrderID,
RevisionNumber,
OrderDate,
SubTotal,
TaxAmt
FROM MyDB.Sales.SalesOrderHeader;
może zostać zmieniona w następującą instrukcję DIRECT QUERY:
DIRECT QUERY
DIMENSION
SalesOrderID,
RevisionNumber
MEASURE
SubTotal,
TaxAmt
DETAIL
OrderDate
FROM MyDB.Sales.SalesOrderHeader;