Ga naar hoofdinhoud

Gegevensbindende uitdrukkingen in On-demand-sjabloon-apps

Gegevensbindingen in een sjabloon-app specificeren welke gegevens van een overeenkomstige selectie-app worden gebruikt voor het formuleren van de query’s die worden ingediend wanneer gegevens in een On-demand-app worden geladen.

De basisvorm van gegevensbindende uitdrukkingen--$(odag_FIELDNAME)--is niet de enige beschikbare methode om uitdrukkingen te binden. Andere prefixen kunnen worden gebruikt om de selecties te verfijnen en om te waarborgen dat de sjabloon-app gegevens correct laadt.

Waarschuwing: Sjabloon-apps die oorspronkelijk zijn gemaakt met de Qlik Sense-uitbreiding voor On-demand App Generation, moeten worden gewijzigd om een groot aantal selecties uit een veld te binden op de wijze zoals hieronder geïllustreerd, te kunnen gebruiken.

Beschikbare gegevensbindende prefixen

De algemene vorm voor prefixen is odag[s|o][n][cnt] waarbij geldt:

  • s - alleen geselecteerde waarden opnemen
  • o - alleen optionele waarden opnemen
  • n - alleen de numerieke versie verzamelen, standaard zonder aanhalingstekens
  • cnt - het aantal waarden invoegen in plaats van werkelijke waarden

De volgende tabel bevat een lijst met alle versies van de beschikbare gegevensbindende prefixen In de voorbeelden wordt uitgegaan van een veld met de naam MyField met 1,2,3 als de geselecteerde waarden (groene waarden) en 4 als een optionele geselecteerde waarde (witte waarde).

Gegevensbindende prefixen
Prefix Beschrijving Voorbeeld Vervangen door
odag_ Vervangen door de geselecteerde (groene) en optionele (witte) waarden. Kiest de tekstversies van de waarden. Dit is de standaard prefix voor tekenreekswaarden. $(odag_MyField) '1','2','3','4'
odagcnt_ Vervangen door het aantal waarden in de bijbehorende odag_-binding. Deze prefix wordt gebruikt voor de optimalisatie van queries. $(odagcnt_MyField) 4
odagn_

Vervangen door de geselecteerde (groene) en optionele (witte) waarden. Kiest de numerieke versies van de waarden. Dit is de standaard prefix voor numerieke waarden.

Opmerking:

Als er in een gegevensmodel geen geselecteerde of optionele waarden van het veld aanwezig kunnen zijn, moet een noValue in de uitdrukking worden opgegeven. Bijvoorbeeld:$(odagn_MyField){"noValue":"-99999"}.

Ga voor meer informatie naar De aanhalingstekens rond waarden en scheidingstekens wijzigen.

$(odagn_MyField) 1,2,3,4
odagncnt_ Vervangen door het aantal waarden in de bijbehorende odagn_-binding. Dit is voor de optimalisatie van queries. $(odagncnt_MyField) 4
odago_

Vervangen door de optionele (witte) waarden. Kiest de tekstversie van de waarden. Dit is voor de optimalisatie van queries.

Het optimaliseren van een grote database.

$(odago_MyField) '4'
odagocnt_ Vervangen door het aantal waarden in de bijbehorende odago_-binding. Dit is voor de optimalisatie van queries. $(odagocnt_MyField) 1
odagon_

Vervangen door de optionele (witte) waarden. Kiest de numerieke versie van de waarden. Dit is voor de optimalisatie van queries.

Het optimaliseren van een grote database.

$(odagon_MyField) 4
odagoncnt_ Vervangen door het aantal waarden in de bijbehorende odagon_-binding. Dit is voor de optimalisatie van queries. $(odagoncnt_MyField) 1
odags_

Vervangen door de geselecteerde (groene) waarden. Kiest de tekstversie van de waarden. Dit is voor de optimalisatie van queries.

Het optimaliseren van een grote database.

$(odags_MyField) '1','2','3'
odagscnt_ Vervangen door het aantal waarden in de bijbehorende odags_-binding. Dit is voor de optimalisatie van queries. $(odagscnt_MyField) 3
odagsn_

