Förstå datakällor i PowerAppsUnderstand data sources in PowerApps

De flesta PowerApps-appar använder extern information som lagras i molntjänster, så kallade datakällor.Most PowerApps apps use external information stored in cloud services called Data Sources. Ett vanligt exempel är en tabell i en Excel-fil som lagras på OneDrive för företag.A common example is a table in an Excel file stored in OneDrive for Business. Appar får åtkomst till dessa datakällor med hjälp av anslutningar.Apps access these data sources by using Connections.

I den här artikeln beskrivs olika typer av datakällor och hur du använder tabelldatakällor.This article discusses the different kinds of data sources, and how to work with table data sources.

Det är enkelt att skapa en app som har grundläggande läsning och skrivning till en datakälla.It is easy to create an app that does basic reading and writing to a data source. Men ibland kan du vilja ha mer kontroll över hur informationen flödar in och ut från din app.But sometimes you want more control over how data flows in and out of your app. I den här artikeln beskrivs hur funktionerna Patch, DataSourceInfo, Validate och Errors ger mer kontroll.This article describes how the Patch, DataSourceInfo, Validate, and Errors functions provide more control.

Olika typer av datakällorKinds of data sources

Datakällor kan vara anslutna till en molntjänst eller finnas lokalt i en app.Data sources can be connected to a cloud service, or they can be local to an app.

Anslutna datakällorConnected data sources

De vanligaste datakällorna är tabeller, som du kan använda för att hämta och lagra information.The most common data sources are tables, which you can use to retrieve and store information. Du kan använda anslutningar till datakällor för att läsa och skriva data i Microsoft Excel-arbetsböcker, SharePoint-listor, SQL-tabeller och många andra format Dessa kan sedan lagras i molntjänster som OneDrive för företag, DropBox, SQL Server osv.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.

Andra datakällor än tabeller är bland annat e-post, kalendrar, Twitter och meddelanden, men denna artikel tar inte upp dessa andra typer av datakällor.Data sources other than tables include email, calendars, Twitter, and notifications, but this article doesn't discuss these other kinds of data sources.

Lokala datakällorLocal data sources

Med hjälp av kontrollerna Gallery, Display form och Edit form är det enkelt att skapa en app som läser och skriver data från en datakälla.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. Läs artikeln Förstå dataformulär för att komma igång.To get started, read the article Understand data forms.

När du vill att PowerApps ska skapa en app från data, används dessa kontroller.When you ask PowerApps to create an app from data, these controls are used. Appen använder en intern tabell i bakgrunden för att lagra och ändra data som kommer från datakällan.Behind the scenes, the app uses an internal table to store and manipulate the data that comes from the data source.

En samling är en särskild typ av datakälla. Den är lokal i appen och säkerhetskopieras inte av någon anslutning till en tjänst i molnet. Det innebär att informationen inte kan delas mellan enheter hos samma användare eller mellan användare.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. Samlingar kan läsas in och sparas lokalt.Collections can be loaded and saved locally.

Olika typer av tabellerKinds of tables

Tabeller som är interna i en PowerApps-app är fasta värden, precis som ett tal eller en sträng är ett värde.Tables that are internal to a PowerApps app are fixed values, just as a number or a string is a value. Interna tabeller lagras inte någonstans, de finns bara i din apps minne.Internal tables aren't stored anywhere, they just exist in your app's memory. Du kan inte ändra struktur och data i en tabell.You can't directly modify the structure and data of a table. Vad du i stället kan göra är att skapa en ny tabell med hjälp av en formel. Du använder då formeln till att göra en ändrad kopia av den ursprungliga tabellen.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.

Externa tabeller lagras i en datakälla för senare hämtning och delning.External tables are stored in a data source for later retrieval and sharing. PowerApps innehåller ”anslutningar” för att kunna läsa och skriva lagrade data.PowerApps provides "connections" to read and write stored data. Inom en anslutning har du åtkomst till flera olika tabeller med information.Within a connection, you can access multiple tables of information. Du väljer vilka tabeller som ska användas i din app och var och en blir en separat datakälla.You'll select which tables to use in your app, and each will become a separate data source.

I Arbeta med tabeller ges mer information om interna tabeller, men detta gäller även för externa tabeller som finns i en molntjänst.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.

Arbeta med tabellerWorking with tables

Du kan använda tabelldatakällor på samma sätt som du använder en intern PowerApps-tabell.You can use table data sources the same way that you use an internal PowerApps table. Precis som i en intern tabell har varje datakälla poster, kolumner och egenskaper som du kan använda i formler.Just like an internal table, each data source has records, columns, and properties that you can use in formulas. Dessutom gäller följande:In addition:

  • Datakällan har samma kolumnnamn och datatyper som den underliggande tabellen i anslutningen.The data source has the same column names and data types as the underlying table in the connection.

    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.

  • Datakällan läses in från tjänsten automatiskt när appen läses in.The data source is loaded from the service automatically when the app is loaded. Du kan tvinga fram en uppdatering av datan med hjälp av funktionen Uppdatera.You can force the data to refresh by using the Refresh function.
  • När användarna kör en app kan de skapa, ändra och ta bort poster, samt skicka tillbaka ändringarna till den underliggande tabellen i tjänsten.As users run an app, they can create, modify, and delete records and push those changes back to the underlying table in the service.
    • Poster kan skapas med funktionerna Patch och Collect.Records can be created with the Patch and Collect functions.
    • Poster kan ändras med funktionerna Patch, Update och UpdateIf.Records can be modified with the Patch, Update, and UpdateIf functions.
    • Poster kan tas bort med funktionerna Remove och RemoveIf.Records can be removed with the Remove and RemoveIf functions.
    • Fel som uppstår när du arbetar med en datakälla är tillgängliga via funktionen Errors.Errors when working with a data source are available through the Errors function.
  • I funktionerna DataSourceInfo, Defaults och Validate finns information om datakällan som du kan använda för att optimera användarupplevelsen.The DataSourceInfo, Defaults, and Validate functions provide information about the data source that you can use to optimize the user experience.

Skapa datakällorCreating data sources

PowerApps kan inte användas för att skapa en ansluten datakälla eller ändra dess struktur. Datakällan måste redan finnas i en tjänst någonstans.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. Om du till exempel vill skapa en tabell i en Excel-arbetsbok som lagras på OneDrive, använder du först Excel Online på OneDrive för att skapa en arbetsbok.For example, to create a table in an Excel workbook stored on OneDrive, you first use Excel Online on OneDrive to create a workbook. Sedan skapar en anslutning till den från din app.Next you create a connection to it from your app.

Samlingar av datakällor kan dock skapas och ändras i en app, men de är bara tillfälliga.However, collection data sources can be created and modified inside an app, but are only temporary.

Visa en eller flera posterDisplay one or more records

I diagrammet ovan visas informationsflödet när en app läser informationen i en datakälla: The diagram above shows the flow of information when an app reads the information in a data source:

  • Informationen lagras och delas via en lagringstjänst (i det här fallet en SharePoint-lista på en Office 365-plats).The information is stored and shared through a storage service (in this case, a SharePoint list of an Office 365 site).
  • En anslutning gör informationen tillgänglig för appen.A connection makes this information available to the app. Anslutningen tar hand om autentiseringen så att användaren får åtkomst till informationen.The connection takes care of authentication of the user to access the information.
  • När appen startas eller funktionen Uppdatera används, hämtas information från anslutningen till en datakälla i appen för lokal användning.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.
  • Formler som används för att läsa informationen och visa den, styr vad användaren kan se.Formulas are used to read the information and expose it in controls that the user can see. Du kan visa posterna i en datakälla med hjälp av ett galleri på en skärm och koppla egenskapen Items till datakällan: Gallery.Items = DataSource.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. Du kopplar kontroller i galleriet till galleriet med hjälp av kontrollegenskapen Default.You wire controls within the gallery, to the gallery, using the controls' Default property.
  • Datakällan är också en tabell.The data source is also a table. Det innebär att du kan använda funktionerna Filter, Sort, AddColumns m.fl. för att förfina och utöka datakällan innan den används som helhet.So you can use Filter, Sort, AddColumns, and other functions to refine and augment the data source before using it as a whole. Du kan också använda funktionerna Lookup, First, Last m.fl. när du vill arbeta med enskilda poster.You can also use the Lookup, First, Last, and other functions to work with individual records.

Ändra en postModify a record

I föregående avsnitt visade vi hur man läser en datakälla.In the prededing section, you saw how to read a data source. Observera att pilarna i diagrammet ovan bara är ett av sätten.Note that the arrows in the diagram above are one way. Ändringar i en datakälla skickas inte tillbaka via samma formler som datan hämtades med.Changes to a data source aren't pushed back through the same formulas in which the data was retrieved. Nya formler används i stället.Instead, new formulas are used. Oftast används en annan skärm för att redigera en post än för att bläddra bland poster, särskilt på en mobil enhet.Often a different screen is used for editing a record than for browsing records, especially on a mobile device.

Observera att om du vill ändra en befintlig post i en datakälla, måste posten ursprungligen komma från den datakällan.Note that, to modify an existing record of a data source, the record must have originally come from the data source. Posten kan ha färdats via ett galleri, en sammanhangsvariabel och ett antal formler, men dess ursprung ska kunna spåras tillbaka till datakällan.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. Detta är viktigt eftersom ytterligare information överförs tillsammans med posten för att unikt kunna identifiera den, vilket säkerställer att du ändrar rätt post.This is important because additional information travels with the record that uniquely identifies it, ensuring that you modify the correct record.

I diagrammet ovan visas informationsflödet när man uppdaterar en datakälla: The diagram above shows the flow of information to update a data source:

  • Kontrollen Redigera formulär innehåller en behållare för indatakort. Den består av användarens indatakontroller, till exempel en textinmatningskontroll eller ett skjutreglage.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. Egenskaperna DataSource och Item används för att identifiera posten som ska redigeras.The DataSource and Item properties are used to identify the record to edit.
  • Varje indatakort har en Default-egenskap som vanligen är inställd på fältet i formulärets ThisItem-post.Each input card has a Default property, which is usually set to the field of the form's ThisItem record. Kontrollerna på indatakortet hämtar sedan sina indatavärden från Default.The controls within the input card will then take their input values from Default. Vanligtvis behöver du inte ändra det här.Normally you do not need to modify this.
  • Varje indatakort visar en egenskap för Update.Each input card exposes an Update property. Egenskapen mappar användarens indata till ett specifikt fält i posten som skriver tillbaka till datakällan.This property maps the user's input to a specific field of the record for writing back to the data source. Vanligtvis behöver du inte ändra det här.Normally you do not need to modify this.
  • Användaren kan använda en knapp eller en bildkontroll på skärmen för att spara ändringar i posten.A button or an image control on the screen enables the user to save changes to the record. Formeln OnSelect i kontrollen anropar funktionen SubmitForm som utför arbetet.The OnSelect formula of the control calls the SubmitForm function to do this work. SubmitForm läser in alla Update-egenskaper på korten och använder dem när den skriver tillbaka till datakällan.SubmitForm reads all the Update properties of the cards and uses this to write back to the data source.
  • Ibland uppstår det problem.Sometimes there will be issues. En nätverksanslutning kanske ligger nere, eller en verifieringskontroll av tjänsten görs som appen inte kände till.A network connection may be down, or a validation check is made by the service that the app didn't know about. Egenskaperna Error och ErrorKind i formulärkontrollen gör informationen tillgänglig, så att du kan visa den för användaren.The Error and ErrorKind properties of the form control makes this information available, so you can display it to the user.

Om du vill ha en mer detaljerad kontroll över processen kan du också använda funktionen Patch och Errors.For more fine grained control over the process, you can also use the Patch and Errors function. Kontrollen Redigera formulär visar egenskapen Update, där du kan läsa värdena för fälten i formuläret.The Edit form control exposes an Updates property so that you can read the values of the fields within the form. Du kan också använda den här egenskapen för att anropa en anpassad anslutningsapp i en anslutning, vilket helt kringgår funktionerna Patch och SubmitForm.You can also use this property to call a custom connector on a connection, completely bypassing the Patch and SubmitForm functions.

VerifieringValidation

Innan du gör en ändring i en post bör göra appen allt den kan för att se till att ändringen kommer att godkännas.Before making a change to a record, the app should do what it can to make sure the change will be acceptable. Det finns två skäl till detta:There are two reasons for this:

  • Omedelbar feedback till användaren.Immediate feedback to the user. Det är bäst att korrigera problemet direkt när det uppstår, medan användaren kommer ihåg vad som hände.The best time to fix a problem is right when it happens, when it is fresh in the user's mind. Röd text kan med bokstavligen varje tangenttryckning visas för att identifiera ett problem med inmatningen.Literally with each touch or keystroke, red text can appear that identifies an issue with their entry.
  • Mindre nätverkstrafik och kortare svarstid för användarna.Less network traffic and less user latency. Ju fler problem som identifieras i appen, ju färre konversationer över nätverket för att identifiera och lösa problem.More issues detected in the app means fewer conversations over the network to detect and resolve issues. Varje konversation tar tid och användarna måste vänta innan de kan gå vidare.Each conversation takes time during which the user must wait before they can move on.

PowerApps erbjuder två verktyg för verifiering:PowerApps offers two tools for validation:

  • Datakällan kan ge information om vad som är och är inte giltigt.The data source can provide information about what is and isn't valid. Till exempel kan tal ha lägsta och högsta värden och en eller flera poster kan krävas.For example, numbers can have minimum and maximum values, and one or more entries can be required. Du kan komma åt den här informationen med funktionen DataSourceInfo.You can access this information with the DataSourceInfo function.
  • Funktionen Validate använder samma information för att kontrollera värdet för en enda kolumn eller för en hel post.The Validate function uses this same information to check the value of a single column or of an entire record.

FelhanteringError handling

Bra, du har verifierat din post.Great, you've validated your record. Det är dags att uppdatera posten med Patch!Time to update that record with Patch!

Men det kan dock fortfarande finnas problem kvar.But, alas, there may still be a problem. Nätverket är inte tillgängligt, verifiering av tjänsten misslyckades, eller användaren har inte rätt behörigheter, bara för att nämna några möjliga fel som din app kan stöta på.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. Den måste svara på rätt sätt vid felsituationer, ge feedback till användaren och ge dem möjlighet att göra rätt.It needs to respond appropriately to error situations, providing feedback to the user and a means for them to make it right.

När det uppstår fel med en datakälla registrerar din app automatiskt felinformationen och gör den tillgänglig via funktionen Errors.When errors occur with a data source, your app automatically records the error information and makes it available through the Errors function. Felen är associerade med de poster som hade problem.Errors are associated with the records that had the problems. Om problemet är något som användaren kan korrigera, till exempel ett verifieringsproblem, kan de skicka posten igen och felen kommer att tas bort.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.

Om ett fel inträffar när en post skapas med Patch eller Collect, finns det ingen post att associera felet med.If an error occurs when a record is created with Patch or Collect, there is no record to associate any errors with. I det här fallet returneras en tom post av Patch som kan användas som argument till Errors.In this case, blank will be returned by Patch and can be used as the record argument to Errors. Fel vid skapande rensas med nästa åtgärd.Creation errors are cleared with the next operation.

Funktionen Errors returnerar en tabell med felinformation.The Errors function returns a table of error information. Den här informationen kan innehålla kolumninformation, om felet kan härledas till en viss kolumn.This information can include the column information, if the error can be attributed to a particular column. Använd felmeddelanden på kolumnnivå i etikettkontroller som ligger nära där kolumnen är placerad på redigeringsskärmen.Use column-level error messages in label controls that are close to where the column is located on the edit screen. Använd felmeddelanden på postnivå när kolumnen i feltabellen är tom och är placerad nära knappen Spara för hela posten.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.

Arbeta med stora datakällorWorking with large data sources

När du skapar rapporter från stora datakällor (kanske miljontals poster) vill du minimera nätverkstrafiken.When you are creating reports from large data sources (perhaps millions of records), you want to minimize network traffic. Anta att du vill rapportera om alla kunder som har statuskoden ”Platina” i New York City.Let's say you want to report on all Customers having a StatusCode of "Platinum" in New York City. Och att kundtabellen innehåller miljontals poster.And that your Customers table contains millions of records.

Du vill inte ha in dessa miljoner kunder i din app och därefter välja de som är relevanta.You do not want to bring those millions of Customers into your app, and then choose the ones you want. Du vill i stället välja vad som händer i molntjänsten där tabellen lagras och därefter endast skicka de valda posterna över nätverket.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.

De flesta av de funktioner som du kan använda för att välja poster kan vara delegerade, vilket innebär att de körs i molntjänsten.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. Du kan lära dig hur du gör detta genom att läsa mer om Delegering.You can learn how to do this by reading about Delegation.

SamlingarCollections

Samlingar är en särskild typ av datakälla.Collections are a special kind of data source. De är lokala i appen och säkerhetskopieras inte av någon anslutning till en tjänst i molnet. Det innebär att informationen inte kan delas mellan enheter hos samma användare eller mellan användare.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. De fungerar som andra datakällor, med några undantag:They operate like any other data source, with a few exceptions:

  • Samlingar kan skapas dynamiskt med funktionen Collect.Collections can be created dynamically with the Collect function. De behöver inte fastställas i förväg som anslutningsbaserade datakällor måste göras.They don't need to be established ahead of time, as connection-based data sources do.
  • Kolumner i en samling kan ändras när som helst med funktionen Collect.The columns of a collection can be modified at any time using the Collect function.
  • Samlingar tillåter dubblettposter.Collections allow duplicate records. Mer än en kopia av samma post kan finnas i en samling.More than one copy of the same record can exist in a collection. Funktioner som t.ex. Remove kommer att användas på den första matchningen som hittas, såvida inte argumentet Alla har angetts.Functions such as Remove will operate on the first match they find, unless the All argument is supplied.
  • Du kan använda funktionerna SaveData och LoadData för att spara och läsa in en kopia av samlingen.You can use the SaveData and LoadData functions to save and reload a copy of the collection. Informationen lagras på en privat plats som andra användare, appar och enheter inte kan komma åt.The information is stored in a private location that other users, apps, or devices can't access.
  • Du kan använda kontrollerna Export och Import för att spara och läsa in en kopia av samlingen i en fil som användaren kan interagera med.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.

Mer information om hur du arbetar med en samling som en datakälla finns i Skapa och uppdatera en samling.For more information on working with a collection as a data source, see create and update a collection.

Samlingar används ofta för att lagra globala tillstånd för appen.Collections are commonly used to hold global state for the app. Se i Arbeta med variabler vilka tillgängliga alternativ som finns för att hantera tillstånd.See working with variables for the options available for managing state.