Gå till huvudinnehåll

Bindningsuttryck i on-demand-mallappar

Databindningar i en mallapp anger vilka data från en motsvarande urvalsapp som ska användas för att formulera frågor som används vid laddning av data i en on-demand-app.

Den grundläggande formen av bindningsuttryck – $(odag_FIELDNAME) – är inte det enda tillgängliga sättet att binda uttryck. Andra prefix kan användas för förfining av urval och för att säkerställa att mallappen laddar data korrekt.

Varning: Mallappar som ursprungligen skapats med komplementet Qlik Sense för On-demand App Generation bör ändras så att de använder metoden som illustreras nedan för bindning av ett stort antal urval från ett fält.

Tillgängliga bindningsprefix

Den allmänna prefixformen är odag[s|o][n][cnt], där:

  • s – bara inkluderar valda värden
  • o – bara inkluderar valfria värden
  • n – väljer den numeriska versionen, som standard utan citattecken
  • cnt – infogar antalet värden istället för själva värdena.

Följande tabell listar alla versioner av de tillgängliga bindningsprefixen. I exemplen förutsätts ett fält med namnet MyField, med 1,2,3 som de valda värdena (gröna värden) och 4 som ett valfritt valt värde (vitt värde).

Bindningsprefix
Prefix Beskrivning Exempel Ersätts med
odag_ Ersätts av de valda (gröna) och valfria (vita) värdena. Väljer textversionen av värdena. Det här är standardprefixet för strängvärden. $(odag_MyField) '1','2','3','4'
odagcnt_ Ersätts av antalet värden i motsvarande odag_-bindning. Det här prefixet används för optimering av frågor. $(odagcnt_MyField) 4
odagn_

Ersätts av de valda (gröna) och valfria (vita) värdena. Väljer den numeriska versionen av värdena. Det här är standardprefixet för numeriska värden.

Observera:

Om datamodellen gör att det inte kan finnas några valda eller valfria värden för fältet, måste ett noValue specificeras i uttrycket. Exempel: $(odagn_MyField){"noValue":"-99999"}.

Mer information finns i Ändra citat- och avgränsningstecken för värde.

$(odagn_MyField) 1,2,3,4
odagncnt_ Ersätts av antalet värden i motsvarande odagn_-bindning. Används för optimering av frågor. $(odagncnt_MyField) 4
odago_

Ersätts av de valfria (vita) värdena. Väljer textversionen av värdena. Används för optimering av frågor.

Optimering för stor databas.

$(odago_MyField) '4'
odagocnt_ Ersätts av antalet värden i motsvarande odago_-bindning. Används för optimering av frågor. $(odagocnt_MyField) 1
odagon_

Ersätts av de valfria (vita) värdena. Väljer den numeriska versionen av värdena. Används för optimering av frågor.

Optimering för stor databas.

$(odagon_MyField) 4
odagoncnt_ Ersätts av antalet värden i motsvarande odagon_-bindning. Används för optimering av frågor. $(odagoncnt_MyField) 1
odags_

Ersätts av de valda (gröna) värdena. Väljer textversionen av värdena. Används för optimering av frågor.

Optimering för stor databas.

$(odags_MyField) '1','2','3'
odagscnt_ Ersätts av antalet värden i motsvarande odags_-bindning. Används för optimering av frågor. $(odagscnt_MyField) 3
odagsn_

Ersätts av de valda (gröna) värdena. Väljer den numeriska versionen av värdena. Används för optimering av frågor.

Optimering för stor databas.

$(odagsn_MyField) 1,2,3
odagsncnt_ Ersätts av antalet värden i motsvarande odagsn_-bindning. Används för optimering av frågor. $(odagsncnt_MyField) 3
Observera:

Tomma värden filtreras bort i textversionerna. Icke-numeriska värden och NaN-värden filtreras bort i de numeriska versionerna.

Optimering för stor databas

Prefixen odags_ och odagsn_ är avsedda för optimering av frågor. När det inte finns några urval i de bundna fälten, inkluderar odag_ alla värden och odags_ inkluderar inga värden. I vissa fall är det mer effektivt att använda prefixen odags_ och odagscnt_. Då kan du testa om värdeuppsättningen är tom. Följande är till exempel mer effektivt när inga urval har gjorts i MyField, än att testa alla värden i odag_MyField:

WHERE ($(odagscnt_MyField)=0 OR MyColumn IN ($(odags_MyField)))

odags_ kan inte användas när ett alternativt fält som inte är ett on-demand-fält kan väljas i urvalsappen. Om användaren till exempel gör urval i CountryName men bindningsuttrycket är på det associerade fältet CountryCode, kan inte odags_ användas. I sådana fall kan odago_ användas istället. Om det inte finns några värden i en odago_-bindning, kan det antingen betyda att alla värden ska inkluderas, eller att inga värden ska inkluderas.

