Dela via


Power Fx i datorflöden

Power Fx är lågkodsspråket för att uttrycka logik i hela Microsoft Power Platform. Det är ett allmänt, kraftfullt, deklarativt och funktionellt programmeringsspråk.

Power Fx uttrycks i användarvänlig text. Det är ett lågkodsspråk som beslutsfattare kan arbeta med direkt i ett Excel-liknande formelfält eller Visual Studio Code-textfönster. Den "låga" lågkoden beror på att språket är kortfattat och enkelt, vilket gör vanliga programmeringsuppgifter enkla för både beslutsfattare och utvecklare.

Power Fx möjliggör hela spektrumet av utveckling från skapare utan programmeringskunskaper utan kod till proffskodning för professionella utvecklare. Det gör det möjligt för olika team att samarbeta och spara tid och ansträngningar.

Använda Power Fx i datorflöden

Att använda Power Fx som ett uttrycksspråk i ett datorflöde måste du skapa ett datorflöde och aktivera respektive växlingsknapp när du skapar flödet genom Power Automate för datorkonsolen.

Skärmbild av knappen Aktivera Power Fx

Skillnader i Power Fx-aktiverade flöden

Obs

Varje Power Fx-uttryck måste börja med ett "=" (likamed-tecken).

Om du övergår från flöden där Power Fx är inaktiverat kan du komma att märka vissa skillnader. Här följer några viktiga begrepp att tänka på för att effektivisera upplevelsen när du skapar nya datorflöden:

  • På samma sätt som Excel-formler använder datorflöden som använder Power Fx som uttrycksspråk 1 (en) baserad matrisindexering i stället för 0 (noll) baserade indexeringar. Uttrycket =Index(numbersArray, 1) returnerar exempelvis det första elementet i matrisen numbersArray .

  • Variabelnamn är skiftlägeskänsliga i datorflöden med Power Fx. Till exempel, NewVar är annorlunda än newVar.

  • När Power Fx är aktiverat i ett datorflöde krävs variabelinitiering före användning. Försök att använda en oinitierad variabel i Power Fx-uttryck resulterar i ett fel.

  • Åtgärden Om accepterar ett enda villkorsuttryck. Tidigare godkändes flera operander.

  • Medan flöden utan Power Fx aktiverat har termen "Allmänt värde" för att beteckna en okänd objekttyp, kretsar Power Fx kring ett strikt typsystem. I Power Fx-aktiverade flöden finns det en skillnad mellan dynamiska variabler (variabler vars typ eller värde kan ändras under körning) och dynamiska värden (värden vars typ eller schema bestäms vid körning). Betänk följande exempel för att bättre förstå skillnaden. dynamicVariableÄndrar sin typ under körning från ett Numeric- till ett Boolean-värde, medan dynamicValue under körning fastställs vara ett typlöst objekt, där dess faktiska typ är ett Custom object:

    Skärmbild som visar inställningen för en dynamisk variabel och ett dynamiskt värde.

  • Värden som behandlas som dynamiska värden är:

    • Datatabeller
    • Anpassade objekt med okänt schema
    • Dynamiska åtgärdsutdata (till exempel åtgärden "Kör .NET-skript")
    • Utdata från åtgärden "Kör datorflöde"
    • All åtgärdsutdata utan ett fördefinierat schema (till exempel "Läs från Excel-kalkylblad" eller "Skapa ny lista")
  • Dynamiska värden behandlas på samma sätt som Typlöst Power Fx-objekt och kräver normalt att explicita funktioner konverteras till önskad typ (till exempel Bool() och Text()). För att effektivisera din upplevelse finns det en implicit konvertering när du använder ett dynamiskt värde som åtgärdsindata eller som en del av ett Power Fx-uttryck. Det finns ingen validering under redigeringen, men beroende på det faktiska värdet under körningen uppstår ett körningsfel om konverteringen misslyckas.

  • När en dynamisk variabel används visas ett varningsmeddelande som anger "Uppskjuten typ har angetts". Dessa varningar uppstår på grund av Power Fx strikta krav på starkt skrivna scheman (strängt definierade typer). Dynamiska variabler är inte tillåtna i listor, tabeller eller som en egenskap för postvärden.

  • Genom att kombinera åtgärden Kör Power Fx-uttryck med uttryck som använder funktionerna Collect, Clear, ClearCollect och Patch kan du emulera beteenden som finns i åtgärderna Lägg till artikel i listan och Infoga rad i datatabellen som tidigare inte var tillgängliga för Power Fx-aktiverade datorflöden. Båda åtgärderna är fortfarande tillgängliga, men använd funktionen Samla in när du arbetar med starkt typifierade listor (till exempel en lista med filer). Den här funktionen ser till att listan förblir skriven, detta eftersom du använder åtgärden Lägg till objekt i listan för att konvertera listan till ett objekt utan angiven typ.

Exempel

  • =1 i ett indatafält motsvarar det numeriska värdet 1.
  • = variableName är lika med värdet för variabeln VariableName. 
  • Uttrycket = {'prop':"value"} returnerar ett postvärde som motsvarar ett anpassat objekt.
  • Uttrycket = Table({'prop':"value"}) returnerar en Power Fx-tabell som motsvarar en lista med anpassade objekt. 
  • Uttrycket – = [1,2,3,4] skapar en lista med numeriska värden.
  • Om du vill komma åt värdet från en lista använder du funktionen Index(var, number), där "var" är namnet på listan och talet är positionen för värdet som ska hämtas.
  • Om du vill komma åt en datatabellcell med hjälp av ett kolumnindex använder du funktionen Index(). =Index(Index(DataTableVar, 1), 2) hämtar värdet från cellen på rad 1 i kolumn 2. =Index(DataRowVar, 1) hämtar värdet från cellen på rad 2.
  • Om du vill ta med ett statiskt värde i en indata- eller UI/webbelementväljare, använd följande syntax: Text before ${variable / expression} text after
    • Exempel: The total number is ${Sum(10, 20)}

Obs

Om du vill använda dollartecknet ($) följt av en öppen klammerparentes ({) i ett Power Fx-uttryck eller i syntaxen för en UI/webbelementväljare och inte vill att Power Automate ska behandla det som stränginterpolationssyntaxen, se då till att följa denna syntax: $${ (det första dollartecknet kommer att fungera som ett undantagstecken)

Tillgängliga Power Fx-funktioner

För en fullständig lista över alla tillgängliga funktioner i Power Automate för datorflöden, gå till Formelreferens – datorflöden.

Kända problem och begränsningar

  • Följande åtgärder från standardbiblioteket med automatiseringsåtgärder stöds för närvarande inte:
    • Switch
    • Skiftläge
    • Standardärende
  • Vissa Power Fx-funktioner som presenteras via IntelliK kan för närvarande inte användas i datorflöden. Dessa funktioner visar följande designtidsfel när de används: "Parametern 'Värde': PowerFx-typen "OptionSetValueType" stöds inte."

Nyheter

I det här avsnittet anges vad som har ändrats i varje uppdatering.

2.48

I versionen för september 2024:

  • Återaktivera list- och datatabellmanipuleringsåtgärder som tidigare inte stötts från kategorin Variabler.
  • Inbyggt stöd för typlösa objekt för anpassade objekt, listor och datatabeller. Läs mer om objekt utan angiven typ i datatypen Objekt utan angiven typ.
    • Den här ändringen infördes för att minska designtidsvarningarna och användningen av uppskjutna typer. Objekt utan angiven typ är ett sätt att hantera typer med okänt schema vid designtillfället.
    • I tidigare versioner hanterades dynamiska variabler (variabler vars typ eller värde kan ändras under körning) och dynamiska värden (värden vars typ eller schema fastställs vid körning) på samma sätt. När antingen ett dynamiskt värde eller en dynamisk variabel användes i ett Power Fx-uttryck utlöstes en varning: "Uppskjuten typ har angetts". Dessa varningar inträffade eftersom Power Fx tillämpar strikta typscheman (starkt definierade typer). Från och med den här versionen görs åtskillnad mellan dessa två fall. Dynamiska variabler fortsätter visserligen att generera varningen "uppskjuten typ", men dynamiska värden behandlas nu som typlösa objekt.
    • Alla datatabellvariabler är typlösa, medan anpassade objekt som är resultatet av åtgärden Konvertera JSON till ett anpassat objekt är typlös. Listor kommer att bli typlösa efter det att de har manipulerats med Power Automate för skrivbordsåtgärder från kategorin Variabler.
    • Tidigare genrerade vissa automatiseringsåtgärder från standardbiblioteket med åtgärder, till exempel Läs från Excel, Läs från CSV, Extrahera data från en webb, Extrahera data från fönster, Kör SQL-instruktion och Konvertera JSON till ett anpassat objekt en dynamisk variabel, tillsammans med en varning om "uppskjuten typ". De skapar nu istället en typlös datatabell eller en anpassad objektvariabel utan angiven typ.
  • Power Fx-funktionen Ange har nu aktiverats, men stöds ännu inte fullt ut. Även om den inte kan användas för att ändra en variabels värde direkt kan den användas med ovanstående strukturer för att även uppdatera anpassade objektegenskaper och värden för listor i specifika index (till exempel =Set(Index(Index(DataTable, 1), 1), 42) eller =Set(customObject.property, 17)).
  • Korrigerade ett problem med åtkomst till kapslade listegenskaper för ett objekt i aktiverade Power Fx-flöden.

Varning

I version 2.48 av Power Automate för dator, där det har funnits uppdateringar för Power Fx-aktiverade datorflöden som kan påverka körningen av Power Fx-aktiverade flöden med tidigare versioner. Vi rekommenderar att du testar den här versionen noggrant med dina befintliga Power Fx-flöden.

  • Utdata för underordnade flöden: Var försiktig när du använder utdatavariabler från underordnade flöden i ett Power Fx-aktiverat datorflöde. Detta omfattar utdatavariabler av typerna lista, anpassat objekt och datatabell.
  • Kolumnmatriser med ett enda värde: En matris som skapats med ett uttryck som =[1, 2, 3] resulterar i en kolumnmatris med ett enda värde i Power Fx-aktiverade flöden, vars objekt är objekt med en enda egenskap: {Value: 1}. Försök att komma åt Value-egenskapen för det här objektet (efter att ha ändrat den första matrisen med en åtgärd) resulterar i ett redigeringsfel.
  • Power Fx-funktionsanvändning: I vissa Power Fx-funktioner, till exempel IsEmpty(), accepterade tidigare versioner en dynamisk variabel som argument och utlöste inget valideringsfel. Om du använder en variabel som hanteras som en dynamisk variabel i version 2.48 resulterar det i ett valideringsfel, och det går inte att köra befintliga flöden. Lösningen på detta är att tillämpa korrekt omvandling på det dynamiska (typlösa) värdet. Läs mer om omvandlingsfunktioner i Datatypen Typlöst objekt. Du kan komma att stöta på det här problemet när du redigerar ett flöde och får ett felmeddelande som till exempel "Ogiltig argumenttyp (UntypedObject). Förväntar mig ett tabellvärde i stället." Lös problemet genom att följa felmeddelandena för att konvertera uttrycket till ett giltigt uttryck.
    • Andra exempel på funktioner som kan utlösa ett valideringsfel när du använder en kombination av dynamiska och typifierade variabler är Sum(), Filter() och Concatenate(), samt operatorer som in (till exempel "string" in DynamicValueObject).
  • Variabeljämförelse: På samma sätt som det tidigare nämnda problemet kan det finnas typinkompatibiliteter när du använder jämförelseoperatorer (=, <>, >, < osv.) på uttryck som involverar dynamiska värden. Var försiktig och använd rätt omvandling innan du jämför dynamiska värden.

2.43

I versionen för april 2024:

  • Skiftlägeskänslig. Till exempel är NewVar en annan variabel än newVar.
  • Åtgärden Kör Power Fx-uttryck finns tillgänglig i åtgärdsgruppen Variabler. Kör Power Fx-uttryck gör att du kan utföra körning direkt på datakällor.
  • Power Fx-funktionerna Collect, Clear, ClearCollect stöds i datorflöden.
  • Korrigera Power Fx-funktioner stöds i datorflöden.
  • Variabler och Power Fx uttryck kan användas i UI-element eller webbväljarsyntax.
  • Nu kan värden som är inräknade i syntaxen för väljaren UI/webbelement tas med. För interpolerade strängar kan du använda denna syntax: ${ Power Fx-uttryck }.

Viktigt

I version 2.43 av Power Automate för dator där det har funnits uppdateringar för Power Fx-aktiverade datorflöden som kan påverka körningen av Power Fx-aktiverade datorflöden med tidigare versioner. Specifikt:

  • Ärendekänsliga variabelnamn: Variabelnamn i Power Fx-aktiverade datorflöden som skapats med Power Automate för dator version 2.43 och senare är skiftlägeskänsliga. Power Fx datorflöden som skapats med Power Automate för dator version 2.42 och tidigare tillåts för variabelnamn för skiftlägesokänsliga variabelnamn. Exempelvis refererar NewVar och newVAR till samma variabel. För Power Fx-aktiverade flöden skapade med Power Automate för datorer version 2.42 och tidigare ska du se till att granska och kontrollera att de skapade variablerna är som förväntat.

2.42

I versionen för mars 2024:

  • Nu är IntelliSense-funktioner tillgängliga för aktiverade Power Fx-aktiverade datorflöden.
    • Syntaxfärgning
    • Funktion för automatisk komplettering när du skriver med förslag i realtid
    • Signaturer för Power Fx-funktioner

Kommentar

IntelliSense-funktioner kan användas för uttryck. Om du vill ange ett uttryck använder du likhetstecknet (= ditt uttryck ) i början av respektive indata eller strängtecken (${ ditt uttryck } ).

  • Funktionsväljare
    • Du kan komma åt funktionsväljaren med knappen och sedan använda knappen för att mata in olika indata. Alla Power Fx-funktioner som för närvarande stöds för stationära flöden är tillgängliga där.

2,41

I versionen för februari 2024:

  • Från och med nu betraktas indata som inte börjar med likhetstecknet (=) som texttypvärden. Numeriska och booleska indata måste alltid börja med likhetstecknet.
  • Indata har nu stöd för interpolerade strängar. Om du vill ta med ett statiskt värde i indata, använd följande syntax: Text before ${variable/ expression} text after.
    • Exempel: The total number is ${Sum(10, 20)}

Obs

Om du vill använda strängsyntax utelämnar du likhetstecknet (=) i början av indatan.

2,39

I versionen för december 2023:

  • Om inmatningen inte börjar med likhetstecknet gäller följande regler:
    • Numeriska värden utan mellanslag tolkas som numeriska värden.
    • Sant/Falskt som indata, oavsett skiftläge och utan mellanslag, tolkas som booleska värden.
    • Alla andra inmatningar anses vara texttypvärden.