Principy tabulek a záznamů v PowerAppsUnderstand tables and records in PowerApps

Můžete vytvořit aplikaci, která bude moct využívat informace z Microsoft Excelu, SharePointu, SQL Serveru a několika dalších zdrojů, které ukládají data v záznamech a tabulkách.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. Abyste mohli tento typ dat využít na maximum, projděte si koncepty, které tvoří základ těchto struktur.To work most effectively with this kind of data, review the concepts that underlie these structures.

  • Záznam obsahuje jednu či více kategorií informací o osobě, místě nebo objektu.A record contains one or more categories of information about a person, a place, or a thing. Záznam může například obsahovat jméno, e-mailovou adresu a telefonní číslo jednoho zákazníka.For example, a record might contain the name, the email address, and the phone number of a single customer. Jiné nástroje odkazují na záznam jako na řádek nebo položku.Other tools refer to a record as a "row" or an "item."
  • Tabulka uchovává jeden nebo více záznamů, které obsahují stejné kategorie informací.A table holds one or more records that contain the same categories of information. Tabulka může třeba obsahovat jména, e-mailové adresy a telefonní čísla padesáti zákazníků.For example, a table might contain the names, the email addresses, and the phone numbers of 50 customers.

V aplikaci budete k vytváření, aktualizacím a práci se záznamy a tabulkami využívat vzorce.In your app, you'll use formulas to create, update, and manipulate records and tables. Data budete pravděpodobně číst a zapisovat do externího zdroje dat, což je rozšířená tabulka.You'll probably read and write data to an external data source, which is an extended table. Kromě toho můžete vytvořit jednu nebo více interních tabulek, kterým se říká kolekce.In addition, you might create one or more internal tables, which are called collections.

Můžete si vytvořit různé vzorce, které budou název tabulky používat jako argument stejným způsobem, jako vzorce v Excelu používají jako argumenty odkazy na buňky.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. Některé vzorce v PowerApps vrací tabulku odrážející další argumenty, které zadáte.Some formulas in PowerApps return a table that reflects the other arguments that you specify. Můžete například vytvořit vzorec, který zajistí:For example, you might create a formula:

  • Aktualizaci záznamu v tabulce. Uděláte to tak, že zadáte danou tabulku jako jeden z více argumentů funkce Patch.to update a record in a table by specifying that table as one of multiple arguments for the Patch function
  • Přidání, odebrání a přejmenování sloupců v tabulce. Uděláte to tak, že zadáte danou tabulku jako argument funkce AddColumns, DropColumns nebo RenameColumns.to add, remove, and rename columns in a table by specifying that table as an argument for the AddColumns, DropColumns, or RenameColumns function. Ani jedna z těchto funkcí nezmění původní tabulku.None of those functions modifies the original table. Místo toho funkce vrátí jinou tabulku založenou na dalších argumentech, které zadáte.Instead, the function returns another table based on the other arguments that you specify.

Prvky tabulkyElements of a table

ZáznamyRecords

Každý záznam obsahuje minimálně jednu kategorii informací pro osobu, místo nebo objekt.Each record contains at least one category of information for a person, a place, or a thing. Příklad uvedený výše zobrazuje záznam pro každý produkt (Chocolate, Bread a Water) a sloupec pro každou kategorii informací (Price, Quantity on Hand a 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).

Ve vzorci můžete pomocí složených závorek odkazovat na samotný záznam, který se nachází mimo kontext tabulky.In a formula, you can refer to a record by itself, outside of a table's context, by using curly braces. Tento záznam například { Name: "Strawberries"; Price: 7.99 } není přidružený k tabulce.For example, this record { Name: "Strawberries", Price: 7.99 } isn't associated with a table.

PoleFields

Pole tvoří jednotlivé údaje v záznamu.A field is an individual piece of information in a record. Tento typ pole můžete vizualizovat jako hodnotu ve sloupci pro konkrétní záznam.You can visualize this sort of field as a value in a column for a particular record.