Binda numeriska värden

När data som bundits till on-demand-appen består av siffror i stället för strängar kan det vara praktiskt att inaktivera citattecknen i de numeriska fälten. Om till exempel försäljningsregistret har en numerisk DAY_OF_WEEK-kolumn och du vill att användaren av urvalsappen ska välja godtyckliga kombinationer av DAY_OF_WEEK kan du utöka aggregeringsfrågan som användes för att ladda urvalsappen genom att inkludera DAY_OF_WEEK i både SELECT-listan och GROUP BY-listan. Om det finns citattecken runt DAY_OF_WEEK-värdena när de är valda kan det uppstå fel vid körning av frågan om databasen inte stöder automatisk typkonvertering från sträng till numeriskt.

Du kan hantera den här situationen genom att använda en numerisk version av det bindande uttryckssuffixet. Då tvingas fältbindningen att använda numeriska värden från urvalsappen istället för strängvärden. Följande numeriska versioner är tillgängliga:

  • odagn_
  • odagon_
  • odagsn_

När numeriska versioner används hämtas värdena från den numeriska delen av dualerna som lagrar valda värden, och som standard har värdena inga citattecken.

Kräver ett visst antal urval

I vissa situationer kan det vara nödvändigt att kräva att on-demand-appens fråga innehåller ett visst antal eller intervall av värden för ett specifikt fält. Om till exempel en on-demand-apps urval innehåller en BETWEEN-klausul för att hämta all försäljning mellan start- och slutdatum kan bindningsuttrycket för fältet YEARQUARTER ha en suffixsyntax [2] som kräver att exakt två värden väljs för YEARQUARTER, som här:

$(odag_YEARQUARTER)[2]

On-demand-appnavigeringspunkten i urvalsappen fortsätter vara inaktiverad så länge det inte finns exakt två valda värden för YEARQUARTER. Ett meddelande visas för att indikera att exakt två värden för YEARQUARTER måste väljas.

Urvalsantalets begränsningar skapar en förutsättning för länkning mellan urvalsappen och on-demand-appen. Detta skiljer sig från bindningsuttryck som inte använder kvantitetsbegränsningar. När mallappens skript till exempel innehåller ett bindningsuttryck utan antalsbegränsning, som i

$(odag_MYFIELD)

finns det inget krav på att urvalsappen måste innehålla ett fält med namnet MYFIELD eller att det finns några valda värden i fältet om det finns. Om urvalsappen inte innehåller ett fält som heter MYFIELD, eller om användaren kanske glömmer att göra val från fältet, kan navigeringspunkten i on-demand-appen ändå aktiveras om andra val uppfyller postbegränsningsvillkoret.

Men om bindningsuttrycket är följande:

$(odag_MYFIELD)[1+]

finns det nu två krav på urvalsappen.

  • Urvalsappen måste innehålla ett fält med namnet MYFIELD.
  • Användaren måste välja minst ett värde för MYFIELD.

Denna typ av bindningsuttryck måste användas försiktigt eftersom den begränsar vilka urvalsappar som kan användas med mallappen. Du bör inte använda den här antalsbegränsningen på bindningar i en mallapp om du inte är säker på att du vill ställa det kravet på urvalsantal på samtliga urvalsappar som länkar till den mallappen.

För att utföra databindningsprocessen använder On-demand-app-tjänsten ett sätt att ersätta strängar som inte reagerar på kommentarer i skriptet. Det innebär att du inte bör använda bindningsuttryck i kommentarer såvida du inte vill att de kommentarerna ska innehålla en lista över bundna värden efter appgenerering.

Andra antalsbegränsningar är också möjliga. I följande tabell sammanfattas de olika kombinationerna av urvalsantalsbegränsningar.

Olika kombinationer av urvalsantalsbegränsningar.
Begränsningsmönster Urvalskrav
$(odag_YEARQUARTER)[2] Exakt 2 värden för YEARQUARTER måste väljas.
$(odag_YEARQUARTER)[2-4] Mellan 2 och 4 värden för YEARQUARTER måste väljas.
$(odag_YEARQUARTER)[2+] Minst 2 värden för YEARQUARTER måste väljas.
$(odag_YEARQUARTER)[2-] Högst 2 värden för YEARQUARTER kan väljas.
Observera: Kontrollen för att avgöra om samtliga antalsbegränsningar i mallappen har uppfyllts utförs under app-genereringen. Om en antalsbegränsning bryts avvisas begäran om att generera appen och ett felmeddelande visas.

Ändra citat- och avgränsningstecken för värde

