Förstå tabeller och poster i PowerAppsUnderstand tables and records in PowerApps

Du kan skapa en app med åtkomst till information i Microsoft Excel, SharePoint, SQL Server och flera andra källor som lagrar data i poster och tabeller.You can create an app that accesses information in Microsoft Excel, SharePoint, SQL Server, and several other sources that store data in records and tables. Om du vill arbeta så effektivt som möjligt med den här typen av data, så är det viktigt att du studerar de begrepp som ligger bakom dessa strukturer.To work most effectively with this kind of data, review the concepts that underlie these structures.

  • En post innehåller en eller flera typer av information om en person, en plats eller en sak.A record contains one or more categories of information about a person, a place, or a thing. En post kan t.ex. innehålla en kunds namn, e-postadress och telefonnummer.For example, a record might contain the name, the email address, and the phone number of a single customer. Andra verktyg kan referera till en post som en "rad" eller ett "objekt".Other tools refer to a record as a "row" or an "item."
  • En tabell innehåller en eller flera poster som innehåller samma informationskategorier.A table holds one or more records that contain the same categories of information. En tabell kan t.ex. innehålla namn, e-postadress och telefonnummer för 50 kunder.For example, a table might contain the names, the email addresses, and the phone numbers of 50 customers.

I din app använder du formler för att skapa, uppdatera och ändra poster och tabeller.In your app, you'll use formulas to create, update, and manipulate records and tables. Du kommer förmodligen att läsa och skriva data till en extern datakälla, i form av en utökad tabell.You'll probably read and write data to an external data source, which is an extended table. Dessutom kan du skapa en eller flera interna tabeller, vilka kallas samlingar.In addition, you might create one or more internal tables, which are called collections.

Du kan skapa flera olika formler som använder ett tabellnamn som argument, precis som en formel i Excel kan använda en eller flera cellreferenser som argument.You can build a variety of formulas that take the name of a table as an argument, just as a formula in Excel takes one or more cell references as arguments. Vissa formler i PowerApps returnerar en tabell som visar de övriga argument som du anger.Some formulas in PowerApps return a table that reflects the other arguments that you specify. Du kan t.ex. skapa en formel:For example, you might create a formula:

  • för att uppdatera en post i en tabell genom att ange tabellen som en av flera argument för funktionen Patchto update a record in a table by specifying that table as one of multiple arguments for the Patch function
  • för att lägga till, ta bort och byta namn på kolumner i en tabell genom att ange den tabellen som argument för funktionen AddColumns, DropColumns eller RenameColumns.to add, remove, and rename columns in a table by specifying that table as an argument for the AddColumns, DropColumns, or RenameColumns function. Ingen av dessa funktioner påverkar den ursprungliga tabellen.None of those functions modifies the original table. I stället returnerar funktionen en annan tabell utifrån de argument som du anger.Instead, the function returns another table based on the other arguments that you specify.

TabellelementElements of a table

PosterRecords

Varje post innehåller minst en informationskategori för en person, plats eller sak.Each record contains at least one category of information for a person, a place, or a thing. I exemplet ovan visas en post för varje produkt (Chocolate, Bread, och Water) och en kolumn för varje informationskategori (Price, Quantity on Hand och Quantity on Order).The example above shows a record for each product (Chocolate, Bread, and Water) and a column for each category of information (Price, Quantity on Hand, and Quantity on Order).

I en formel kan du referera till en post i sig, utanför tabellens kontext, genom att använda klammerparenteser.In a formula, you can refer to a record by itself, outside of a table's context, by using curly braces. Exempel: posten {Name: "Strawberries", Price: 7.99} är inte kopplad till någon tabell.For example, this record { Name: "Strawberries", Price: 7.99 } isn't associated with a table.

FältFields

Ett fält är en självständig informationsdel del i en post.A field is an individual piece of information in a record. Du kan visualisera den här typen av fält som ett värde i en viss posts kolumn.You can visualize this sort of field as a value in a column for a particular record.

Precis som när det gäller kontroller måste du referera till en posts fält med hjälp av .Just as with a control, you refer to a field of a record by using the . operator i posten.operator on the record. Exempel: First(Products).Name returnerar fältet Name för den första posten i tabellen Products.For example, First(Products).Name returns the Name field for the first record in the Products table.

