Principy zdrojů dat v PowerAppsUnderstand data sources in PowerApps

Většina aplikací PowerApps používá externí informace uložené v cloudových službách nazývané zdroje dat.Most PowerApps apps use external information stored in cloud services called Data Sources. Běžným příkladem je tabulka v excelovém souboru uloženém na OneDrivu pro firmy.A common example is a table in an Excel file stored in OneDrive for Business. Aplikace k těmto zdrojům dat získávají přístup pomocí připojení.Apps access these data sources by using Connections.

Tento článek pojednává o různých druzích zdrojů dat a způsobu práce s tabulkovými zdroji dat.This article discusses the different kinds of data sources, and how to work with table data sources.

Vytvoření aplikace, která ve zdroji dat provádí základní čtení a zápis, je jednoduché.It is easy to create an app that does basic reading and writing to a data source. Někdy ale chcete mít větší kontrolu nad tokem dat do aplikace a z aplikace.But sometimes you want more control over how data flows in and out of your app. Tento článek popisuje, jak větší kontrolu zajišťují funkce Patch, DataSourceInfo, Validate a Errors.This article describes how the Patch, DataSourceInfo, Validate, and Errors functions provide more control.

Druhy zdrojů datKinds of data sources

Zdroje dat můžou být připojené k nějaké cloudové službě, nebo můžou být vůči aplikaci lokální.Data sources can be connected to a cloud service, or they can be local to an app.

Připojené zdroje datConnected data sources

Nejběžnějšími zdroji dat jsou tabulky, které můžete používat k získávání a ukládání informací.The most common data sources are tables, which you can use to retrieve and store information. Připojení ke zdrojům dat můžete používat ke čtení a zápisu dat v sešitech Microsoft Excelu, seznamech SharePointu, tabulkách SQL a mnoha dalších formátech, které můžou být uložené v cloudových službách jako OneDrive pro firmy, Dropbox, SQL Server a další.You can use connections to data sources to read and write data in Microsoft Excel workbooks, SharePoint lists, SQL tables, and many other formats, which can be stored in cloud services like OneDrive for Business, DropBox, SQL Server, etc.

Mezi jiné než tabulkové zdroje dat patří e-mail, kalendáře, Twitter a oznámení, tento článek ale o těchto jiných druzích zdrojů dat nepojednává.Data sources other than tables include email, calendars, Twitter, and notifications, but this article doesn't discuss these other kinds of data sources.

Lokální zdroje datLocal data sources

Vytvořit aplikaci, která čte a zapisuje data ze zdroje dat, je díky ovládacím prvkům Galerie, Formulář pro zobrazení a Formulář pro úpravy snadné.Using the Gallery, Display form, and Edit form controls, it is easy to create an app that reads and writes data from a data source. Začněte tím, že si přečtete článek Principy datových formulářů.To get started, read the article Understand data forms.

Tyto ovládací prvky se použijí, když PowerApps požádáte o vytvoření aplikace z dat.When you ask PowerApps to create an app from data, these controls are used. K ukládání a manipulaci s daty, která pocházejí ze zdroje dat, používá tato aplikace „pod kapotou“ interní tabulku.Behind the scenes, the app uses an internal table to store and manipulate the data that comes from the data source.

Speciálním druhem zdroje dat je kolekce, která je vůči aplikaci lokální a nezávisí na připojení k nějaké službě v cloudu, takže tyto informace se nedají sdílet mezi zařízeními stejného uživatele nebo mezi uživateli.A special kind of data source is the Collection, which is local to the app and not backed by a connection to a service in the cloud, so the information can not be shared across devices for the same user or between users. Kolekce se načítají a ukládají lokálně.Collections can be loaded and saved locally.

Druhy tabulekKinds of tables

Tabulky interní vůči aplikaci PowerApps jsou pevné hodnoty, podobně jako je hodnotou číslo nebo řetězec.Tables that are internal to a PowerApps app are fixed values, just as a number or a string is a value. Interní tabulky nejsou nikde uložené a existují jenom v paměti aplikace.Internal tables aren't stored anywhere, they just exist in your app's memory. Strukturu a data tabulky nemůžete upravovat přímo.You can't directly modify the structure and data of a table. Místo toho můžete prostřednictvím vzorce vytvořit novou tabulku: pomocí tohoto vzorce vytvoříte upravenou kopii původní tabulky.What you can do instead is to create a new table through a formula: you use that formula to make a modified copy of the original table.