När en lista med värden från ett fält som har valts i en urvalsapp infogas i skriptet för en mallapp, omges värdena av enkla citattecken och avgränsas med kommatecken. Dessa är standardtecken för citat och avgränsare. Dessa värden kan ändras i syntax som läggs till i bindningssatsen för varje fält. Exempel:

$(odag_ORIGIN){"quote": "|", "delimiter": ";"}

Dessa nya värden används sedan för att formulera listan över bindningsvärden som tas från urvalsappen. Om till exempel de valda värdena är årets tre första månader konstrueras listan så här:

|Januari|;|Februari|;|Mars|

Standardvärdena för citat- och avgränsningstecken fungerar för de flesta SQL-databaser av standardtyp. De kanske inte fungerar för vissa SQL-databaser och fungerar inte för många dynamiska datakällor som NoSQL och REST. För dessa källor behöver du lägga till detta bindningsuttryck för att ändra citat- och avgränsningstecken.

I följande tabell beskrivs formatparametrar som används för att ändra citat- och avgränsningstecken.

Formatparametrar
Parameter Standardvärde Definition
quote

' (enkelt citattecken) för textprefix

tomt för numeriska prefix

Läggs till före och efter varje värde
delimiter , (kommatecken) Läggs till mellan alla värden
quoteReplace '' (dubbla enkla citattecken)

När värdet inte är tomt och citatet inte är tomt kommer alla förekomster av citatet inne i värdena att ersättas av den specificerade strängen.

Observera: quoteReplace stöds inte som parameter för numeriska prefix som odagn_. quoteReplace ignoreras av numeriska prefix.
noValue (tomt)

När inga värden har valts för ett fält kommer det här värdet att användas istället. Den här parametern är användbar när det inte kan finnas några värden för ett visst fält i urvalet.

Värdet ska anges som ett värde som inte finns i källdata. För numeriska värden, till exempel, använder du ett negativt värde om alla värden i databasen är positiva.

Observera: För värden utan citattecken måste noValue specificeras om valda värden för fältet kan vara en tom uppsättning.

I följande tabell beskrivs formatspecifikationen och genererade värden för odag_ och odagn_. De genererade infogade värdena baseras på standarddatavärdena VAL1, VAL2.

Exempel på formatspecifikationer och genererade värden för odag_
Formatspecifikation Beskrivning Genererade infogade värden
ingen specifikation

Lista med värden som avgränsas med kommatecken och är omslutna med citattecknet '.

'VAL1','VAL2'
{"quote": "", "delimiter": ""} Konkatenerade värden VAL1VAL2

{"quote": "X", "delimiter": "Y"}

Värden med X före och efter, och med Y som avgränsare.  XVAL1XYXVAL2X
{"quote": "XX", "delimiter": "YY"} Värden med XX före och efter, och med YY som avgränsare.   XXVAL1XXYYXXVAL2XX
{"quote": "X"} Värden med X före och efter, och med , som avgränsare (standard).  XVAL1X,XVAL2X
{"delimiter": "YY"} Värden med ' före och efter (standard), och med YY som avgränsare. 'VAL1'YY'VAL2'
{"quote": ""} Värden utan citattecken, och med , som avgränsare. VAL1,VAL2
{"quote": "A", "quoteReplace": "\\A"}

Värden med A före och efter, och med kommatecken som avgränsare (standard). Värdet A i fältet ersätts med \A.

Observera:

I det här exemplet behövs dubbelt \ eftersom \ är escape-tecknet i json-format.

AV\AL1A,AV\AL2A
Exempel på formatspecifikationer och genererade värden för odagn_
Formatspecifikation Beskrivning Genererade infogade värden
ingen specifikation

Lista med värden som avgränsas med kommatecken och inte omsluts av citattecken. Observera att de numeriska värdena kommer att användas.

VAL1,VAL2
{"delimiter": "YY"} Värden utan citattecken, med YY som avgränsare. VAL1YYVAL2
{"quote": "A", "quoteReplace": "\\A"} Till skillnad från prefixet odag_ kommer parametern quoteReplace att ignoreras. AVAL1A,AVAL2A

Bearbeta individuella värden

När det är nödvändigt att bearbeta individuella fältvärden kan du använda inline-metoden för att generera värden i variabeln Values och utföra valfri bearbetning med Replace eller någon annan funktion. I exemplet nedan används Replace med platshållarvärden.

MyTempBindingData: LOAD * INLINE [VAL $(odag_MyField){"quote": "", "delimiter": "\n"} ]; _TempTable: LOAD Concat(chr(39) & Replace(text, from_str, to_str) & chr(39), ',') as CombinedData Resident MyTempBindingData; LET Values = Peek('CombinedData',0,'_TempTable'); drop table _TempTable; drop table MyTempBindingData;