Ett fält kan innehålla en annan post eller tabell, så som visas i exemplet med funktionen GroupBy.A field can contain another record or table, as the example for the GroupBy function shows. Du kan kapsla så många post- och tabellnivåer du vill.You can nest as many levels of records and tables as you want.

KolumnerColumns

En kolumn refererar till samma fält för en eller flera poster i en tabell.A column refers to the same field for one or more records in a table. I exemplet ovan har varje produkt ett fält för pris, och det priset finns i samma kolumn för alla produkter.In the above example, each product has a price field, and that price is in the same column for all products. Tabellen ovan innehåller fyra kolumner, som visas vågrätt högst upp:The above table has four columns, shown horizontally across the top:

  • NameName
  • PricePrice
  • Quantity on HandQuantity on Hand
  • Quantity on OrderQuantity on Order

Kolumnens namn indikerar innehållet i kolumnens fält.The column's name reflects the fields in that column.

Alla värden i en kolumn har samma datatyp.All values within a column are of the same data type. I exemplet ovan innehåller kolumnen Quantity on Hand alltid ett tal, och ingen av dess poster kan innehålla någon sträng, som t.ex. "12 units".In the above example, the "Quantity on Hand" column always contains a number and can't contain a string, such as "12 units," for one record. Värdet i ett fält kan även vara tomt.The value of any field may also be blank.

Du är kanske van från andra verktyg av att kalla kolumner för fält.You may have referred to columns as "fields" in other tools.

Obs! För SharePoint- och Excel-datakällor som innehåller kolumnnamn med blanksteg ersätter PowerApps blankstegen med ”_x0020_”.Note: For SharePoint and Excel data sources that contain column names with spaces, PowerApps will replace the spaces with "_x0020_". Till exempel visas "Kolumnens namn" i SharePoint eller Excel som "Kolumnens_x0020_namn" i PowerApps när det visas i datalayouten eller används i en formel.For example, "Column Name" in SharePoint or Excel will appear as "Column_x0020_Name" in PowerApps when displayed in the data layout or used in a formula.

TabellTable

En tabell består av en eller flera poster, som var och en innehåller flera fält som har enhetliga namn för alla poster.A table comprises one or more records, each with multiple fields that have consistent names across the records.

En tabell som lagras i en datakälla eller en samling har ett namn som du använder när du refererar till tabellen och vidarebefordrar detta till funktioner som använder tabeller som argument.Any table that's stored in a data source or a collection has a name, which you use to refer to the table and pass it to functions that take tables as arguments. Tabeller kan också vara resultatet av en funktion eller en formel.Tables can also be the result of a function or a formula.

Som du ser av följande exempel kan du uttrycka en tabell i en formel genom att använda tabellfunktionen med en uppsättning poster som du anger mellan klammerparenteser:As in the following example, you can express a table in a formula by using the Table function with a set of records, which you express in curly braces:

Table({Value: "Strawberry"}, {Value: "Vanilla"})Table( { Value: "Strawberry" }, { Value: "Vanilla" } )

Du kan även definiera en enkolumnstabell med hakparenteser.You can also define a single-column table with square brackets. Ett annat sätt att skriva detta på är:An equivalent way to write the above:

["Strawberry", "Vanilla"][ "Strawberry", "Vanilla" ]

TabellformlerTable formulas

I Excel och PowerApps använder kan du använda formler för att ändra tal och textsträngar på liknande sätt:In Excel and PowerApps, you use formulas to manipulate numbers and strings of text in similar ways:

  • Skriv ett värde i Excel, t.ex. 42, i cell A1, och skriv sedan en formel som A1 + 2 i en annan cell, så att värdet 44 visas.In Excel, type a value, such as 42, in cell A1, and then type a formula, such as A1+2, in another cell to show the value of 44.
  • Ställ in egenskapen Default för Slider142 i PowerApps, och ställ in egenskapen Text för en etikett till Slider1.Value + 2, så visas värdet 44.In PowerApps, set the Default property of Slider1 to 42, and set the Text property of a label to Slider1.Value + 2 to show the value of 44.

I båda fallen ändras det beräknade värdet automatiskt om du ändrar argumentens värden (t.ex. talet i cell A1 eller värdet för Slider1).In both cases, the calculated value changes automatically if you change the values of the arguments (for example, the number in cell A1 or the value of Slider1).