Externí tabulky jsou uložené ve zdroji dat pro pozdější načtení a sdílení.External tables are stored in a data source for later retrieval and sharing. PowerApps poskytuje „připojení“ pro čtení a zápis uložených dat.PowerApps provides "connections" to read and write stored data. V rámci určitého připojení můžete mít přístup k několika tabulkám s informacemi.Within a connection, you can access multiple tables of information. Když vyberete, které tabulky se mají v aplikaci používat, stane se z každé z nich samostatný zdroj dat.You'll select which tables to use in your app, and each will become a separate data source.

Další podrobnosti o interních tabulkách najdete v tématu věnovaném práci s tabulkami, které ale platí také pro externí tabulky uložené v nějaké cloudové službě.To learn more, Working with tables goes into more detail about internal tables, but it is also applicable to external tables residing in a cloud service.

Práce s tabulkamiWorking with tables

Tabulkové zdroje dat můžete používat stejně jako interní tabulku PowerApps.You can use table data sources the same way that you use an internal PowerApps table. Každý zdroj dat obsahuje (podobně jako interní tabulka) záznamy, sloupce a vlastnosti, které se používají ve vzorcích.Just like an internal table, each data source has records, columns, and properties that you can use in formulas. Dále musí být splněny všechny tyto podmínky:In addition:

  • Zdroj dat má stejné názvy sloupců a datové typy jako podkladová tabulka v připojení.The data source has the same column names and data types as the underlying table in the connection.

    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.

  • Zdroj dat se načte ze služby automaticky při načtení aplikace.The data source is loaded from the service automatically when the app is loaded. Pomocí funkce Refresh můžete vynutit aktualizaci dat.You can force the data to refresh by using the Refresh function.
  • Uživatelé můžou při práci v aplikaci vytvářet, měnit a odstraňovat záznamy a odesílat tyto změny zpět do podkladové tabulky ve službě.As users run an app, they can create, modify, and delete records and push those changes back to the underlying table in the service.
    • Záznamy se dají vytvářet pomocí funkcí Patch a Collect.Records can be created with the Patch and Collect functions.
    • Záznamy se dají upravovat pomocí funkcí Patch, Update a UpdateIf.Records can be modified with the Patch, Update, and UpdateIf functions.
    • Záznamy se dají odebírat pomocí funkcí Remove a RemoveIf.Records can be removed with the Remove and RemoveIf functions.
    • Chyby, ke kterým dojde při práci se zdrojem dat, jsou dostupné prostřednictvím funkce Errors.Errors when working with a data source are available through the Errors function.
  • Funkce DataSourceInfo, Defaults a Validate poskytují informace o zdroji dat, s jejichž pomocí můžete optimalizovat uživatelské prostředí.The DataSourceInfo, Defaults, and Validate functions provide information about the data source that you can use to optimize the user experience.

Vytváření zdrojů datCreating data sources

PowerApps nejde použít k vytvoření připojeného zdroje dat ani k úpravě jeho struktury; zdroj dat už musí existovat v nějaké službě.PowerApps can't be used to create a connected data source, or modify its structure; the data source must already exist in a service somewhere. Pokud chcete například vytvořit tabulku v excelovém sešitu uloženém na OneDrivu, musíte napřed v Excelu Online vytvořit na OneDrivu sešit.For example, to create a table in an Excel workbook stored on OneDrive, you first use Excel Online on OneDrive to create a workbook. Pak k němu z vaší aplikace vytvoříte připojení.Next you create a connection to it from your app.

Zdroje dat v podobě kolekce je možné vytvořit a upravit v aplikaci, jsou ale jenom dočasné.However, collection data sources can be created and modified inside an app, but are only temporary.

Zobrazení jednoho nebo více záznamůDisplay one or more records