Stejně jako u ovládacího prvku odkazujete i na pole záznamu pomocí operátoruJust as with a control, you refer to a field of a record by using the . . u záznamu.operator on the record. First(Products).Name například vrátí pole Name pro první záznam v tabulce Products.For example, First(Products).Name returns the Name field for the first record in the Products table.

Pole může obsahovat jiný záznam nebo tabulku, jak znázorňuje příklad funkce GroupBy.A field can contain another record or table, as the example for the GroupBy function shows. Můžete vnořit tolik úrovní záznamů a tabulek, kolik chcete.You can nest as many levels of records and tables as you want.

SloupceColumns

Sloupec odkazuje na stejné pole u jednoho nebo více záznamů v tabulce.A column refers to the same field for one or more records in a table. V příkladu výše má každý produkt pole s cenou a tato cena se pro všechny produkty nachází ve stejném sloupci.In the above example, each product has a price field, and that price is in the same column for all products. Uvedená tabulka obsahuje čtyři sloupce, které jsou zobrazeny vodorovně v horní části:The above table has four columns, shown horizontally across the top:

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

Název sloupce odráží pole v daném sloupci.The column's name reflects the fields in that column.

Všechny hodnoty v rámci sloupce mají stejný datový typ.All values within a column are of the same data type. V příkladu výše sloupec Quantity on Hand vždy pro jeden záznam obsahuje číslo a nemůže obsahovat řetězec, například 12 jednotek.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. Hodnota kteréhokoli pole může také být prázdná.The value of any field may also be blank.

V jiných nástrojích jste možná na sloupce odkazovali jako na pole.You may have referred to columns as "fields" in other tools.

Poznámka

V případě sharepointových a excelových zdrojů dat obsahujících názvy sloupců s mezerami nahradí PowerApps tyto mezery za „_x0020_“.For SharePoint and Excel data sources that contain column names with spaces, PowerApps will replace the spaces with "_x0020_". Například Název sloupce v Excelu nebo SharePointu se v PowerApps zobrazí jako Název_x0020_sloupce v případě, že se vyskytuje v rozložení dat nebo používá ve vzorci.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.

TabulkaTable

Tabulku tvoří jeden nebo více záznamů, z nichž každý obsahuje několik polí, která mají v rámci záznamů konzistentní názvy.A table comprises one or more records, each with multiple fields that have consistent names across the records.

Kterákoli tabulka uložená ve zdroji dat nebo kolekci má název, pomocí něhož na ni můžete odkazovat a předat ji funkcím, které používají tabulky jako argumenty.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. Tabulky také mohou být výsledkem funkce nebo vzorce.Tables can also be the result of a function or a formula.

Stejně jako v následujícím příkladu můžete vyjádřit tabulku ve vzorci pomocí funkce Table se sadou záznamů, které uvedete ve složených závorkách: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" } )

Můžete také definovat tabulku s jedním sloupcem, a to pomocí hranatých závorek.You can also define a single-column table with square brackets. Uvedený vzorec můžete napsat také takto:An equivalent way to write the above:

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

Tabulkové vzorceTable formulas

V Excelu i PowerApps slouží k práci s čísly a textovými řetězci podobným způsobem vzorce:In Excel and PowerApps, you use formulas to manipulate numbers and strings of text in similar ways:

  • V Excelu zadejte hodnotu, třeba 42, do buňky A1 a potom do jiné buňky zadejte vzorec, třeba A1+2, aby se zobrazila hodnota 44.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.
  • V PowerApps nastavte vlastnost Default prvku Slider1 na 42 a nastavte vlastnost Text popisku na Slider1.Value + 2, aby se zobrazila hodnota 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.

V obou případech se vypočítané hodnoty automaticky změní, když změníte hodnoty argumentů (například číslo v buňce A1 nebo hodnotu prvku 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).

Podobně také můžete vzorce použít k přístupu k datům v tabulkách a záznamech a k práci s nimi.Similarly, you can use formulas to access and manipulate data in tables and records. V některých vzorcích se používají názvy tabulek jako argumenty, například Min(Catalog; Price), k zobrazení nejnižší hodnoty ve sloupci Price v tabulce 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. Jiné vzorce poskytují celé tabulky jako návratové hodnoty, jako je vzorec RenameColumns(Catalog; "Price"; "Cost"), který vrátí všechny záznamy z tabulky Catalog, ale změní název sloupce Price na 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.