På samma sätt kan du använda formler för att få åtkomst till och hantera data i tabeller och poster.Similarly, you can use formulas to access and manipulate data in tables and records. Du kan använda namn på tabeller som argument i vissa formler, t.ex. Min(Catalog, Price) om du vill visa det lägsta värdet i kolumnen Price i tabellen Catalog.You can use names of tables as arguments in some formulas, such as Min(Catalog, Price) to show the lowest value in the Price column of the Catalog table. Andra formler tillhandahåller hela tabeller som returvärden, t.ex. RenameColumns(Catalog, "Price", "Cost"), som returnerar alla poster från tabellen Catalog, men som ändrar namnet på kolumnen Price till Cost.Other formulas provide whole tables as return values, such as RenameColumns(Catalog, "Price", "Cost"), which returns all the records from the Catalog table but changes the name of the Price column to Cost.

Precis som när det gäller tal så räknas formler som inbegriper tabeller automatiskt om när den underliggande tabellen eller de underliggande posterna ändras.Just as with numbers, formulas that involve tables and records are automatically recalculated as the underlying table or record changes. Om kostnaden för en produkt i tabellen Catalog sjunker under tidigare minimivärde, så ändras returvärdet för formeln Min automatiskt så att det matchar kostnaden.If the cost of a product in the Catalog table is lowered below the previous minimum, the return value of the Min formula will automatically change to match it.

Låt oss se på några enkla exempel.Let's walk through some simple examples.

  1. Lägg till en textgallerikontroll och ställ in dess egenskap Items på namnet på en tabell.Add a Text gallery control, and set its Items property to the name of a table.

    Galleriet visar som standard platshållartext från tabellen TextualGallerySample.By default, the gallery shows placeholder text from a table named TextualGallerySample. Galleriets egenskap Items ställs automatiskt in på den tabellen.The Items property of the gallery is automatically set to that table.

    OBS! Vissa kontroller har ordnats om och förstorats för tydlighetens skull.Note: Some controls have been rearranged and enlarged for illustration purposes.

  2. I stället för att ställa in egenskapen Items till namnet på en tabell, så kan du ställa in den på en formel som inkluderar tabellens namn som ett argument, så som i följande exempel:Instead of setting the Items property to the name of a table, set it to a formula that includes the name of the table as an argument, as in this example:
    Sort(TextualGallerySample, Heading, Descending) Sort(TextualGallerySample, Heading, Descending)

    Den här formeln innehåller funktionen Sort, vilken har namnet på en tabell som sitt första argument och namnet på en kolumn i den tabellen som sitt andra argument.This formula incorporates the Sort function, which takes the name of a table as its first argument and the name of a column in that table as its second argument. Funktionen stöder även ett valfritt tredje argument som anger att du vill sortera data i fallande ordning.The function also supports an optional third argument, which stipulates that you want to sort the data in descending order.

  3. Ställ in egenskapen Items så att den använder formeln från föregående steg som argument och returnerar en tabell, så som i följande exempel:Set the Items property to a formula that takes the formula from the previous step as an argument and returns a table, as in this example:
    FirstN(Sort(TextualGallerySample, Heading, Descending), 2) FirstN(Sort(TextualGallerySample, Heading, Descending), 2)

    I den här formeln använder du funktionen FirstN för att visa ett visst antal poster i en tabell.In this formula, you use the FirstN function to show a particular number of records in a table. Du använder funktionen Sort som det första argumentet för FirstN och ett tal (i det här fallet 2) som det andra argumentet, vilket anger hur många poster som ska visas.You use the Sort function as the first argument to FirstN and a number (in this case, 2) as the second argument, which specifies how many records to show.

    Hela formeln returnerar en tabell som innehåller de två första posterna för tabellen TextualGallerySample, sorterad efter kolumnen Heading i fallande ordning.The entire formula returns a table that contains the first two records of the TextualGallerySample table, sorted by the Heading column in descending order.

Tabellfunktioner och kontrollegenskaperTable functions and control properties

