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.

Uwaga: Instrukcja DIRECT QUERY nie może zawierać klauzul DISTINCT ani GROUP BY.

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"')
Uwaga: Następujące terminy są używane jako słowa kluczowe i dlatego w postaci bez cudzysłowów nie mogą być używane jako nazwy kolumn ani pól: and, as, detach, detail, dimension, distinct, from, in, is, like, measure, native, not, or, where

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.

Zob.: Listy pól aplikacji Direct Discovery

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 QlikView.

DIRECT QUERY DIMENSTION Dim1, Dim2 MEASURE Num1, Num2, Num3 FROM TableName ;
 

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).

Uwaga: Instrukcje DIRECT QUERY są zapisywane bezpośrednio w edytorze skryptów. W celu uproszczenia konstruowania instrukcji DIRECT QUERY można wygenerować instrukcję SELECT z powiązania między danymi, a następnie przeprowadzić edycję wygenerowanego skryptu, aby zmienić ją w instrukcję DIRECT QUERY.
Na przykład instrukcja 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;