Vervangen door de geselecteerde (groene) waarden. Kiest de numerieke versie van de waarden. Dit is voor de optimalisatie van queries.

Het optimaliseren van een grote database.

$(odagsn_MyField) 1,2,3
odagsncnt_ Vervangen door het aantal waarden in de bijbehorende odagsn_-binding. Dit is voor de optimalisatie van queries. $(odagsncnt_MyField) 3
Opmerking:

Lege waarden worden weggefilterd in de tekstversies. Niet-numerieke en NaN-waarden worden weggefilterd in de numerieke versies.

Het optimaliseren van een grote database

De prefixen odags_ en odagsn_ zijn bedoeld voor de optimalisatie van queries. Als er geen selecties aanwezig zijn in de gebonden velden, bevat odag_ alle waarden terwijl odags_ geen waarden bevat. In sommige gevallen is het efficiënter om de prefixen odags_ en odagscnt_ te gebruiken. Hiermee kunt u testen of de set met waarden leeg is. Het volgende is bijvoorbeeld efficiënter als er geen selecties aanwezig zijn in MyField, dan wanneer u alle waarden test in odag_MyField:

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

odags_ kan niet worden gebruikt als er een alternatief veld kan worden geselecteerd in de selectie-app en dat veld geen on-demand-veld is. Als de gebruiker bijvoorbeeld in CountryName selecties maakt, maar de gegevensbindende uitdrukking zich op het gekoppelde veld CountryCode bevindt, kan odags_ niet worden gebruikt. In dit geval kan in plaats daarvan odago_ worden gebruikt. Als er geen waarden aanwezig zijn in een odago_-binding, kan dit betekenen dat alle waarden moeten worden opgenomen of dat er geen waarden moeten worden opgenomen.

Het binden van numerieke waarden

Wanneer de aan de On-demand-app te binden gegevens bestaan uit cijfers in plaats van tekenreeksen, is het handig om het plaatsen van aanhalingstekens uit te schakelen voor de numerieke velden. Als de verkooprecords bijvoorbeeld een numerieke DAY_OF_WEEK-kolom bevatten en u wilt dat de gebruiker van de selectie-app willekeurige combinaties van DAY_OF_WEEK kiest, kunt u de aggregatiequery die voor het laden van de selectie-app wordt gebruikt, uitbreiden door DAY_OF_WEEK in zowel de lijst SELECTals de lijst GROUP BY op te nemen. Als er aanhalingsteken om de DAY_OF_WEEK-waarden staan als deze worden geselecteerd, kan een runtimequery-fout optreden als de database automatische typeconversie van tekenreeks naar numeriek niet ondersteunt.

In deze situatie kunt u een numerieke versie van het suffix van de gegevensbindende uitdrukking gebruiken. Hierdoor wordt de veldbinding gedwongen om de numerieke waarden van de selectie-app te gebruiken in plaats van tekenreekswaarden. De volgende numerieke versies zijn beschikbaar:

  • odagn_
  • odagon_
  • odagsn_

Door het gebruik van numerieke versies, worden de waarden opgehaald uit het numerieke deel in de dubbele waarden waarin geselecteerde waarden worden opgeslagen en bevatten de waarden standaard geen aanhalingstekens.

Vereisen van een bepaald aantal selecties

In sommige situaties kan het nodig zijn dat de On-demand-app-query een specifiek aantal of bereik van waarden voor een specifiek veld bevat. Als de query van de On-demand-app bijvoorbeeld een BETWEEN-clausule bevat om alle verkopen tussen een begin- en einddatum op te halen, kan de bindingsuitdrukking voor het YEARQUARTER-veld een suffix-syntaxis van [2] hebben die vereist dat precies twee waarden worden geselecteerd voor YEARQUARTER, zoals in:

$(odag_YEARQUARTER)[2]

Het On-demand-app-navigatiepunt in de selectie-app blijft uitgeschakeld zolang er niet precies twee waarden van YEARQUARTER zijn geselecteerd. Een bericht wordt weergegeven om aan te geven dat precies twee waarden van YEARQUARTER moeten worden geselecteerd.

Met hoeveelheidsbeperkingen voor selectie maakt u een voorwaardekoppeling tussen de selectie-app en de On-demand-app. Dit is anders dan bindingsuitdrukkingen die geen kwantiteitsbeperkingen gebruiken. Wanneer het script van de sjabloon-app bijvoorbeeld een bindingsuitdrukking bevat zonder een hoeveelheidsbeperking, zoals in:

$(odag_MYFIELD)

is er geen vereiste dat de selectie-app een veld bevat met de naam MYFIELD, noch dat er eventueel geselecteerde waarden van dat veld zijn als dat veld bestaat. Als de selectie-app geen veld bevat met de naam MYFIELD of als de gebruiker gewoon verzuimt om hier selecties uit te maken, kan het On-demand-app-navigatiepunt nog steeds worden ingeschakeld wanneer andere selecties zijn gemaakt om te voldoen aan de voorwaarden van de grenswaarde van het record.

Als aan de andere kant de bindingsuitdrukking luidt:

$(odag_MYFIELD)[1+]

zijn er nu twee vereisten geplaatst op de selectie-app:

  • De selectie-app moet een veld bevatten met de naam MYFIELD.
  • De gebruiker moet minimaal één waarde voor MYFIELD selecteren.

Dit type bindingsuitdrukking moet zorgvuldig worden gebruikt omdat het beperkt welke selectie-apps kunnen worden gebruikt met de sjabloon-app. Gebruik deze hoeveelheidsbeperking alleen voor bindingen van een sjabloon-app als u zeker weet dat u de selectiehoeveelheidsbeperking wilt opleggen aan alle selectie-apps die aan die sjabloon-app zijn gekoppeld.

De On-demand-app-service maakt gebruik van een benadering van tekenreeksvervanging die ongevoelig is voor opmerkingen in het script. Dat betekent dat u alleen bindingsuitdrukkingen in opmerkingen moet gebruiken als u wilt dat deze opmerkingen na het genereren van de app de lijst met gebonden waarden bevatten.

Andere hoeveelheidsbeperkingen zijn mogelijk. De volgende tabel vat de verschillende combinaties van geselecteerde hoeveelheidsbeperkingen samen.

Verschillende combinaties van geselecteerde hoeveelheidsbeperkingen
Beperkingspatroon Selectievereiste
$(odag_YEARQUARTER)[2] Precies 2 waarden van YEARQUARTER moeten worden geselecteerd.
$(odag_YEARQUARTER)[2-4] Tussen 2 en 4 waarden van YEARQUARTER moeten worden geselecteerd.
$(odag_YEARQUARTER)[2+] Minimaal 2 waarden van YEARQUARTER moeten worden geselecteerd.
$(odag_YEARQUARTER)[2-] Maximaal 2 waarden van YEARQUARTER moeten worden geselecteerd.
Opmerking: De controle of aan alle hoeveelheidsbeperkingen in de sjabloon-app is voldaan wordt uitgevoerd tijdens het genereren van de app. Als een hoeveelheidsbeperking wordt geschonden, wordt het verzoek om de app te genereren afgewezen en wordt er een foutbericht weergegeven.

De aanhalingstekens rond waarden en scheidingstekens wijzigen

Als een lijst met waarden van een veld dat is geselecteerd in een selectie-app is ingevoegd in het script van een sjabloon-app, staan de waarden tussen enkele aanhalingstekens en worden ze gescheiden door komma's. Dit zijn de standaardtekens voor aanhalings- en scheidingstekens. Deze waarden kunnen worden gewijzigd in de syntaxis die bij de bindingsinstructie voor elk veld is gevoegd. Bijvoorbeeld:

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

Deze nieuwe waarden worden dan gebruikt wanneer de lijst met bindingswaarden uit de selectie-app worden geformuleerd. Als de geselecteerde waarden bijvoorbeeld de eerste drie maanden van het jaar omvatten, zou de lijst als volgt zijn geconstrueerd:

|January|;|February|;|March|

De standaardwaarden voor de aanhalings- en scheidingstekens werken voor de meeste SQL-standaarddatabases. Ze werken echter mogelijk niet voor sommige SQL-databases en zeker niet voor veel dynamische gegevensbronnen, zoals NoSQL en REST. Voor deze bronnen moet u om de aanhalings- en scheidingstekens te wijzigen deze gegevensbindende uitdrukking toevoegen.

In de volgende tabel zijn de opmaakparameters opgenomen voor het wijzigen van aanhalingstekens en scheidingstekens.

Opmaakparameters
Parameters Standaardwaarde Definitie
citaat

' (enkele aanhalingstekens) voor tekstprefixen

leeg voor numerieke prefixen

Wordt toegevoegd vóór en na elke waarde
scheidingsteken , (komma) Wordt toegevoegd tussen alle waarden
quoteReplace '' (dubbele enkele aanhalingstekens)

Als de waarde niet leeg is en het citaat niet leeg is, worden alle exemplaren van het citaat binnen de waarden vervangen door de specifieke tekenreeks.

Opmerking: quoteReplace wordt niet ondersteund als parameter voor numerieke prefixen zoals odagn_. quoteReplace wordt door numerieke prefixen genegeerd.
noValue (leeg)

Als er voor een veld geen waarden zijn geselecteerd, wordt in plaats daarvan deze waarde gebruikt. Deze parameter is handig wanneer de waarden van een specifiek veld niet in de selectie mogen worden opgenomen.

De waarde moet worden ingesteld op een waarde die niet in de brongegevens aanwezig is. Gebruik voor numerieke waarden bijvoorbeeld een negatieve waarde als alle waarden in de database positief zijn.

Opmerking: Voor waarden zonder aanhalingstekens, moet noValue worden opgegeven indien de geselecteerde waarden van het veld een lege set kunnen zijn.

De volgende tabel bevat de opmaakspecificaties en gegenereerde waarden voor odag_ en odagn_. De gegenereerde ingevoegde waarden zijn gebaseerd op de standaard gegevenswaarden van VAL1, VAL2.

odag_-voorbeeld van opmaakspecificaties en gegenereerde waarden
Opmaakspecificaties Beschrijving Gegenereerde ingevoegde waarden
niet opgegeven

Door komma gescheiden lijst met waarden, geplaatst tussen ' .

'VAL1','VAL2'
{"quote": "", "delimiter": ""} Aaneengeschakelde waarden VAL1VAL2

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

Waarden die tussen X zijn geplaatst en worden gescheiden door Y.  XVAL1XYXVAL2X
{"quote": "XX", "delimiter": "YY"} Waarden die tussen XX zijn geplaatst en worden gescheiden door YY.  XXVAL1XXYYXXVAL2XX
{"quote": "X"} Waarden die tussen X zijn geplaatst en worden gescheiden door , (standaard).  XVAL1X,XVAL2X
{"delimiter": "YY"} Waarden die tussen ' (standaard) zijn geplaatst en worden gescheiden door YY 'VAL1'YY'VAL2'
{"quote": ""} Waarden zonder aanhalingstekens die worden gescheiden door ,. VAL1,VAL2
{"quote": "A", "quoteReplace": "\\A"}

Waarden die tussen X zijn geplaatst en worden gescheiden door een komma (standaard). Een waarde in het veld wordt vervangen door \A.

Opmerking:

In dit voorbeeld is een dubbele \ niet vereist, omdat \ het wisselteken in json-indeling is.

AV\AL1A,AV\AL2A
odagn_-voorbeeld van opmaakspecificaties en gegenereerde waarden
Opmaakspecificaties Beschrijving Gegenereerde ingevoegde waarden
niet opgegeven

Door komma gescheiden lijst met waarden zonder aanhalingstekens. Houd er rekening mee dat de numerieke waarden worden gebruikt.

VAL1,VAL2
{"delimiter": "YY"} Waarden zonder aanhalingstekens die worden gescheiden door YY VAL1YYVAL2
{"quote": "A", "quoteReplace": "\\A"} In tegenstelling tot het prefix odag_ wordt de quoteReplace-parameter genegeerd. AVAL1A,AVAL2A

Individuele waarden verwerken

Als een afzonderlijke verwerking van veldwaarden is vereist, kunt u een uitgelijnde methode gebruiken om waarden te genereren in de variabele Values en een willekeurige verwerking uit te voeren met behulp van Replace of een andere functie. In het onderstaande voorbeeld wordt Replace gebruikt met plaatshouderwaarden.

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;