Många funktioner i PowerApps använder namnet på en tabell som argument, skapar en andra tabell som innehåller samma data, hanterar den nya tabellen med de andra argumenten och returnerar sedan resultatet.Many functions in PowerApps take the name of a table as an argument, create a second table that contains the same data, manipulate the new table based the other arguments, and then return the result. Dessa funktioner påverkar inte den ursprungliga tabellen – den fungerar enbart som datakälla.These functions don't modify the original table, even if it's a data source.

  • Sort, Filter - Sorterar och filtrerar poster.Sort, Filter - Sorts and filters records.
  • FirstN, LastN – Returnerar de första N eller sista N posterna i tabellen.FirstN, LastN - Returns the first N or last N records of the table.
  • Abs, Sqrt, Round, RoundUp, RoundDown - Aritmetiska åtgärder på varje post i en enkolumnstabell som resulterar i en enkolumnstabell med resultat.Abs, Sqrt, Round, RoundUp, RoundDown - Arithmetic operations on each record of a single-column table, resulting in a single-column table of results.
  • Left, Mid, Right, Replace, Substitute, Trim, Lower, Upper, Proper - Stränghantering för varje post i en enkolumnstabell som resulterar i en enkolumnstabell med strängar.Left, Mid, Right, Replace, Substitute, Trim, Lower, Upper, Proper - String manipulations on each record of a single-column table, resulting in a single-column table of strings.
  • Len – Returnerar för en kolumn med strängar en enkolumnstabell som innehåller längden för varje sträng.Len - For a column of strings, returns a single-column table that contains the length of each string.
  • Concatenate – Sammanfogar flera kolumner med strängar, vilket resulterar i en enkolumnstabell med strängar.Concatenate - Concatenates multiple columns of strings, resulting in a single-column table of strings.
  • AddColumns, DropColumns, RenameColumns, ShowColumns – Kolumnhantering av tabellen, vilket resulterar i en ny tabell med olika kolumner.AddColumns, DropColumns, RenameColumns, ShowColumns - Column manipulation of the table, resulting in a new table with different columns.
  • Distinct – Tar bort dubblettposter.Distinct - Removes duplicates records.
  • Shuffle – Flyttar runt poster i slumpmässig ordning.Shuffle - Shuffles records into a random order.
  • HashTags - Söker efter hashtaggar i en sträng.HashTags - Searches for hashtags in a string.
  • Errors – Tillhandahåller felinformation när du arbetar med en datakälla.Errors - Provides error information when you work with a data source.

Du kan köra en funktion på en tabell som innehåller flera kolumner, även om funktionen kräver en kolumn som argument.You can run a function on a table that contains multiple columns, even if the function requires a single column as an argument. Om du vill extrahera en kolumn från en tabell med flera kolumner, så använd funktionen ShowColumns som argument för den funktion som du vill använda, så som i följande exempel:To extract a single column from a multi-column table, use the ShowColumns function as an argument for the function that you want to use, as in this example:
Lower(ShowColumns(Products, "Name"))Lower( ShowColumns( Products, "Name" ) )

Den här formeln skapar en enkolumnstabell som innehåller alla data från kolumnen Name i tabellen Products, men den konverterar versaler till gemener.This formula creates a single-column table that contains all the data from the Name column of the Products table but converts any uppercase letters to lowercase letters. Om du anger en tabell som argument för funktionen AddColumns, RenameColumns eller DropColumns, så kan du helt omforma tabellen precis som du vill.If you specify a table as an argument for the AddColumns, RenameColumns, or DropColumns function, you can completely reshape that table however you want.

Om du anger en datakälla som argument för någon av dessa funktioner, så ändrar den posterna i den datakällan och returnerar vanligtvis datakällans nya värden som en tabell.If you specify a data source as an argument for one of these functions, it will modify the records of that data source and, in general, return the data source's new value as a table.

Följande kontroller har egenskaper som är tabeller:The following controls have properties that are tables:

  • Items – Gäller för gallerier och listrutor.Items - Applies to galleries and list boxes. Tabell som visas i galleriet.Table to display in the gallery.
  • SelectedItems – Gäller för listrutor.SelectedItems - Applies to list boxes. Tabell med objekt som användaren har valt.Table of items that the user has selected.

Registrera formlerRecord formulas

Du kan också skapa en formel som beräknar data för en enskild post, använder en enskild post som argument och tillhandahåller en enskild post som returvärde.You can also build a formula that calculates data for an individual record, takes an individual record as an argument, and provides an individual record as a return value. Låt oss gå tillbaka till galleriexemplet ovan och använda egenskapen Gallery1.Selected för att visa information från vilken post som helst i galleriet som användaren väljer.Returning to our gallery example above, let's use the Gallery1.Selected property to display information from whatever record the user selects in that gallery.

  1. Lägg till en knapp och ge dess egenskap OnSelect egenskapen följande formel:Add a button, and set its OnSelect property to this formula:
    Collect( SelectedRecord, Gallery1.Selected )Collect( SelectedRecord, Gallery1.Selected )
  2. Om knappen inte har valts, markerar du den genom att klicka på den, och klicka sedan på den en gång till för att köra formeln.If the button isn't selected, click it to select it, and then click it again to run the formula.
  3. Välj SamlingarArkiv-menyn.In the File menu, select Collections.

Den här formeln returnerar en post som inte bara innehåller data från den markerade posten, utan även från alla kontroller i galleriet.This formula returns a record that includes not only the data from the record that's currently selected in the gallery but also each control in that gallery. Posten innehåller t.ex. både en Body-kolumn som matchar Body-kolumn i den ursprungliga tabellen, och en Body1-kolumn, som representerar den etikett som visar data från den kolumnen.For example, the record contains both a Body column, which matches the Body column in the original table, and a Body1 column, which represents the label that shows the data from that column. Markera tabellikonen i Body1-kolumnen om du vill öka detaljnivån för dessa data.Select the table icon in the Body1 column to drill into that data.

Nu när du har den valda posten kan du extrahera enskilda fält från den med .Now that you have the selected record, you can extract individual fields from it with the . -operatorn.operator.

  1. Gå tillbaka till standardarbetsytan genom att trycka på Esc och lägg sedan till en etikett under galleriet.Press Esc to return to the default workspace, and then add a label below the gallery.
  2. Ställ in etikettens egenskap Text på den här formeln:Set the Text property of the label to this formula:
    Gallery.Selected.HeadingGallery.Selected.Heading

Du har valt egenskapen Selected, som är en post, och sedan extraherat egenskapen Heading från den.You've taken the Selected property, which is a record, and extracted the Heading property from it.

Du kan också använda en post som en generell behållare för relaterade namngivna värden.You can also use a record as a general-purpose container for related named values.

  • Om du bygger en formel runt funktionerna UpdateContext och Navigate, så använd en post för att samla in de kontextvariabler som du vill uppdatera.If you build a formula around the UpdateContext and Navigate functions, use a record to gather the context variables that you want to update.
  • Använd egenskapen Updates på en formulärredigeringskontroll om du vill samla in de ändringar som har gjorts av användaren i ett formulär.Use the Updates property on an Edit form control to gather the changes that have been made by the user in a form.
  • Använd Patch-funktionen om du vill uppdatera en datakälla, men du kan även använda den om du vill sammanfoga poster.Use the Patch function to update a data source but also to merge records.

I dessa fall har posterna aldrig ingått i någon tabell.In these cases, the record was never a part of a table.

Postfunktioner och kontrollegenskaperRecord functions and control properties

Funktioner som returnerar poster:Functions that return records:

  • FirstN, LastN – Returnerar den eller de första posterna i tabellen.FirstN, LastN - Returns the first or last record or records of the table.
  • Lookup – Returnerar den första posten från en tabell som matchar ett eller flera kriterier.Lookup - Returns the first record from a table that matches one or more criteria.
  • Patch – Uppdaterar en datakälla eller sammanfogar poster.Patch - Updates a data source or merges records.
  • Defaults – Returnerar standardvärden för en datakälla.Defaults - Returns the default values for a data source.

Egenskaper som returnerar poster:Properties that return records:

  • Selected – Gäller för gallerier och listrutor.Selected - Applies to galleries and list boxes. Returnerar den för tillfället markerade posten.Returns the currently selected record.
  • Updates – Gäller för gallerier.Updates - Applies to galleries. Sammanställer alla ändringar som en användare gör i ett formulär för inmatning av data.Pulls together all the changes that a user makes in a data-entry form.
  • Update – Gäller för indatakontroller, t.ex. textinmatningskontroller och skjutreglage.Update - Applies to input controls such as text-input controls and sliders. Konfigurerar enskilda egenskaper för galleriet så att de samverkar.Sets up individual properties for the gallery to pull together.

Registrera omfångRecord scope

Vissa funktioner utvärderar en formel för alla poster i en tabell individuellt.Some functions operate by evaluating a formula across all the records of a table individually. Formelns resultat används på olika sätt:The formula's result is used in various ways:

  • Filter, Lookup – Formeln anger om posten ska tas med i resultatet.Filter, Lookup - Formula determines if the record should be included in the output.
  • Sort – Formeln tillhandahåller det värde som posterna ska sorteras efter.Sort - Formula provides the value to sort the records on.
  • Concat – Formeln avgör vilka strängar som ska sammanfogas.Concat - Formula determines the strings to concatenate together.
  • ForAll – Formeln kan returnera vilket värde som helst, eventuellt med en biverkning.ForAll - Formula can return any value, potentially with a side effect.
  • Distinct – Formeln returnerar ett värde som används för att identifiera dubblettposter.Distinct - Formula returns a value, used to identify duplicate records.
  • AddColumns – Formeln innehåller värdet för det fält som har lagts till.AddColumns - Formula provides the value of the added field.
  • Average, Max, Min, Sum, StdevP, VarP – Formeln tillhandahåller de värden som ska sättas samman.Average, Max, Min, Sum, StdevP, VarP - Formula provides the value to aggregate.

I de här formlerna kan du referera till fälten i den post som bearbetas.Inside these formulas, you can reference the fields of the record being processed. Var och en av de här funktionerna skapar ett ”postområde” där formeln utvärderas och där postens fält är tillgängliga som identifierare på toppnivå.Each of these functions creates a "record scope" in which the formula is evaluated, where the fields of the record are available as top-level identifiers. Du kan också referera till kontrollegenskaper och andra värden i hela din app.You can also reference control properties and other values from throughout your app.

Låt oss t.ex. ta en tabell med Products:For example, take a table of Products:

Om du vill fastställa om någon av dessa produkter har efterfrågats mer än vad som finns tillgängligt så gör du så här:To determine if any of any of these products had more requested than is available:

Filter(Products, 'Quantity Requested' > 'Quantity Available')Filter( Products, 'Quantity Requested' > 'Quantity Available' )

Det första argumentet som ska filtreras är tabellen med de poster som ska bearbetas, och det andra argumentet är en formel.The first argument to Filter is the table of records to operate on, and the second argument is a formula. Med Filter skapar du ett postområde för att kunna utvärdera den här formeln i vilken fälten för respektive post är tillgängliga. I det här fallet rör det sig om Product, Quantity Requested och Quantity Available.Filter creates a record scope for evaluating this formula in which the fields of each record are available, in this case Product, Quantity Requested, and Quantity Available. Resultatet av jämförelsen avgör om alla poster ska tas med i funktionens resultat:The result of the comparison determines if each record should be included in the result of the function:

Dessutom kan vi beräkna hur mycket av varje produkt som ska beställas:Adding to this example, we can calculate how much of each product to order:

AddColumns(Filter( Products, 'Quantity Requested' > 'Quantity Available'), "Quantity To Order", 'Quantity Requested' - 'Quantity Available')AddColumns( Filter( Products, 'Quantity Requested' > 'Quantity Available' ), "Quantity To Order", 'Quantity Requested' - 'Quantity Available' )

Här vi lägger till en beräknad kolumn till resultatet.Here we are adding a calculated column to the result. AddColumns har sitt eget postområde som används för att beräkna skillnaden mellan vad som har begärts och vad som är tillgängligt.AddColumns has its own record scope that it uses to calculate the difference between what has been requested and what is available.

Slutligen kan vi begränsa resultattabellen till enbart de kolumner vi är intresserade av:Finally, we can reduce the result table to just the columns that we desire:

ShowColumns( AddColumns( Filter( Products, 'Quantity Requested' > 'Quantity Available' ), "Quantity To Order", 'Quantity Requested' - 'Quantity Available' ), "Product", "Quantity To Order" )ShowColumns( AddColumns( Filter( Products, 'Quantity Requested' > 'Quantity Available' ), "Quantity To Order", 'Quantity Requested' - 'Quantity Available' ), "Product", "Quantity To Order" )

Observera att vi används dubbla citattecken (") på vissa ställen ovan och enkla citattecken (') på andra.Note that in the above, we used double quotes (") in some places and single quotes (') in other places. Enkla citattecken krävs när du refererar till ett objekts värde, t.ex. ett fält eller en tabell, i vilket objektets namn innehåller ett blanksteg.Single quotes are required when referencing the value of an object, such as a field or table, in which the name of the object contains a space. Dubbla citattecken används när vi inte refererar ett objekts värde, men istället talar om det, i synnerhet i situationer i vilka objektet ännu inte finns, som i fallet med AddColumns.Double quotes are used when we are not referencing the value of an object but instead talking about it, especially in situations in which the object does not yet exist, as in the case of AddColumns.

DisambigueringDisambiguation

Fältnamn som lagts till med postområdet åsidosätter samma namn från andra ställen i appen.Field names added with the record scope override the same names from elsewhere in the app. När det händer så kan du fortfarande komma åt värden från utanför postområdet med @disambigueringsoperatorn:When this happens, you can still access values from outside the record scope with the @ disambiguation operator:

  • Om du vill komma åt värden från kapslade postområden använder du operatorn @ med namnet på den tabellen som bearbetas, och med hjälp av mönstret Table[@FieldName].To access values from nested record scopes, use the @ operator with the name of the table being operated upon using the pattern Table[@FieldName].
  • Om du vill komma åt globala värden, som datakällor, samlingar och kontextvariabler, använder du mönstret [@ObjectName] (utan tabellbeteckning).To access global values, such as data sources, collections, and context variables, use the pattern [@ObjectName] (without a table designation).

Om den tabell som åtgärden utförs på är ett uttryck, t.ex. Filter(table,...), så kan inte någon disambigueringsoperator användas.If the table being operated upon is an expression, such as Filter( table, ... ), then the disambiguation operator cannot be used. Endast det innersta postområdet har åtkomst till fält från det här tabelluttrycket genom att inte använda disambigueringsoperatorn.Only the innermost record scope can access fields from this table expression, by not using the disambiguation operator.

Låt oss använda samlingen X som exempel:For example, imagine having a collection X:

Du kan skapa den här samlingen med ClearCollect(X, [1, 2]).You can create this collection with ClearCollect( X, [1, 2] ).

Och så har vi samlingen Y:And another collection Y:

Du kan skapa den här samlingen med ClearCollect(Y, ["A", "B"]).You can create this collection with ClearCollect( Y, ["A", "B"] ).

Dessutom kan definiera en kontextvariabel med namnet Value med följande formel: UpdateContext({Value: "!"})In addition, define a context variable named Value with this formula: UpdateContext( {Value: "!"} )

Låt oss lägga ihop dem.Let's put it all together. I det här sammanhanget använder vi då följande formel:In this context, the following formula:

  • Ungroup(ForAll(X, ForAll(Y, Y[@Value] & Text( X[@Value]) & [@Value])), "Value")Ungroup( ForAll( X, ForAll( Y, Y[@Value] & Text( X[@Value] ) & [@Value] ) ), "Value" )

ger den här tabellen:produces this table:

Vad är det som sker här?What is going on here? Den yttersta ForAll-funktionen definierar ett postområde för X, vilket tillåter åtkomst till Value-fältet för varje post som bearbetas.The outermost ForAll function defines a record scope for X, allowing access to the Value field of each record as it is processed. Du kan få åtkomst till helt enkelt genom att använda ordet Value eller genom att använda X[@Value].It can be accessed by simply using the word Value or by using X[@Value].

Den innersta ForAll-funktionen definierar postområdet för Y. Eftersom den här tabellen har också ett definierat Value-fält, så refererar användningen av Value här till fältet i Y-posten och inte till det från X. Om du vill få åtkomst till Value-fältet för X här måste du använda den längre versionen med disambigueringsoperatorn.The innermost ForAll function defines another record scope for Y. Since this table also has a Value field defined, using Value here refers to the field in Y's record and no longer the one from X. Here, to access X's Value field, we must use the longer version with the disambiguation operator.

Eftersom Y är det innersta postområdet, så kräver åtkomst till fält i den här tabellen inte någon disambiguering, vilket innebär att vi kan använda den här formeln med samma resultat:Since Y is the innermost record scope, accessing fields of this table do not require disambiguation, allowing us to use this formula with the same result:

  • Ungroup(ForAll(X, ForAll(Y, Value & Text(X[@Value]) & [@Value])), "Value")Ungroup( ForAll( X, ForAll( Y, Value & Text( X[@Value] ) & [@Value] ) ), "Value" )

Alla ForAll-postområdena åsidosätter det globala området.All the ForAll record scopes override the global scope. Den Value-kontextvariabel som vi definierade är inte tillgänglig via namn utan disambigueringsoperatorn.The Value context variable we defined is not available by name without the disambiguation operator. För att få åtkomst till det här värdet måste vi använda [@Value].To access this value we must use [@Value].

Ungroup plattar ut resultatet, eftersom kapslade ForAll-funktioner resulterar i en kapslad resultattabell.Ungroup flattens the result, since nested ForAll functions will result in a nested result table.

Infogad syntaxInline syntax

PosterRecords

Du uttrycker poster med hjälp av klammerparenteser som innehåller namngivna fältvärden.You express records by using curly braces that contain named field values. Du kan t.ex. uttrycka den första posten i tabellen i början av det här avsnittet genom att använda följande formel:For example, you can express the first record in the table at the start of this topic by using this formula:

{Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10}{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 }

Du kan också bädda in formler i andra formler, så som visas i detta exempel:You can also embed formulas within other formulas, as this example shows:

{Name: First(Products).Name, Price: First(Products).Price * 1.095}{ Name: First(Products).Name, Price: First(Products).Price * 1.095 }

Du kan kapsla poster genom att kapsla klammerparenteser, så som visas i detta exempel:You can nest records by nesting curly braces, as this example shows:

{'Quantity': {'OnHand': ThisItem.QuantOnHand, 'OnOrder': ThisItem.QuantOnOrder}}{ 'Quantity': { 'OnHand': ThisItem.QuantOnHand, 'OnOrder': ThisItem.QuantOnOrder } }

Omsluter varje kolumnnamn som innehåller specialtecken, t.ex. ett blanksteg eller ett kolon med enkla citattecken.Enclose each column name that contains a special character, such as a space or a colon, in single quotes. Om du vill använda ett enkelt citattecken i ett kolumnnamn, så dubblera det.To use a single quote within a column name, double it.

Observera att värdet i kolumnen Price inte innehåller någon valutasymbol, t.ex. dollartecken.Note that the value in the Price column doesn't include a currency symbol, such as a dollar sign. Den formateringen tillämpas när värdet visas.That formatting will be applied when the value is displayed.

TabellerTables

Du kan skapa en tabell med hjälp av Table-funktionen och en uppsättning poster.You can create a table by using the Table function and a set of records. Du kan uttrycka tabellen i början av det här avsnittet genom att använda följande formel:You can express the table at the start of this topic by using this formula:

Table({Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10},
            {Name: "Bread", Price: 4.95, 'Quantity on Hand': 34, 'Quantity on Order': 0},
            {Name: "Water", Price: 4.95, 'Quantity on Hand': 10, 'Quantity on Order': 0})
Table( { Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 },
            { Name: "Bread", Price: 4.95, 'Quantity on Hand': 34, 'Quantity on Order': 0 },
            { Name: "Water", Price: 4.95, 'Quantity on Hand': 10, 'Quantity on Order': 0 } )

Du kan även kapsla tabeller:You can also nest tables:

Table({Name: "Chocolate",
            'Quantity History': Table({Quarter: "Q1", OnHand: 10, OnOrder: 10},
                        {Quarter: "Q2", OnHand: 18, OnOrder: 0})})
Table( { Name: "Chocolate",
            'Quantity History': Table( { Quarter: "Q1", OnHand: 10, OnOrder: 10 },
                        { Quarter: "Q2", OnHand: 18, OnOrder: 0 } ) } )

VärdetabellerValue tables

Du kan skapa enkolumnstabeller genom att ange värden inom hakparentes.You can create single-column tables by specifying values in square brackets. Den resulterande tabellen har en kolumn med namnet Value.The resulting table has a single column, named Value.

Exempel: [1, 2, 3, 4] motsvarar Table({Value: 1}, {Value: 2}, {Value: 3}, {Value: 4}) och returnerar följande tabell:For example, [ 1, 2, 3, 4 ] is equivalent to Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } ) and returns this table: