Gå till huvudinnehåll

Dollarteckenexpansion med variabler

PÅ DEN HÄR SIDAN

Dollarteckenexpansion med variabler

När en skriptvariabel används för att ersätta text inom skriptet eller inom en sats, används syntaxen

$(variablename)      

$(variablename) expanderar till värdet i variabeln. Om variablename inte är angivet blir resultatet en tom sträng.

Om man vill använda en skriptvariabel för numerisk variabelexpansion används följande syntax:

$(#variablename)      

Det resulterar alltid i ett giltigt decimal-kommatal som återspeglar variabelns talvärde, eventuellt med en exponentiell notation (för mycket stora/små tal). Om variablename inte innehåller ett numeriskt värde eller saknas helt expanderas det istället till 0.

Example:  

SET DecimalSep=',';

LET X = 7/2;

Dollarteckenexpansionen $(X) expanderar till 3,5 medan $(#X) expanderar till 3.5.

Example:  

Set Mypath=C:\MyDocs\Files\;

...

LOAD * from $(MyPath)abc.csv;

Data laddas från C:\MyDocs\Files\abc.csv.

Example:  

Set CurrentYear=1992;

...

SQL SELECT * FROM table1 WHERE Year=$(CurrentYear);

Rader med Year=1992 väljs.

Example:  

Set vConcatenate = ; For each vFile in FileList('.\*.txt') Data: $(vConcatenate) LOAD * FROM [$(vFile)]; Set vConcatenate = Concatenate ; Next vFile

I det här exemplet laddas allatxt-filer i katalogen med Concatenate-prefixet. Detta kan behövas om fälten skiljer sig något åt, eftersom auto-konkatenering inte fungerar då. vConcatenate-variabeln är från början satt till en tom sträng, eftersom Concatenate-prefixet inte kan användas på den första laddningen. Om katalogen innehåller tre filer med namnen file1.txt, file2.txt och file3.txt, så kommer LOAD-satsen under de tre iterationerna att expanderas till:

LOAD * FROM[.\file1.txt];

Concatenate LOAD * FROM[.\file2.txt];

Concatenate LOAD * FROM[.\file3.txt];

Expandera variabler i parallella tillstånd

Variabeln har bara ett värde och det används i alla parallella tillstånd. Värdet är detsamma även när du expanderar en variabel, oberoende av var detta görs och objektets tillstånd.

Om variabeln är en beräknad variabel, dvs. definitionen inleds med ett likhetstecken, görs beräkningen i standardtillståndet, om du inte specificerar ett parallellt tillstånd i variabelns definition.

Example:  

Om du har ett tillstånd med namnet MyState och en variabel med namnet vMyVar:

vMyvar: =only({MyState} MyField)

Det är innehållet i variabeldefinitionen, med en explicit referens till det parallella tillståndets namn, som avgör i vilket tillstånd variabelns innehåll ska utvärderas.