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 exempletladdas alla txt-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 detta används i alla parallella tillstånd. När du expanderar en variabel förändras inte värdet, oberoende av var förändringen sker och objektets tillstånd.

Om variabeln är beräknad, dvs. definitionen inleds med ett likhetstecken, sker beräkningen i standardtillståndet, om du inte specificerar ett parallellt tillstånd i variabeldefinitionen.

Example:  

Följande gäller om du har ett tillstånd med namnet MyState och en variabel med namnet vMyVar:

vMyvar: =only({MyState} MyField)

Variabeldefinitionens innehåll, med en explicit referens till det parallella tillståndets namn, avgör i vilket tillstånd variabelinnehållet kommer att utvärderas.