Stejně jako u čísel i vzorce, které zahrnují tabulky a záznamy, se automaticky přepočítají, když se změní podkladová tabulka nebo záznam.Just as with numbers, formulas that involve tables and records are automatically recalculated as the underlying table or record changes. Pokud náklady na produkt v tabulce Catalog klesnou pod předchozí minimum, návratová hodnota vzorce Min se automaticky změní, aby odpovídala.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.

Projděme si několik jednoduchých příkladů.Let's walk through some simple examples.

  1. Přidejte ovládací prvek Galerie textu a jeho vlastnost Items nastavte na název tabulky.Add a Text gallery control, and set its Items property to the name of a table.

    Ve výchozím nastavení galerie zobrazuje zástupný text z tabulky s názvem TextualGallerySample.By default, the gallery shows placeholder text from a table named TextualGallerySample. Vlastnost Items galerie se automaticky nastaví na danou tabulku.The Items property of the gallery is automatically set to that table.

    Poznámka

    Z ilustračních důvodů jsou některé ovládací prvky jinak uspořádané a zvětšené.Some controls have been rearranged and enlarged for illustration purposes.

  2. Místo nastavení na název tabulky nastavte vlastnost Items na vzorec, který obsahuje název tabulky jako argument, jako v tomto příkladu: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)

    Tento vzorec používá funkci Sort, která převezme název tabulky jako svůj první argument a název sloupce v tabulce jako druhý 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. Funkce také podporuje nepovinný třetí argument, který stanoví, že chcete data seřadit v sestupném pořadí.The function also supports an optional third argument, which stipulates that you want to sort the data in descending order.

  3. Nastavte vlastnost Items na vzorec, který převezme vzorec z předchozího kroku jako argument a vrátí tabulku, jako v tomto příkladu: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)

    V tomto vzorci použijete funkci FirstN k zobrazení určitého počtu záznamů v tabulce.In this formula, you use the FirstN function to show a particular number of records in a table. Funkci Sort použijete jako první argument pro funkci FirstN a číslo (v tomto případě 2) jako druhý argument, který určuje, kolik záznamů se má zobrazit.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.

    Celý vzorec vrátí tabulku, která obsahuje první dva záznamy tabulky TextualGallerySample seřazené podle sloupce Heading v sestupném pořadí.The entire formula returns a table that contains the first two records of the TextualGallerySample table, sorted by the Heading column in descending order.

Funkce tabulky a vlastnosti ovládacích prvkůTable functions and control properties

Mnoho funkcí v PowerApps vezme název tabulky jako argument, vytvoří druhou tabulku obsahující stejná data, zpracuje novou tabulku na základě dalších argumentů a potom vrátí výsledky.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. Tyto funkce nezmění původní tabulku, i když se jedná o zdroj dat.These functions don't modify the original table, even if it's a data source.

  • Sort, Filter – umožňují seřadit a filtrovat záznamy.Sort, Filter - Sorts and filters records.
  • FirstN, LastN – vrátí prvních N nebo posledních N záznamů tabulky.FirstN, LastN - Returns the first N or last N records of the table.
  • Abs, Sqrt, Round, RoundUp, RoundDown – jedná se o aritmetické operace u jednotlivých záznamů tabulky s jedním sloupcem, jejichž výsledkem je tabulka výsledků s jedním sloupcem.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 – jedná se o zpracování řetězců u každého záznamu v tabulce s jedním sloupcem, jejichž výsledkem je tabulka řetězců s jedním sloupcem.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 – určeno pro sloupce řetězců. Vrátí tabulku s jedním sloupcem, která obsahuje délky jednotlivých řetězců.Len - For a column of strings, returns a single-column table that contains the length of each string.
  • Concatenate – zřetězí více sloupců řetězců a jako výsledek vrátí tabulku řetězců s jedním sloupcem.Concatenate - Concatenates multiple columns of strings, resulting in a single-column table of strings.
  • AddColumns, DropColumns, RenameColumns, ShowColumns – jedná se o zpracování sloupců v tabulce, jejichž výsledkem je nová tabulka s odlišnými sloupci.AddColumns, DropColumns, RenameColumns, ShowColumns - Column manipulation of the table, resulting in a new table with different columns.
  • Distinct – odebere duplicitní záznamy.Distinct - Removes duplicates records.
  • Shuffle – uspořádá záznamy v náhodném pořadí.Shuffle - Shuffles records into a random order.
  • HashTags – vyhledá hashtagy v řetězci.HashTags - Searches for hashtags in a string.
  • Errors – poskytuje informace o chybě při práci se zdrojem dat.Errors - Provides error information when you work with a data source.

