# Listy pól aplikacji Direct Discovery

Lista pól jest rozdzielaną przecinkami listą 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. Specyfikacja pola może być też aliasem pola. W takiej sytuacji wyrażeniu bazy danych lub kolumnie jest nadawana nazwa pola Qlik Sense.

Nazwy pól mogą być nazwami prostymi lub nazwami cytowanymi. Nazwa prosta zaczyna się od alfabetycznego znaku Unicode, a po niej następuje dowolna kombinacja znaków alfabetu, znaków cyfr lub podkreśleń. Nazwy cytowane zaczynają się od znaku podwójnego cudzysłowu i zawierają dowolną sekwencję znaków. Jeśli nazwa cytowana zawiera znaki podwójnego cudzysłowu, te znaki są reprezentowane przez dwa sąsiadujące znaki podwójnego cudzysłowu.

W nazwach pól Qlik Sense rozróżniana jest wielkość liter. W nazwach pól bazy danych wielkość liter może być uwzględniana lub nie w zależności od bazy danych. Zapytanie Direct Discovery zachowuje wielkość liter wszystkich identyfikatorów i aliasów pól. W poniższym przykładzie alias "MyState" jest używany wewnętrznie w celu przechowywania danych z kolumny "STATEID" bazy danych.

```
DIRECT QUERY Dimension STATEID as MyState Measure AMOUNT from SALES_TABLE;
                
```

```
 
```

To różni się od wyniku instrukcji SQL Select z aliasem. Jeśli alias nie jest cytowany jawnie, wynik zawiera domyślną wielkość liter kolumny zwracanej przez docelową bazę danych. W poniższym przykładzie instrukcja SQL Select do bazy danych Oracle tworzy "MYSTATE," z wszystkimi wielkimi literami jako wewnętrzny alias Qlik Sense, mimo że alias jest pisany literami o różnej wielkości. Instrukcja SQL Select używa zwróconej przez bazę danych nazwy kolumny, która w przypadku bazy danych Oracle cała jest pisana wielkimi literami.

```
SQL Select STATEID as MyState, STATENAME from STATE_TABLE;
                
```

W celu uniknięcia takiego zachowania należy użyć instrukcji LOAD, aby określić alias.

Load STATEID as MyState, STATENAME;   
SQL Select STATEID, STATEMENT from STATE\_TABLE;

W tym przykładzie kolumna "STATEID" jest zapisywana wewnętrznie w aplikacji Qlik Sense jako "MyState".

Wyrażenia skalarne bazy danych mogą być w większości stosowane jako specyfikacje pól. Wywołania funkcji również mogą być używane w specyfikacjach pól. Wyrażenia mogą zawierać stałe logiczne, liczbowe i w postaci ciągów zawartych w pojedynczych cudzysłowach (osadzone pojedyncze cudzysłowy są reprezentowane przez sąsiadujące znaki pojedynczych cudzysłowów).

Przykłady:

DIRECT QUERY

DIMENSION

SalesOrderID, RevisionNumber

MEASURE

SubTotal AS "Sub Total"

FROM AdventureWorks.Sales.SalesOrderHeader;

DIRECT QUERY

DIMENSION

"SalesOrderID" AS "Sales Order ID"

MEASURE

SubTotal,TaxAmt,(SubTotal-TaxAmt) AS "Net Total"

FROM AdventureWorks.Sales.SalesOrderHeader;

DIRECT QUERY

DIMENSION

(2\*Radius\*3.14159) AS Circumference,

Molecules/6.02e23 AS Moles

MEASURE

Num1 AS numA

FROM TableName;

DIRECT QUERY

DIMENSION

concat(region, 'code') AS region\_code

MEASURE

Num1 AS NumA

FROM TableName;

Aplikacja Direct Discovery nie obsługuje użycia agregacji w instrukcjach LOAD. Użycie agregacji może spowodować, że wyniki będą nieprzewidywalne. Instrukcja LOAD, taka jak poniższa, nie powinna być używana:

DIRECT QUERY DIMENSION stateid, SUM(amount\*7) AS MultiFirst MEASURE amount FROM sales\_table;

Funkcja SUM nie powinna znajdować się w instrukcji LOAD.

Aplikacja Direct Discovery nie obsługuje także funkcji Qlik Sense w instrukcjach Direct Query. Na przykład poniższa specyfikacja dla pola DIMENSION kończy się błędem, gdy pole "Mth" jest używane jako wymiar w wizualizacji:

month(ModifiedDate) as Mth