Avancerade tekniker: Referera till lagrade värden i variabler

Du kanske vill skapa en analys där den aktuella användarens namn visas i rubriken. Det här kan du göra genom att referera till en variabel.

Du kan referera till olika typer av variabler i dina analyser, infopaneler och åtgärder: session, semantisk modell (datalager), presentation, begäran och global. Innehållskonstruktörer kan själva definiera presentationsvariabler, begäranvariabler och globala variabler, men övriga typer (session och semantisk modell (datalager) definieras åt dig i den semantiska modellen.

Obs! Oracle Analytics har inte stöd för variablerna :user och :password i anslutningsinloggningsuppgifterna för datakällor.

Variabeltyp Definieras i Definieras av Mer information

Session

  • System

  • Icke-system

Semantisk modell

Datamodellskonstruktörer

Sessionsvariabler

Semantisk modell (datalager)

  • Dynamisk

  • Statisk

Semantisk modell

Datamodellskonstruktörer

Om variabler av typen semantisk modell (datalager)

Presentation

Frågor i analyser och på infopaneler

Innehållsförfattare

Presentationsvariabler

Begäran

Frågor i analyser och på infopaneler

Innehållsförfattare

Begäranvariabler

Globala

Analyser

Administratörer

Globala variabler och Skapa globala variabler

Sessionsvariabler

Sessionsvariabler initieras när en användare loggar in.

De här variablerna finns för varje användare under varaktigheten för bläddringssessionen och upphör att gälla när användaren stänger webbläsaren eller loggar ut. Det finns två typer av sessionsvariabler: system och icke-system.

Systemsessionsvariabler

Det finns flera systemsessionsvariabler som du kan använda i rapporter och på infopaneler.

Systemsessionsvariablerna har reserverade namn, så du kan inte använda dem för någon annan typ av variabel.

Systemsessionsvariabel Beskrivning Exempel, SQL-frågevärde (dialogrutan Variabel)

PORTALPATH

Identifierar den standardinfopanel som en användare ser vid inloggning (det går att åsidosätta den här inställningen efter inloggning).

Så här visar du "mydashboard" när en användare loggar in:

 select ‘/shared/_portal/mydashboard’ from dual;

TIMEZONE

Anger standardtidszon för en användare vid inloggning.

En användares tidszon fylls normalt i med utgångspunkt från användarens profil. Användare kan ändra standardtidszon via inställningar (Mitt konto).

Så här anger du tidszonen när en användare loggar in:

select ‘(GMT-08:00) Pacific Time (US & Canada)’ from dual;

DATA_TZ

Anger en förskjutning från den ursprungliga tidszonen för data.

Med den här variabeln kan du konvertera en tidszon så att användare ser den tillämpliga zonen.

Så här konverterar du tidsdata till EST (Eastern Standard Time):

select ‘GMT-05:00’ from dual;

Det här exemplet avser GMT (Greenwich Mean Time) - 5 timmar

DATA_DISPLAY_TZ

Anger tidszonen för visning av data.

Så här visar du EST (Eastern Standard Time):

select ‘GMT-05:00’ from dual;

Det här exemplet avser GMT (Greenwich Mean Time) - 5 timmar

Icke-systemsessionsvariabler

Icke-systemsessionsvariablerna namnges och skapas i den semantiska modellen.

Din datamodellerare kan till exempel skapa en SalesRegion-variabel som initierats till namnet på en användares försäljningsregion vid inloggning.

Om variabler av typen semantisk modell (datalager)

En datalagervariabel (semantisk modell) är en variabel som har ett enskilt värde vid varje tidpunkt.

Datalagervariabler (semantiska modeller) kan vara statiska eller dynamiska. En statisk datalagervariabel (semantisk modell) har ett värde som är beständigt och inte ändras förrän administratören ändrar det. En dynamisk datalagervariabel (semantisk modell) har ett värde som förnyas när data returneras från frågor.

Presentationsvariabler

Du skapar en presentationsvariabel när du skapar en kolumnfråga eller en variabelfråga.

Typ Beskrivning

Kolumnfråga

En presentationsvariabel som skapats som en del av en kolumnfråga är associerad med en kolumn, och de värden den kan anta kommer från kolumnvärdena.

Om du vill skapa en presentationsvariabel som en del av en kolumnfråga måste du välja Presentationsvariabel i fältet Ange en variabel i dialogrutan Ny fråga. Ange ett namn på variabeln i fältet Variabelnamn.

Variabel fråga

En presentationsvariabel som har skapats som en del av en variabel fråga är inte associerad med någon kolumn och du definierar de värden den ha.

Om du vill skapa en presentationsvariabel som en del av en variabel fråga måste du välja Presentationsvariabel i fältet Fråga om i dialogrutan Ny fråga. Ange ett namn på variabeln i fältet Variabelnamn.

En presentationsvariabels värde fylls i av kolumnfrågan eller den variabla frågan den skapades med. Det innebär att varje gång en användare väljer ett eller fler värden i kolumnfråga eller en variabel fråga ställs presentationsvariabelns värde in till det eller de värden användaren väljer.

Begäranvariabler

Med en begäranvariabel kan du åsidosätta värdet hos en sessionsvariabel, men bara under tidslängden för en databasbegäran som initierats från en kolumnfråga. Du kan skapa en begäranvariabel som en del av processen för att skapa en kolumnfråga.

Du kan skapa en begäranvariabel som en del av processen för att skapa en av följande typer av infopanelfrågor:

  • En begäranvariabel som skapas som en del av en kolumnfråga associeras med en kolumn och de värden som den kan hämta kommer från kolumnvärdena.

    Om du vill skapa en begäranvariabel som en del av en kolumnfråga måste du i dialogrutan Ny fråga välja Begäranvariabel i fältet Ange en variabel. Ange namnet på den sessionsvariabel som ska åsidosättas i fältet Variabelnamn.

  • En begäranvariabel som du skapar som del av en variabelfråga associeras inte med en kolumn och du definierar de värden som den kan ha.

    Om du vill skapa en begäranvariabel som en del av en variabelfråga måste du i dialogrutan Ny fråga (eller Redigera fråga) välja Begäranvariabel i fältet Fråga efter. Ange sedan namnet på den sessionsvariabel som ska åsidosättas i fältet Variabelnamn.

Värdet för begäranvariabeln fylls i av den kolumnfråga med vilken den skapades. Det betyder att varje gång då en användare väljer ett värde i kolumnfrågan anges begäranvariabelns värde som det värde användaren väljer. Värdet gäller dock bara från den tidpunkt då användaren trycker på knappen OK för frågan tills analysresultaten returneras till infopanelen.

Vissa systemsessionsvariabler (som USERGUID och ROLES) kan inte åsidosättas av begäranvariabler. Andra systemsessionsvariabler, som DATA_TZ och DATA_DISPLAY_TZ (tidszon) kan åsidosättas om det konfigureras i modelladministrationsverktyget.

Endast strängvariabler och numeriska begäranvariabler stöder flera värden. Alla andra datatyper överför bara det första värdet.

Globala variabler

En global variabel är en kolumn som skapas genom att kombinera en specifik datatyp med ett värde. Värdet kan vara av typen Datum, Datum och tid, Nummer, Text och Tid.

Den globala variabeln utvärderas när analysen exekveras och värdet av den globala variabeln byts i enlighet med det.

Endast användare med rollen BI-tjänsteadministratör kan hantera (lägga till, redigera och ta bort) globala variabler.

Du kan skapa en global variabel när du skapar en analys genom att använda dialogrutan Redigera kolumnformel. Den globala variabeln sparas då i katalogen och blir tillgänglig för alla andra analyser inom ett specifikt klientsystem.

Skapa globala variabler

Du kan spara en beräkning som en global variabel och sedan återanvända den i olika analyser.

  1. Öppna analysen för redigering.
  2. I rutan Valda kolumner klickar du på Alternativ bredvid kolumnnamnet.
  3. Välj Redigera formel för att visa fliken Kolumnformel.
  4. Klicka på Variabel och väljGlobal.
  5. Klicka på Lägg till ny global variabel.
  6. Ange värdet för Namn. Till exempel gv_region, date_and_time_global_variable eller rev_eastern_region_calc_gv.
    Namnet på en global variabel måste vara fullt kvalificerat vid referens till variabeln. Därför är namnprefixtexten "global.variables". Exempel: en global variabel som har angetts för att beräkna intäkter visas i dialogrutan Kolumnformel enligt följande:

    "Basfakta"."1- Intäkt"*@{global.variables.gv_qualified}

  7. Ange värden för Typ och Värde.
    • Om du väljer Datum och tid som datatyp anger du värdet enligt följande exempel: 03/25/2004 12:00:00 AM
    • Om du anger ett uttryck eller en beräkning som ett värde måste du använda datatypen Text enligt följande exempel: "Basfakta"."1- Intäkt"*3,1415
  8. Klicka på OK. Den nya globala variabeln läggs till i dialogrutan Infoga global variabel.
  9. Välj den nya globala variabeln som du nyss skapade och klicka på OK. Dialogrutan Redigera kolumnformel visas med den globala variabeln infogad i rutan Kolumnformel. Kryssrutan Anpassade rubriker väljs automatiskt.
  10. Ange ett nytt namn på den kolumn till vilken du har tilldelat en global variabel för att på ett mer exakt sätt återspegla variabeln.
  11. Klicka på OK.

Syntax för referens till variabler

Du kan referera till variabler i analyser och infopaneler.

Hur du refererar till en variabel beror på uppgiften du utför. I uppgifter där ett fält i en dialogruta visas måste du endast ange variabelns typ och namn (inte hela syntaxen). Det gäller till exempel när du refererar till en variabel i en filterdefinition.

För andra uppgifter, som att referera till en variabel i en rubrikvy, anger du variabelsyntaxen. Vilken syntax du använder beror på typen av variabel enligt beskrivningen i följande tabell.

Typ Syntax Exempel

Session

@{biServer.variables['NQ_SESSION.variablename']}

där variablename är namnet på sessionsvariabeln, till exempel DISPLAYNAME.

@{biServer.variables['NQ_SESSION.SalesRegion']}

Semantisk modell (datalager)

@{biServer.variables.variablename}

eller

@{biServer.variables['variablename']}

där variablename är namnet på variabeln, till exempel prime_begin

@{biServer.variables.prime_begin}

eller

@{biServer.variables['prime_begin']}

Presentation eller begäran

@{variables.variablename}[format]{defaultvalue}

eller

@{scope.variables['variablename']}

där:

variablename är namnet på presentations- eller begäranvariabeln, till exempel MyFavoriteRegion.

(valfritt) format är en formatmask som är beroende av variabelns datatyp, till exempel #,##0, MM/DD/YY hh:mm:ss. (Formatet används inte på standardvärdet.)

(Valfritt) defaultvalue är en konstant eller variabel referens som anger ett värde som ska användas om den variabeln som variablename refererar till inte är ifylld.

scope identifierar variabelns kvalificerare. Du måste ange omfattningen när en variabel används på flera nivåer (analyser, infopanelsidor och infopaneler) och du vill få åtkomst till ett bestämt värde. (Om du inte anger omfattningen är prioritetsordningen analyser, infopanelsidor och sedan infopaneler.)

När du använder en infopanelsfråga med en presentationsvariabel som kan ha flera värden varierar syntaxen beroende på kolumntyp. Flera värden formateras till kommaavgränsade värden och därför används formatsatser på varje värde innan de kopplas samman med kommatecken.

@{variables.MyFavoriteRegion}{EASTERN REGION}

eller

@{dashboard.MyFavoriteRegion}{EASTERN REGION}

eller

@{dashboard.variables['MyFavoriteRegion']}

eller

(@{myNumVar}[#,##0]{1000})

eller

(@{variables.MyOwnTimestamp}[YY-MM-DD hh:mm:ss]{)

eller

(@{myTextVar}{A, B, C})

Globala

@{global.variables.variablename}

där variablename är namnet på den globala variabeln, till exempel gv_region. När du refererar till en global variabel måste du använda det fullt kvalificerade namnet enligt beskrivningen i exemplet.

Namnkonventionen för globala variabler måste följa specifikationerna för ECMA-skriptspråk för JavaScript. Namnet får inte innehålla fler än 200 tecken, och inte innehålla inbäddade blanksteg, reserverade ord eller specialtecken. Om du inte känner till kraven för språket JavaScript bör du använda en tredjepartsreferens

@{global.variables.gv_date_n_time}

Du kan även referera till variabler i uttryck. Riktlinjerna för att referera till variabler i uttryck beskrivs i följande avsnitt:

Sessionsvariabler

Du kan använda följande riktlinjer för att referera till sessionsvariabler i uttryck.

  • Inkludera sessionsvariabeln som ett argument för funktionen VALUEOF.
  • Placera variabelnamnet inom citattecken.
  • Låt sessionsvariabeln föregås av NQ_SESSION och en punkt.
  • Placera NQ_SESSION inom citattecken.
  • Placera både NQ_SESSION-delen och sessionsvariabelnamnet inom parentes.

Exempel:

"Market"."Region"=VALUEOF("NQ_SESSION"."SalesRegion")

Presentationsvariabler

Du kan använda följande riktlinjer för att referera till presentationsvariabler i uttryck.

När du refererar till en presentationsvariabel använder du denna syntax:

@{variablename}{defaultvalue}

där variablename är namnet på presentationsvariabeln och defaultvalue (valfritt) är en konstant eller variabel referens som anger ett värde som ska användas om den variabeln som variablename refererar till inte är ifylld.

Du kan typkonvertera (eller konvertera) variabeln till en sträng eller inkludera flera variabler genom att omsluta hela variabeln med enkla citattecken, till exempel:

'@{user.displayName}'

Om tecknet "@" inte följs av ett "{" behandlas det som ett @-tecken. När du använder en presentationsvariabel som kan ha flera värden, skiljer sig syntaxen beroende på kolumntyp.

Använd följande syntax i SQL för den angivna kolumntypen för att generera giltiga SQL-satser:

  • Text — (@{variablename}['@']{'defaultvalue'})

  • Numeric — (@{variablename}{defaultvalue})

  • Datum/tid - (@{variablename}{timestamp 'defaultvalue'})

  • Datum (endast datum) - (@{variablename}{date 'defaultvalue'})

  • Tid (endast tid) - (@{variablename}{time 'defaultvalue'})

Exempel:

'@{user.displayName}'

Datalagervariabler (semantiska modeller)

Du kan använda följande riktlinjer för att referera till datalagervariabler (semantiska modeller) i uttryck.

  • Inkludera variabeln som ett argument till funktionen VALUEOF.
  • Placera variabelnamnet inom citattecken.
  • Referera till en statisk datalagervariabel (semantisk modell) med namn.
  • Referera till en dynamisk datalagervariabel (semantisk modell) med dess fullt kvalificerade namn.

Exempel:

CASE WHEN "Hour" >= VALUEOF("prime_begin") AND "Hour" < VALUEOF("prime_end") THEN 'Prime Time' WHEN ... ELSE...END