Můžete spustit funkci u tabulky, která obsahuje více sloupců, a to i v případě, že funkce vyžaduje jako argument jeden sloupec.You can run a function on a table that contains multiple columns, even if the function requires a single column as an argument. Pokud chcete extrahovat jeden sloupec z tabulky obsahující více sloupců, použijte funkci ShowColumns jako argument požadované funkce jako v tomto příkladu: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" ) )

Tento vzorec vytvoří tabulku s jedním sloupcem, která obsahuje veškerá data ze sloupce Name v tabulce Products, ale převede všechna velká písmena na malá.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. Pokud zadáte tabulku jako argument funkce AddColumns, RenameColumns nebo DropColumns, můžete zcela změnit tvar dané tabulky, aby odpovídala vašim požadavkům.If you specify a table as an argument for the AddColumns, RenameColumns, or DropColumns function, you can completely reshape that table however you want.

Pokud zadáte zdroj dat jako argument jedné z těchto funkcí, změní se záznamy daného zdroje dat a obecně platí, že se jako tabulka vrátí nová hodnota zdroje dat.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.

  • Collect, Clear, ClearCollect – slouží k vytváření, vymazání a přidání do kolekce.Collect, Clear, ClearCollect - Creates, clears, and adds to a collection.
  • Update, UpdateIf – aktualizuje záznamy, které odpovídají jednomu nebo více zadaným kritériím.Update, UpdateIf - Updates records that match one or more criteria that you specify.
  • Remove, RemoveIf – odstraní záznamy, které odpovídají jednomu nebo více zadaným kritériím.Remove, RemoveIf - Deletes records that match one or more criteria that you specify.

Následující ovládací prvky mají vlastnosti, které jsou tabulkami:The following controls have properties that are tables:

  • Items – platí pro galerie a seznamy.Items - Applies to galleries and list boxes. Tabulka, která se má zobrazit v galerii.Table to display in the gallery.
  • SelectedItems – platí pro seznamy.SelectedItems - Applies to list boxes. Tabulka položek, které uživatel vybral.Table of items that the user has selected.

Vzorce záznamůRecord formulas

Můžete si také vytvořit vzorec, který vypočítá data pro jednotlivý záznam, použije ho jako argument a vrátí jednotlivý záznam jako návratovou hodnotu.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. Vraťme se teď k výše uvedenému příkladu galerie a použijme vlastnost Gallery1.Selected k zobrazení informací z libovolného záznamu, který uživatel v dané galerii vybral.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. Přidejte tlačítko a nastavte jeho vlastnost OnSelect na tento vzorec:Add a button, and set its OnSelect property to this formula:
    Collect( SelectedRecord; Gallery1.Selected )Collect( SelectedRecord, Gallery1.Selected )

  2. Pokud tlačítko není vybrané, vyberte ho kliknutím a potom na něj znovu klikněte, abyste spustili vzorec.If the button isn't selected, click it to select it, and then click it again to run the formula.

  3. V nabídce Soubor vyberte Kolekce.In the File menu, select Collections.

Tento vzorec vrátí záznam, který obsahuje nejen data ze záznamu aktuálně vybraného v galerii, ale také všechny ovládací prvky v dané galerii.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. Záznam obsahuje například jak sloupec Body, který odpovídá sloupci Body v původní tabulce, tak i sloupec Body1, který představuje popisek zobrazující data z daného sloupce.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. Výběrem ikony tabulky ve sloupci Body1 přejděte na podrobnosti těchto dat.Select the table icon in the Body1 column to drill into that data.