Předchozí diagram znázorňuje tok informací, když aplikace čte tyto informace v nějakém zdroji dat: The diagram above shows the flow of information when an app reads the information in a data source:

  • Informace se ukládají a sdílejí prostřednictvím služby úložiště (v tomto případě je to sharepointový seznam na webu Office 365).The information is stored and shared through a storage service (in this case, a SharePoint list of an Office 365 site).
  • Připojení zpřístupňuje tyto informace aplikaci.A connection makes this information available to the app. Toto připojení zajišťuje ověření uživatele při přístupu k informacím.The connection takes care of authentication of the user to access the information.
  • Při spuštění aplikace nebo použití funkce Refresh se informace přenesou z připojení do zdroje dat v aplikaci pro lokální použití.When the app is started or the Refresh function is pressed, information is drawn from the connection into a data source in the app for local use.
  • Vzorce slouží ke čtení informací a jejich zpřístupnění v ovládacích prvcích, které vidí uživatel.Formulas are used to read the information and expose it in controls that the user can see. Záznamy zdroje dat zobrazíte tak, že na některé obrazovce použijete galerii a její vlastnost Items svážete se zdrojem dat: Gallery.Items = ZdrojDat.You can display the records of a data source by using a gallery on a screen and wiring the Items property to the data source: Gallery.Items = DataSource. Ovládací prvky v galerii svážete s galerií pomocí jejich vlastnosti Default.You wire controls within the gallery, to the gallery, using the controls' Default property.
  • Zdroj dat je rovněž tabulka.The data source is also a table. Před tím, než zdroj dat použijete jako celek, ho tedy můžete pomocí funkcí Filter, Sort, AddColumns a dalších upřesnit a rozšířit.So you can use Filter, Sort, AddColumns, and other functions to refine and augment the data source before using it as a whole. K práci s jednotlivými záznamy můžete použít také funkce Lookup, First, Last a další.You can also use the Lookup, First, Last, and other functions to work with individual records.

Úprava záznamuModify a record

V předchozím oddílu jste zjistili, jak se ze zdroje dat čte.In the prededing section, you saw how to read a data source. Všimněte si, že šipky ve výše uvedeném diagramu jsou jednosměrné.Note that the arrows in the diagram above are one way. Změny, které uděláte ve zdroji dat, se nepřenášejí zpět prostřednictvím stejných vzorců, kterými se data načetla.Changes to a data source aren't pushed back through the same formulas in which the data was retrieved. Místo toho se používají nové vzorce.Instead, new formulas are used. Často se k úpravě záznamu používá jiná obrazovka než k procházení záznamů, zvláště na mobilním zařízení.Often a different screen is used for editing a record than for browsing records, especially on a mobile device.

Abyste mohli upravit existující záznam nějakého zdroje dat, musí tento záznam původně pocházet z tohoto zdroje dat.Note that, to modify an existing record of a data source, the record must have originally come from the data source. Záznam se může přenést přes galerii, kontextovou proměnnou a libovolný počet vzorců, ale jeho původ by mělo jít zpětně vystopovat až ke zdroji dat.The record may have traveled through a gallery, a context variable, and any number of formulas, but its origin should be traceable back to the data source. To je důležité, protože spolu se záznamem se přenášejí další informace, které ho jednoznačně identifikují a zajišťují, že upravujete správný záznam.This is important because additional information travels with the record that uniquely identifies it, ensuring that you modify the correct record.

Předchozí diagram znázorňuje tok informací při aktualizace zdroje dat: The diagram above shows the flow of information to update a data source:

  • Ovládací prvek Formulář pro úpravy funguje jako kontejner pro vstupní karty, které obsahují ovládací prvky pro zadání uživatele, jako je textové zadání nebo posuvník.An Edit form control provides a container for input cards, which are made up of user input controls such as a text-input control or a slider. K identifikaci záznamu, který se má upravit, slouží vlastnosti DataSource a Item.The DataSource and Item properties are used to identify the record to edit.
  • Každá vstupní karta má vlastnost Default, která je obvykle nastavená na pole záznamu ThisItem formuláře.Each input card has a Default property, which is usually set to the field of the form's ThisItem record. Ovládací prvky na vstupní kartě pak přebírají své vstupní hodnoty z vlastnosti Default.The controls within the input card will then take their input values from Default. Normálně toto nastavení nemusíte měnit.Normally you do not need to modify this.
  • Každá vstupní karta zpřístupňuje vlastnost Update.Each input card exposes an Update property. Tato vlastnost mapuje zadání uživatele na konkrétní pole záznamu kvůli zpětnému zápisu do zdroje dat.This property maps the user's input to a specific field of the record for writing back to the data source. Normálně toto nastavení nemusíte měnit.Normally you do not need to modify this.
  • Ovládací prvek tlačítka nebo obrázku na obrazovce umožňuje uživateli uložit změny do záznamu.A button or an image control on the screen enables the user to save changes to the record. Vzorec OnSelect tohoto ovládacího prvku volá za tímto účelem funkci SubmitForm.The OnSelect formula of the control calls the SubmitForm function to do this work. Funkce SubmitForm přečte všechny vlastnosti Update těchto karet a použije je ke zpětnému zápisu do zdroje dat.SubmitForm reads all the Update properties of the cards and uses this to write back to the data source.
  • Někdy můžou nastat problémy.Sometimes there will be issues. Může přestat fungovat síťové připojení nebo ověřovací kontrolu provádí služba, o které aplikace neví.A network connection may be down, or a validation check is made by the service that the app didn't know about. Tyto informace jsou zpřístupněné vlastnostmi Error a ErrorKind formuláře, takže je můžete zobrazit uživateli.The Error and ErrorKind properties of the form control makes this information available, so you can display it to the user.

K odstupňování kontroly nad tímto procesem můžete použít také funkcePatch a Errors.For more fine grained control over the process, you can also use the Patch and Errors function. Ovládací prvek Formulář pro úpravy zpřístupňuje vlastnost Updates, abyste mohli přečíst hodnoty polí na formuláři.The Edit form control exposes an Updates property so that you can read the values of the fields within the form. Pomocí této vlastnosti můžete také při připojení zavolat vlastní konektor a úplně tak obejít funkce Patch a SubmitForm.You can also use this property to call a custom connector on a connection, completely bypassing the Patch and SubmitForm functions.

OvěřeníValidation

Před provedením změny záznamu by aplikace měla všemi možnými způsoby zajistit, aby tato změna byla akceptovatelná.Before making a change to a record, the app should do what it can to make sure the change will be acceptable. To má dva důvody:There are two reasons for this:

  • Okamžitá zpětná vazba uživateli:Immediate feedback to the user. Chybu je nejlepší opravit hned když k ní dojde, dokud ji má uživatel v paměti.The best time to fix a problem is right when it happens, when it is fresh in the user's mind. Při každém dotyku nebo úhozu na klávesu se může objevit červený text, který označuje problém v zadání.Literally with each touch or keystroke, red text can appear that identifies an issue with their entry.
  • Menší síťový provoz a kratší latence uživatele:Less network traffic and less user latency. Větší počet problémů zjištěných v aplikaci znamená menší komunikaci přes síť kvůli zjištění a řešení problémů.More issues detected in the app means fewer conversations over the network to detect and resolve issues. Každá komunikace zabere čas, během kterého musí uživatel čekat, než může pokračovat.Each conversation takes time during which the user must wait before they can move on.

PowerApps nabízí dva nástroje pro ověření:PowerApps offers two tools for validation:

  • Zdroj dat může poskytovat informace o tom, co je a co není platné.The data source can provide information about what is and isn't valid. Čísla můžou mít například minimální a maximální hodnoty a některé položky můžou být povinné.For example, numbers can have minimum and maximum values, and one or more entries can be required. K těmto informacím se dostanete pomocí funkce DataSourceInfo.You can access this information with the DataSourceInfo function.
  • Funkce Validate používá tytéž informace ke kontrole hodnoty v jednom sloupci nebo v celém záznamu.The Validate function uses this same information to check the value of a single column or of an entire record.

Ošetření chybError handling

Výborně, záznam jste ověřili.Great, you've validated your record. Nastal čas ho aktualizovat pomocí funkce Patch.Time to update that record with Patch!

Jenže problémům nemusí být konec.But, alas, there may still be a problem. Síť přestala fungovat, ověření u služby selhalo nebo uživatel nemá ta správná oprávnění – to je jenom několik z možných chyb, na které může vaše aplikace narazit.The network is down, validation at the service failed, or the user doesn't have the right permissions, just to name a few of the possible errors your app may encounter. Musí správně reagovat na chybové situace a poskytnout uživateli zpětnou vazbu a prostředky, jak chybu napravit.It needs to respond appropriately to error situations, providing feedback to the user and a means for them to make it right.

Pokud dojde k chybě u zdroje dat, zaznamená aplikace automaticky informace o této chybě a zpřístupní je prostřednictvím funkce Errors.When errors occur with a data source, your app automatically records the error information and makes it available through the Errors function. Chyby jsou přidružené k záznamům, u kterých nastaly problémy.Errors are associated with the records that had the problems. Pokud se jedná o něco, co může uživatel opravit (například o problém s ověřením), může záznam znovu odeslat a chyby tím vymazat.If the problem is something the user can fix, such as a validation problem, they can resubmit the record, and the errors will be cleared.

Pokud k chybě dojde při vytváření záznamu pomocí funkce Patch nebo Collect, neexistuje žádný záznam, ke kterému se chyby mají přidružit.If an error occurs when a record is created with Patch or Collect, there is no record to associate any errors with. V takovém případě vrátí funkce Patch prázdnou hodnotu, která se dá použít jako druhý argument funkce Errors.In this case, blank will be returned by Patch and can be used as the record argument to Errors. Chyby při vytváření se mažou pomocí další operace.Creation errors are cleared with the next operation.

Funkce Errors vrací tabulku s informacemi o chybě.The Errors function returns a table of error information. Můžou mezi ně patřit informace o sloupci, pokud se dá chyba přisoudit konkrétnímu sloupci.This information can include the column information, if the error can be attributed to a particular column. Chybové zprávy na úrovni sloupce používejte u ovládacích prvků popisků, které jsou poblíž místa, kde se na obrazovce pro úpravy tento sloupec nachází.Use column-level error messages in label controls that are close to where the column is located on the edit screen. Chybové zprávy na úrovni záznamu používejte, když je pole Column v tabulce chyb prázdné, a to v blízkosti tlačítka Uložit pro celý formulář.Use record-level error messages where the Column in the error table is blank, in a location close to the Save button for the entire record.

Práce s rozsáhlými zdroji datWorking with large data sources

Při vytváření sestav z rozsáhlých zdrojů dat (čítajících milióny záznamů) chcete minimalizovat síťový provoz.When you are creating reports from large data sources (perhaps millions of records), you want to minimize network traffic. Dejme tomu, že chcete vytvořit sestavu se všemi zákazníky v New Yorku, jejichž StatusCode má hodnotu Platinum.Let's say you want to report on all Customers having a StatusCode of "Platinum" in New York City. Tabulka Customers přitom obsahuje milióny záznamů.And that your Customers table contains millions of records.

Nechcete načíst tyto milióny zákazníků do své aplikace a pak vybrat ty, které potřebujete.You do not want to bring those millions of Customers into your app, and then choose the ones you want. Chcete, aby k tomuto výběru došlo v cloudové službě, kde je tato tabulka uložená, a přes síť se odeslaly jenom zvolené záznamy.What you want is to have that choosing happen inside the cloud service where your table is stored, and only send the chosen records over the network.

Většina funkcí, které můžete použít k výběru záznamů (ale ne všechny), se dá delegovat, což znamená, že se spouštějí v cloudové službě.Many, but not all, functions that you can use to choose records can be delegated, which means that they are run inside the cloud service. Pokud chcete zjistit, jak na to, přečtěte si téma věnované delegování.You can learn how to do this by reading about Delegation.

KolekceCollections

Kolekce jsou speciálním druhem zdroje dat.Collections are a special kind of data source. Jsou vůči aplikaci lokální a nezávisí na připojení k nějaké službě v cloudu, takže se informace nedají sdílet mezi zařízeními stejného uživatele nebo mezi uživateli.They're local to the app and not backed by a connection to a service in the cloud, so the information can not be shared across devices for the same user or between users. Až na několik výjimek fungují podobně jako jakýkoli jiný zdroj dat:They operate like any other data source, with a few exceptions:

  • Kolekce se dají vytvářet dynamicky pomocí funkce Collect.Collections can be created dynamically with the Collect function. Nemusí být zřízené předem jako zdroje dat založené na připojení.They don't need to be established ahead of time, as connection-based data sources do.
  • Sloupce kolekce je možné kdykoli upravit pomocí funkce Collect.The columns of a collection can be modified at any time using the Collect function.
  • Kolekce umožňují duplicitní záznamy.Collections allow duplicate records. V kolekci může existovat více než jedna kopie stejného záznamu.More than one copy of the same record can exist in a collection. Funkce jako Remove provedou operaci s prvním nalezeným záznamem, pokud není zadaný argument All.Functions such as Remove will operate on the first match they find, unless the All argument is supplied.
  • Pomocí funkcí SaveData a LoadData můžete kopii kolekce uložit a znovu načíst.You can use the SaveData and LoadData functions to save and reload a copy of the collection. Informace jsou uložené v privátním umístění, ke kterému nemají přístup jiní uživatelé, aplikace ani zařízení.The information is stored in a private location that other users, apps, or devices can't access.
  • Pomocí ovládacích prvků Export a Importovat můžete uložit a znovu načíst kopii kolekce do souboru, se kterým může uživatel pracovat.You can use the Export and Import controls to save and reload a copy of the collection to a file that the user can interact with.

Další informace o tom, jak pracovat s kolekcí jako se zdrojem dat, najdete v tématu věnovaném vytvoření a aktualizaci kolekce.For more information on working with a collection as a data source, see create and update a collection.

Kolekce se často používají k uchování globálního stavu aplikace.Collections are commonly used to hold global state for the app. Možnosti dostupné pro správu stavu najdete v tématu o práci s proměnnými.See working with variables for the options available for managing state.