Comprendre les sources de données dans PowerAppsUnderstand data sources in PowerApps

La plupart des applications PowerApps utilisent des informations externes stockées dans des services cloud appelés sources de données.Most PowerApps apps use external information stored in cloud services called Data Sources. Un exemple courant est une table dans un fichier Excel stocké dans OneDrive Entreprise.A common example is a table in an Excel file stored in OneDrive for Business. Les applications accèdent à ces sources de données à l’aide de connexions.Apps access these data sources by using Connections.

Cet article décrit les différents types de sources de données et la façon d’utiliser les sources de données de table.This article discusses the different kinds of data sources, and how to work with table data sources.

Vous pouvez facilement créer une application qui effectue les fonctions basiques de lecture et d’écriture sur une source de données.It is easy to create an app that does basic reading and writing to a data source. Mais parfois, vous préférez contrôler davantage la manière dont vos données circulent dans et en dehors de votre application.But sometimes you want more control over how data flows in and out of your app. Cet article décrit comment les fonctions Patch, DataSourceInfo, Validate et Errors peuvent vous donner plus de contrôle.This article describes how the Patch, DataSourceInfo, Validate, and Errors functions provide more control.

Types de sources de donnéesKinds of data sources

Les sources de données peuvent être connectées à un service cloud ou être stockées en local dans une application.Data sources can be connected to a cloud service, or they can be local to an app.

Sources de données connectéesConnected data sources

Les sources de données les plus courantes sont les tableaux qui vous permettent de récupérer et de stocker des informations.The most common data sources are tables, which you can use to retrieve and store information. Vous pouvez utiliser des connexions aux sources de données pour lire et écrire des données dans des classeurs Microsoft Excel, des listes SharePoint, des tables SQL et de nombreux autres formats, qui peuvent être stockés dans des services cloud comme OneDrive Entreprise, DropBox, SQL Server, etc.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.

Les sources de données autres que les tableaux sont le courrier électronique, les calendriers, Twitter et les notifications, mais cet article ne les aborde pas.Data sources other than tables include email, calendars, Twitter, and notifications, but this article doesn't discuss these other kinds of data sources.

Sources de données localesLocal data sources

Les contrôles Gallery, Display form et Edit form vous permettent de créer facilement une application qui lit et écrit des données à partir d’une source de données.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. Pour commencer, consultez l’article Understand data forms in Microsoft PowerApps (Comprendre les formulaires de données dans Microsoft PowerApps).To get started, read the article Understand data forms.

Lorsque vous demandez à PowerApps de créer une application à partir des données, ces contrôles sont utilisés.When you ask PowerApps to create an app from data, these controls are used. Dans les coulisses, l’application utilise une table interne pour stocker et manipuler les données provenant de la source de données.Behind the scenes, the app uses an internal table to store and manipulate the data that comes from the data source.

Un type spécial de source de données est la collection, qui est stockée en local dans l’application et n’est pas appuyée par une connexion à un service dans le cloud, donc les informations ne peuvent pas être partagées sur plusieurs appareils pour le même utilisateur ou entre les utilisateurs.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. Les collections peuvent être chargées et enregistrées localement.Collections can be loaded and saved locally.

Types de tablesKinds of tables

Les tables qui sont internes à une application PowerApps sont des valeurs fixes, tout comme un nombre ou une chaîne sont des valeurs.Tables that are internal to a PowerApps app are fixed values, just as a number or a string is a value. Les tables internes ne sont pas stockées n’importe où, elles existent uniquement dans la mémoire de votre application.Internal tables aren't stored anywhere, they just exist in your app's memory. Vous ne pouvez pas modifier directement la structure et les données d’une table.You can't directly modify the structure and data of a table. À la place, vous pouvez créer une table via une formule : cette formule vous permet d’effectuer une copie modifiée de la table d’origine.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.

Les tables externes sont stockées dans une source de données pour les partager et les récupérer ultérieurement.External tables are stored in a data source for later retrieval and sharing. PowerApps fournit des « connexions » pour lire et écrire des données stockées.PowerApps provides "connections" to read and write stored data. Dans une connexion, vous pouvez accéder à plusieurs tables de données.Within a connection, you can access multiple tables of information. Vous allez sélectionner les tables à utiliser dans votre application, et chacune sera une source de données distincte.You'll select which tables to use in your app, and each will become a separate data source.

Pour en savoir plus, l’article Understand tables and records in PowerApps (Comprendre les tables et les enregistrements dans PowerApps) aborde plus en détail les tables internes, mais couvre également les tables externes qui résident dans un service cloud.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.

Utilisation des tablesWorking with tables

Vous pouvez utiliser les sources de données de table de la même façon qu’un table PowerApps interne.You can use table data sources the same way that you use an internal PowerApps table. À l’instar d’une table interne, chaque source de données comprend des enregistrements, des colonneset des propriétés que vous pouvez utiliser dans les formules.Just like an internal table, each data source has records, columns, and properties that you can use in formulas. En outre :In addition:

  • La source de données a les mêmes noms de colonnes et types de données que la table sous-jacente dans la connexion.The data source has the same column names and data types as the underlying table in the connection.

    Remarque : pour des sources de données Excel ou SharePoint contenant des noms de colonne avec des espaces, PowerApps remplace les espaces par « _x0020_ ».Note: For SharePoint and Excel data sources that contain column names with spaces, PowerApps will replace the spaces with "_x0020_". Par exemple, le libellé « Nom de colonne » dans SharePoint ou Excel apparaît sous la forme « Nom_x0020_de_x0020_colonne » dans PowerApps quand il s’affiche dans la mise en page des données ou est utilisé dans une formule.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.

  • La source de données est automatiquement chargée à partir du service lorsque l’application est chargée.The data source is loaded from the service automatically when the app is loaded. Vous pouvez forcer l’actualisation des données à l’aide de la fonction Refresh.You can force the data to refresh by using the Refresh function.
  • À mesure que les utilisateurs exécutent une application, ils peuvent créer, modifier et supprimer des enregistrements et transmettre ces modifications à la table sous-jacente dans le service.As users run an app, they can create, modify, and delete records and push those changes back to the underlying table in the service.
    • Les enregistrements peuvent être créés avec les fonctions Patch et Collect.Records can be created with the Patch and Collect functions.
    • Les enregistrements peuvent être modifiés avec les fonctions Patch, Update et UpdateIf.Records can be modified with the Patch, Update, and UpdateIf functions.
    • Les enregistrements peuvent être supprimés avec les fonctions Remove et RemoveIf.Records can be removed with the Remove and RemoveIf functions.
    • Les erreurs lorsque vous utilisez une source de données sont disponibles via la fonction Errors.Errors when working with a data source are available through the Errors function.
  • Les fonctions DataSourceInfo, Defaults et Validate fournissent des informations sur la source de données que vous pouvez utiliser pour optimiser l’expérience utilisateur.The DataSourceInfo, Defaults, and Validate functions provide information about the data source that you can use to optimize the user experience.

Création de sources de donnéesCreating data sources

PowerApps ne peut pas être utilisé pour créer une source de données connectée, ni pour modifier sa structure ; la source de données doit déjà exister dans un service quelque part.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. Par exemple, pour créer une table dans un classeur Excel stocké sur OneDrive, vous utilisez tout d’abord Excel Online sur OneDrive pour créer un classeur.For example, to create a table in an Excel workbook stored on OneDrive, you first use Excel Online on OneDrive to create a workbook. Ensuite, vous créez une connexion vers celui-ci à partir de votre application.Next you create a connection to it from your app.

Toutefois, les sources de données de collection peuvent être créées et modifiées à l’intérieur d’une application, mais sont uniquement temporaires.However, collection data sources can be created and modified inside an app, but are only temporary.

Afficher un ou plusieurs enregistrementsDisplay one or more records

Le diagramme ci-dessus montre comment les informations circulent lorsqu’une application lit les informations contenues dans une source de données : The diagram above shows the flow of information when an app reads the information in a data source:

  • Les informations sont stockées et partagées via un service de stockage (ici, une liste SharePoint d’un site Office 365).The information is stored and shared through a storage service (in this case, a SharePoint list of an Office 365 site).
  • Une connexion rend ces informations disponibles pour l’application.A connection makes this information available to the app. La connexion prend en charge l’authentification de l’utilisateur pour accéder aux informations.The connection takes care of authentication of the user to access the information.
  • Lorsque l’application est lancée ou quand vous appuyez sur la fonction Refresh, les informations sont extraites à partir de la connexion vers une source de données dans l’application pour une utilisation locale.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.
  • Les formules sont utilisées pour lire les informations et les exposer dans des contrôles que l’utilisateur peut voir.Formulas are used to read the information and expose it in controls that the user can see. Vous pouvez afficher les enregistrements d’une source de données à l’aide d’une galerie sur un écran et en reliant la propriété Items à la source de données : 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. Vous reliez les contrôles dans la galerie, vers la galerie, à l’aide de la propriété Default des contrôles.You wire controls within the gallery, to the gallery, using the controls' Default property.
  • La source de données est également une table.The data source is also a table. Vous pouvez donc utiliser les fonctions Filter, Sort, AddColumns et d’autres pour affiner et compléter la source de données avant de l’utiliser comme un tout.So you can use Filter, Sort, AddColumns, and other functions to refine and augment the data source before using it as a whole. Vous pouvez également utiliser les fonctions Lookup, First, Last et d’autres pour travailler avec des enregistrements individuels.You can also use the Lookup, First, Last, and other functions to work with individual records.

Modifier un enregistrementModify a record

Dans la section précédente, vous avez vu comment lire une source de données.In the prededing section, you saw how to read a data source. Notez que les flèches dans le diagramme ci-dessus ne vont que dans une seule direction.Note that the arrows in the diagram above are one way. Les modifications apportées à une source de données ne sont pas transmises via les mêmes formules que celles permettant la récupération des données.Changes to a data source aren't pushed back through the same formulas in which the data was retrieved. Au lieu de cela, de nouvelles formules sont utilisées.Instead, new formulas are used. Un autre écran, différent de celui permettant de parcourir les enregistrements, est souvent utilisé pour modifier un enregistrement, en particulier sur un appareil mobile.Often a different screen is used for editing a record than for browsing records, especially on a mobile device.

Notez que, pour modifier un enregistrement existant d’une source de données, l’enregistrement doit initialement provenir de la source de données.Note that, to modify an existing record of a data source, the record must have originally come from the data source. L’enregistrement peut avoir traversé une galerie, une variable contextuelle et n’importe quel nombre de formules, mais son origine doit être la source de données.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. Cela est important, car les informations supplémentaires sont transmises avec l’enregistrement qui les identifie de façon unique, pour s’assurer que vous modifiez le bon enregistrement.This is important because additional information travels with the record that uniquely identifies it, ensuring that you modify the correct record.

Le diagramme ci-dessus montre comment les informations circulent pour mettre à jour une source de données : The diagram above shows the flow of information to update a data source:

  • Un contrôle Edit form fournit un conteneur pour les cartes d’entrée, qui sont constituées de contrôles d’entrée utilisateur, comme un contrôle d’entrée de texte ou un curseur.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. Les propriétés DataSource et Item sont utilisées pour identifier l’enregistrement à modifier.The DataSource and Item properties are used to identify the record to edit.
  • Chaque carte d’entrée comprend une propriété Default, qui est généralement définie sur le champ de l’enregistrement ThisItem du formulaire.Each input card has a Default property, which is usually set to the field of the form's ThisItem record. Les contrôles au sein de la carte d’entrée prennent ensuite leurs valeurs d’entrée à partir de Default.The controls within the input card will then take their input values from Default. Normalement, vous n’avez pas besoin de modifier cela.Normally you do not need to modify this.
  • Chaque carte d’entrée expose une propriété Update.Each input card exposes an Update property. Cette propriété mappe l’entrée de l’utilisateur à un champ spécifique de l’enregistrement pour l’écriture sur la source de données.This property maps the user's input to a specific field of the record for writing back to the data source. Normalement, vous n’avez pas besoin de modifier cela.Normally you do not need to modify this.
  • Un contrôle de bouton ou d’image à l’écran permet à l’utilisateur d’enregistrer les modifications apportées à l’enregistrement.A button or an image control on the screen enables the user to save changes to the record. La formule OnSelect appelle la fonction SubmitForm pour faire ce travail.The OnSelect formula of the control calls the SubmitForm function to do this work. SubmitForm lit toutes les propriétés Update des cartes et les utilise pour écrire dans la source de données.SubmitForm reads all the Update properties of the cards and uses this to write back to the data source.
  • Parfois, certains problèmes se présentent.Sometimes there will be issues. Une connexion réseau peut être hors service ou un contrôle de validation est effectué par un service que l’application ne connaît pas.A network connection may be down, or a validation check is made by the service that the app didn't know about. Les propriétés Error et ErrorKind du contrôle de formulaire rendent ces informations disponibles pour que vous puissiez les afficher pour l’utilisateur.The Error and ErrorKind properties of the form control makes this information available, so you can display it to the user.

Pour un contrôle plus poussé du processus, vous pouvez également utiliser les fonctions Patch et Errors.For more fine grained control over the process, you can also use the Patch and Errors function. Le contrôle Edit form expose une propriété Updates afin que vous puissiez lire les valeurs des champs dans le formulaire.The Edit form control exposes an Updates property so that you can read the values of the fields within the form. Vous pouvez également utiliser cette propriété pour appeler un connecteur personnalisé sur une connexion, en contournant complètement les fonctions Patch et SubmitForm.You can also use this property to call a custom connector on a connection, completely bypassing the Patch and SubmitForm functions.

ValidationValidation

Avant d’apporter une modification à un enregistrement, l’application doit faire ce qu’elle peut pour s’assurer que la modification est acceptable.Before making a change to a record, the app should do what it can to make sure the change will be acceptable. Il existe deux raisons à cela :There are two reasons for this:

  • Retour immédiat pour l’utilisateur.Immediate feedback to the user. Le meilleur moment pour résoudre un problème est dès qu’il survient, quand l’utilisateur sait encore de quoi il s’agit.The best time to fix a problem is right when it happens, when it is fresh in the user's mind. Avec littéralement chaque touche ou combinaison de touches, du texte en rouge peut s’afficher et identifier un problème relatif à l’entrée.Literally with each touch or keystroke, red text can appear that identifies an issue with their entry.
  • Moins de trafic réseau et moins de latence pour l’utilisateur.Less network traffic and less user latency. Davantage de problèmes détectés dans l’application signifie moins de conversations sur le réseau pour détecter et résoudre les problèmes.More issues detected in the app means fewer conversations over the network to detect and resolve issues. Chaque conversation prend un certain temps pendant lequel l’utilisateur doit attendre avant de passer à autre chose.Each conversation takes time during which the user must wait before they can move on.

PowerApps propose deux outils pour la validation :PowerApps offers two tools for validation:

  • La source de données peut fournir des informations sur ce qui est valide et ce qui ne l’est pas.The data source can provide information about what is and isn't valid. Par exemple, les nombres peuvent avoir des valeurs minimales et maximales, et une ou plusieurs entrées peuvent être nécessaires.For example, numbers can have minimum and maximum values, and one or more entries can be required. Vous pouvez accéder à ces informations avec la fonction DataSourceInfo.You can access this information with the DataSourceInfo function.
  • La fonction Validate utilise ces mêmes informations pour vérifier la valeur d’une seule colonne ou d’un enregistrement complet.The Validate function uses this same information to check the value of a single column or of an entire record.

Gestion des erreursError handling

Très bien, vous avez validé votre enregistrement.Great, you've validated your record. Il est temps de le mettre à jour avec Patch !Time to update that record with Patch!

Mais, malheureusement, un problème peut subsister.But, alas, there may still be a problem. Le réseau est hors service, la validation au niveau du service a échoué, ou l’utilisateur n’a pas les autorisations appropriées, entre autres erreur que votre application peut rencontrer.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. Elle doit répondre de façon appropriée aux situations d’erreur en fournissant un retour à l’utilisateur et un moyen lui permettant de corriger les problèmes.It needs to respond appropriately to error situations, providing feedback to the user and a means for them to make it right.

Lorsque des erreurs se produisent avec une source de données, votre application enregistre automatiquement les informations d’erreur et les rend disponibles via la fonction Errors.When errors occur with a data source, your app automatically records the error information and makes it available through the Errors function. Les erreurs sont associées aux enregistrements ayant des problèmes.Errors are associated with the records that had the problems. Si le problème peut être corrigé par l’utilisateur, comme un problème de validation, il peut à nouveau envoyer l’enregistrement et les erreurs sont effacées.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.

Si une erreur se produit lorsqu’un enregistrement est créé avec Patch ou Collect, il n’existe aucun enregistrement à associer aux erreurs.If an error occurs when a record is created with Patch or Collect, there is no record to associate any errors with. Ici, une valeur vide sera renvoyée par Patch et peut être utilisée comme argument d’enregistrement pour Errors.In this case, blank will be returned by Patch and can be used as the record argument to Errors. Les erreurs de création sont effacées à l’opération suivante.Creation errors are cleared with the next operation.

La fonction Errors renvoie une table d’informations d’erreur.The Errors function returns a table of error information. Ces informations peuvent inclure des informations de colonnes si l’erreur peut être attribuée à une colonne particulière.This information can include the column information, if the error can be attributed to a particular column. Utilisez des messages d’erreur au niveau des colonnes dans les contrôles d’étiquettes qui sont proches de l’endroit où la colonne se trouve sur l’écran de modification.Use column-level error messages in label controls that are close to where the column is located on the edit screen. Utilisez des messages d’erreur au niveau des enregistrements là où la colonne dans la table d’erreur est vide, dans un emplacement proche du bouton Enregistrer pour l’ensemble de l’enregistrement.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.

Utilisation de sources de données volumineusesWorking with large data sources

Lorsque vous créez des rapports à partir de sources de données volumineuses (comptant peut-être des millions d’enregistrements), vous préférez réduire le trafic réseau.When you are creating reports from large data sources (perhaps millions of records), you want to minimize network traffic. Supposons que vous vouliez créer un rapport sur tous les clients ayant un StatusCode de « Platinum » à New York.Let's say you want to report on all Customers having a StatusCode of "Platinum" in New York City. Et que votre table nommée Customers contient des millions d’enregistrements.And that your Customers table contains millions of records.

Vous ne souhaitez pas importer ces millions de clients dans votre application, puis choisir ceux que vous souhaitez.You do not want to bring those millions of Customers into your app, and then choose the ones you want. Ce que vous voulez, c’est que ce choix se fasse dans le service cloud dans lequel votre table est stockée et que seuls les enregistrements sélectionnés soient envoyés sur le réseau.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.

La plupart des fonctions que vous pouvez utiliser pour choisir les enregistrements peuvent être déléguées, ce qui signifie qu’elles sont exécutées dans le service cloud.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. Vous pouvez apprendre à faire cela en lisant l’article Understand delegation (Comprendre la délégation).You can learn how to do this by reading about Delegation.

CollectionsCollections

Les collections sont un type spécial de source de données.Collections are a special kind of data source. Elles sont stockées en local dans l’application et ne sont pas appuyées par une connexion à un service dans le cloud, donc les informations ne peuvent pas être partagées sur plusieurs appareils pour le même utilisateur ou entre les utilisateurs.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. Elles fonctionnent comme toute autre source de données, à quelques exceptions près :They operate like any other data source, with a few exceptions:

  • Les collections peuvent être créées dynamiquement avec la fonction Collect.Collections can be created dynamically with the Collect function. Il n’est pas nécessaire qu’elles soient établies à l’avance, à l’inverse des sources de données basées sur une connexion.They don't need to be established ahead of time, as connection-based data sources do.
  • Les colonnes d’une collection peuvent être modifiées à tout moment à l’aide de la fonction Collect.The columns of a collection can be modified at any time using the Collect function.
  • Les collections autorisent les enregistrements en double.Collections allow duplicate records. Plusieurs copies du même enregistrement peuvent exister dans une collection.More than one copy of the same record can exist in a collection. Les fonctions telles que Remove fonctionneront sur la première correspondance qu’elles trouvent, sauf si l’argument All est fourni.Functions such as Remove will operate on the first match they find, unless the All argument is supplied.
  • Vous pouvez utiliser les fonctions SaveData et LoadData pour enregistrer et recharger une copie de la collection.You can use the SaveData and LoadData functions to save and reload a copy of the collection. Les informations sont stockées dans un emplacement privé auquel les autres utilisateurs, applications ou appareils n’ont pas accès.The information is stored in a private location that other users, apps, or devices can't access.
  • Vous pouvez utiliser les contrôles Export et Import pour enregistrer et recharger une copie de la collection dans un fichier avec lequel l’utilisateur peut interagir.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.

Pour plus d’informations sur l’utilisation d’une collection en tant que source de données, consultez l’article Create and update a collection in your app (Créer et mettre à jour une collection dans votre application).For more information on working with a collection as a data source, see create and update a collection.

Les collections sont couramment utilisées pour conserver l’état global de l’application.Collections are commonly used to hold global state for the app. Consultez l’article Understand variables in PowerApps (Comprendre les variables dans PowerApps) pour connaître les options disponibles pour gérer l’état.See working with variables for the options available for managing state.