Teď, když jste vybrali záznam, může z něj extrahovat jednotlivá pole pomocí operátoru .Now that you have the selected record, you can extract individual fields from it with the . .operator.

  1. Stisknutím Esc se vraťte do výchozího pracovního prostoru a potom pod galerii přidejte popisek.Press Esc to return to the default workspace, and then add a label below the gallery.

  2. Nastavte vlastnost Text popisku na tento vzorec:Set the Text property of the label to this formula:
    Gallery.Selected.HeadingGallery.Selected.Heading

Převzali jste vlastnost Selected, což je záznam, a z něj extrahovali vlastnost Heading.You've taken the Selected property, which is a record, and extracted the Heading property from it.

Pro související pojmenované hodnoty můžete také záznam použít jako kontejner pro obecné účely.You can also use a record as a general-purpose container for related named values.

V těchto případech se záznam nikdy nestal součástí tabulky.In these cases, the record was never a part of a table.

Funkce záznamu a vlastnosti ovládacích prvkůRecord functions and control properties

Funkce, které vrací záznamy:Functions that return records:

  • FirstN, LastN – vrátí první nebo poslední záznam či záznamy tabulky.FirstN, LastN - Returns the first or last record or records of the table.
  • Lookup – vrátí první záznam z tabulky, který vyhovuje jednomu nebo více kritériím.Lookup - Returns the first record from a table that matches one or more criteria.
  • Patch – aktualizuje zdroj dat nebo sloučí záznamy.Patch - Updates a data source or merges records.
  • Defaults – vrátí výchozí hodnoty zdroje dat.Defaults - Returns the default values for a data source.

Vlastnosti, které vrací záznamy:Properties that return records:

  • Selected – platí pro galerie a seznamy.Selected - Applies to galleries and list boxes. Vrátí aktuálně vybraný záznam.Returns the currently selected record.
  • Updates – platí pro galerie.Updates - Applies to galleries. Sjednotí všechny změny, které uživatel provedl ve formuláři pro zadávání dat.Pulls together all the changes that a user makes in a data-entry form.
  • Update – platí pro ovládací prvky vstupu, jako jsou ovládací prvky pro zadávání textu a posuvníky.Update - Applies to input controls such as text-input controls and sliders. Nastaví jednotlivé vlastnosti galerie a sjednotí je.Sets up individual properties for the gallery to pull together.

Obor záznamůRecord scope

Některé funkce pracují tak, že jednotlivě vyhodnocují vzorec napříč všemi záznamy v tabulce.Some functions operate by evaluating a formula across all the records of a table individually. Výsledek vzorce se používá různě:The formula's result is used in various ways:

  • Filter, Lookup – vzorec určuje, zda se má záznam zahrnout do výstupu.Filter, Lookup - Formula determines if the record should be included in the output.
  • Sort – vzorec poskytuje hodnotu, podle které se záznamy mají seřadit.Sort - Formula provides the value to sort the records on.
  • Concat – vzorec určuje řetězce, které se mají zřetězit dohromady.Concat - Formula determines the strings to concatenate together.
  • ForAll – vzorec může vrátit libovolnou hodnotu, která může mít vedlejší efekt.ForAll - Formula can return any value, potentially with a side effect.
  • Distinct – vzorec vrátí hodnotu, která slouží k identifikaci duplicitních záznamů.Distinct - Formula returns a value, used to identify duplicate records.
  • AddColumns – vzorec poskytuje hodnotu přidaného pole.AddColumns - Formula provides the value of the added field.
  • Average, Max, Min, Sum, StdevP, VarP – vzorec poskytuje hodnotu, která se má agregovat.Average, Max, Min, Sum, StdevP, VarP - Formula provides the value to aggregate.

Uvnitř těchto vzorců můžete odkazovat na pole zpracovávaného záznamu.Inside these formulas, you can reference the fields of the record being processed. Každá z těchto funkcí vytvoří obor záznamů, ve kterém se vzorec vyhodnotí a kde jsou pole záznamu k dispozici jako identifikátory nejvyšší úrovně.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. V celé aplikaci také můžete odkazovat na vlastnosti ovládacích prvků a jiné hodnoty.You can also reference control properties and other values from throughout your app.

Jako příklad si vezměme tabulku Products:For example, take a table of Products:

Pokud chcete určit, zda se některého produktu požaduje více, než je dostupné, použijte vzorec: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' )

Prvním argumentem funkce Filter je tabulka záznamů, se kterou se bude pracovat, a druhým argumentem je vzorec.The first argument to Filter is the table of records to operate on, and the second argument is a formula. Funkce Filter vytvoří obor záznamů pro vyhodnocení tohoto vzorce, ve kterém jsou dostupná pole všech záznamů – v tomto případě Product, Quantity Requested a 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. Výsledek porovnání určuje, zda se má záznam zahrnout do výsledku funkce:The result of the comparison determines if each record should be included in the result of the function:

V tomto příkladu navíc vypočítáme, jaké množství každého produktu se má objednat: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' )

Tady přidáváme do výsledku vypočítaný sloupec.Here we are adding a calculated column to the result. AddColumns má vlastní obor záznamů, který používá k výpočtu rozdílu mezi požadovaným a dostupným množstvím.AddColumns has its own record scope that it uses to calculate the difference between what has been requested and what is available.

Nakonec zmenšíme výslednou tabulku pouze na ty sloupce, které chceme: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" )

Všimněte si, že v uvedeném příkladu jsme na některých místech použili dvojité uvozovky (") a na jiných jednoduché (').Note that in the above, we used double quotes (") in some places and single quotes (') in other places. Jednoduché uvozovky jsou povinné, když odkazujete na hodnotu objektu, jako je pole nebo tabulka, ve které název objektu obsahuje mezery.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. Dvojité uvozovky se používají, když neodkazujete na hodnotu objektu, ale když o něm mluvíte, zejména v situacích, ve kterých objekt ještě neexistuje, jako tomu je v případě funkce 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.

MnohoznačnostDisambiguation

Názvy polí přidané prostřednictvím oboru záznamů přepíší stejné názvy v aplikaci pocházející odjinud.Field names added with the record scope override the same names from elsewhere in the app. Pokud k tomu dojde, můžete k hodnotám mimo obor záznamů nadále přistupovat pomocí operátoru @mnohoznačnosti :When this happens, you can still access values from outside the record scope with the @ disambiguation operator:

  • Pro přístup k hodnoty z vnořené rozsahy záznamů, použijte @ operátor s názvem tabulky ovládat při použití vzoru tabulky[@*název pole *].To access values from nested record scopes, use the @ operator with the name of the table being operated upon using the pattern Table[@FieldName].
  • Pokud chcete přistupovat ke globálním hodnotám, jako jsou například zdroje dat, kolekce a kontextové proměnné, použijte vzor [@NázevObjektu] (bez označení tabulky).To access global values, such as data sources, collections, and context variables, use the pattern [@ObjectName] (without a table designation).

Pokud je tabulka, se kterou se pracuje, výrazem, například Filter( table; ... ), není možné operátor mnohoznačnosti použít.If the table being operated upon is an expression, such as Filter( table, ... ), then the disambiguation operator cannot be used. Pouze nejvnitřnější obor záznamů má přístup k polím z tohoto výrazu tabulky bez použití operátoru mnohoznačnosti.Only the innermost record scope can access fields from this table expression, by not using the disambiguation operator.

Představme si například, že máme kolekci X:For example, imagine having a collection X:

Tuto kolekci můžete vytvořit pomocí vzorce ClearCollect( X; [1; 2] ).You can create this collection with ClearCollect( X, [1, 2] ).

A další kolekci Y:And another collection Y:

Tuto kolekci můžete vytvořit pomocí vzorce ClearCollect( Y; ["A"; "B"] ).You can create this collection with ClearCollect( Y, ["A", "B"] ).

Kromě toho definujte kontextovou proměnnou s názvem Value pomocí tohoto vzorce: UpdateContext( {Value: "!"} ).In addition, define a context variable named Value with this formula: UpdateContext( {Value: "!"} )

A teď to dejme všechno dohromady.Let's put it all together. V tomto kontextu následující vzorec: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" )

vytvoří tuto tabulku:produces this table:

K čemu tady došlo?What is going on here? Nejkrajnější funkce ForAll definuje obor záznamů pro X a umožňuje přístup k poli Value každého záznamu postupně tak, jak se zpracovávají.The outermost ForAll function defines a record scope for X, allowing access to the Value field of each record as it is processed. Přistupovat k němu můžete jednoduše pomocí slova Value nebo pomocí X[@Value].It can be accessed by simply using the word Value or by using X[@Value].

Nejvnitřnější funkce ForAll definuje další obor záznamů pro Y. Vzhledem k tomu, že tabulka má také definované pole Value, použitím pole Value se tady odkazuje na pole v záznamu kolekce Y a už ne v kolekci X. Pokud v tomto případě chceme přistupovat k poli Value kolekce X, musíme použít delší verzi s operátorem mnohoznačnosti.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.

Protože Y je nejvnitřnějším oborem záznamů, nevyžaduje přístup k polím této tabulky mnohoznačnost, a my můžeme použít tento vzorec se stejným výsledkem: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" )

Všechny obory záznamů ForAll přepíší globální obor.All the ForAll record scopes override the global scope. Kontextová proměnná Value, kterou jsme definovali, není dostupná podle názvu bez operátoru mnohoznačnosti.The Value context variable we defined is not available by name without the disambiguation operator. Pro přístup k této hodnotě musíme použít [@Value].To access this value we must use [@Value].

Ungroup vyrovná výsledek, protože vnořené funkce ForAll vrátí vnořenou tabulku výsledků.Ungroup flattens the result, since nested ForAll functions will result in a nested result table.

Vložená syntaxeInline syntax

ZáznamyRecords

Záznamy vyjádříte pomocí složených závorek, které obsahují hodnoty pojmenovaných polí.You express records by using curly braces that contain named field values. První záznam v tabulce ze začátku tohoto tématu můžete například vyjádřit pomocí tohoto vzorce: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 }

Vzorce také můžete vložit do jiných vzorců, jak uvádí tento příklad: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 }

Záznamy můžete vnořit pomocí vnoření složených závorek, jako je tomu v tomto příkladu: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 } }

Názvy jednotlivých sloupců, které obsahují speciální znaky (třeba mezeru nebo středník), uzavřete do jednoduchých uvozovek.Enclose each column name that contains a special character, such as a space or a colon, in single quotes. Pokud chcete v názvu sloupce použít jednoduchou uvozovku, uveďte ji dvakrát.To use a single quote within a column name, double it.

Všimněte si, že hodnota ve sloupci Price neobsahuje symbol měny, jako je znak dolaru.Note that the value in the Price column doesn't include a currency symbol, such as a dollar sign. Toto formátování se použije až při zobrazení hodnoty.That formatting will be applied when the value is displayed.

TabulkyTables

Tabulku můžete vytvořit pomocí funkce Table a sady záznamů.You can create a table by using the Table function and a set of records. Tabulku ze začátku tohoto tématu můžete vyjádřit pomocí tohoto vzorce: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 } )

Tabulky můžete také vnořit: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 } ) } )

Tabulky hodnotValue tables

Tabulky s jedním sloupcem můžete vytvořit tak, že zadáte hodnoty do hranatých závorek.You can create single-column tables by specifying values in square brackets. Výsledná tabulka má jeden sloupec, který nese název Value.The resulting table has a single column, named Value.

[ 1, 2, 3, 4 ] je například ekvivalentem Table( { Value: 1 }; { Value: 2 }; { Value: 3 }; { Value: 4 } ) a vrátí tuto tabulku:For example, [ 1, 2, 3, 4 ] is equivalent to Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } ) and returns this table: