Informazioni sulle origini dati in PowerAppsUnderstand data sources in PowerApps

La maggior parte delle app di PowerApps usa informazioni esterne archiviate in servizi cloud definiti origini dati.Most PowerApps apps use external information stored in cloud services called Data Sources. Un esempio comune è una tabella in un file di Excel archiviato in OneDrive for Business.A common example is a table in an Excel file stored in OneDrive for Business. Le app accedono a queste origini dati usando le connessioni.Apps access these data sources by using Connections.

Questo articolo illustra i diversi tipi di origini dati e spiega come usare le origini dati tabella.This article discusses the different kinds of data sources, and how to work with table data sources.

La creazione di un'app che esegue operazioni di base di lettura e scrittura in un'origine dati è molto semplice.It is easy to create an app that does basic reading and writing to a data source. In alcuni casi, tuttavia, si vuole ottenere un maggiore controllo sul flusso dei dati da e verso l'applicazione.But sometimes you want more control over how data flows in and out of your app. Questo articolo illustra il modo in cui le funzioni Patch, DataSourceInfo, Validate ed Errors offrono maggiore controllo.This article describes how the Patch, DataSourceInfo, Validate, and Errors functions provide more control.

Tipi di origini datiKinds of data sources

Le origini dati possono essere connesse a un servizio cloud oppure possono essere locali per un'app.Data sources can be connected to a cloud service, or they can be local to an app.

Origini dati connesseConnected data sources

Le origini dati più comuni sono le tabelle, che possono essere usate per recuperare e archiviare informazioni.The most common data sources are tables, which you can use to retrieve and store information. È possibile usare le connessioni alle origini dati per leggere e scrivere dati in cartelle di lavoro di Microsoft Excel, elenchi di SharePoint, tabelle di SQL e molti altri formati, che possono essere archiviati nei servizi cloud come OneDrive for Business, DropBox, SQL Server e così via.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.

Le origini dati diverse dalle tabelle includono posta elettronica, calendari, Twitter e notifiche, ma in questo articolo non vengono trattati questi altri tipi di origini dati.Data sources other than tables include email, calendars, Twitter, and notifications, but this article doesn't discuss these other kinds of data sources.

Origini dati localiLocal data sources

L'uso dei controlli Raccolta, Visualizza modulo e Modifica modulo consente di creare con facilità un'app che legge e scrive dati da un'origine dati.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. Per iniziare, leggere l'articolo Informazioni sui moduli dati.To get started, read the article Understand data forms.

Quando si richiede a PowerApps di creare un'app dai dati, vengono usati questi controlli.When you ask PowerApps to create an app from data, these controls are used. L'app usa automaticamente una tabella interna per archiviare e modificare i dati provenienti dall'origine dati.Behind the scenes, the app uses an internal table to store and manipulate the data that comes from the data source.

La raccolta è un tipo speciale di origine dati, che è locale per l'app e non è supportata da alcuna connessione a un servizio nel cloud. Non è quindi possibile condividere le informazioni tra dispositivi per lo stesso utente o tra utenti.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. Le raccolte possono essere caricate e salvate localmente.Collections can be loaded and saved locally.

Tipi di tabelleKinds of tables

Le tabelle interne per un'app di PowerApps sono a valore fisso, così come un numero o una stringa costituiscono un valore.Tables that are internal to a PowerApps app are fixed values, just as a number or a string is a value. Le tabelle interne non vengono archiviate in alcuna posizione, sono semplicemente presenti nella memoria dell'app.Internal tables aren't stored anywhere, they just exist in your app's memory. Non è possibile modificare direttamente la struttura e i dati di una tabella.You can't directly modify the structure and data of a table. In alternativa, è possibile creare una nuova tabella tramite una formula, usando quindi tale formula per creare una copia modificata della tabella originale.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.

Le tabelle esterne vengono archiviate in un'origine dati per il recupero e la condivisione in un secondo tempo.External tables are stored in a data source for later retrieval and sharing. PowerApps fornisce "connessioni" per la lettura e la scrittura dei dati archiviati.PowerApps provides "connections" to read and write stored data. In una connessione è possibile accedere a più tabelle di informazioni.Within a connection, you can access multiple tables of information. Sarà possibile selezionare le tabelle da usare nell'app e ogni app diventerà un'origine dati separata.You'll select which tables to use in your app, and each will become a separate data source.

Per altre informazioni, vedere Utilizzo delle tabelle, che fornisce altri dettagli sulle tabelle interne. Queste informazioni sono applicabili anche a tabelle esterne che risiedono in un servizio 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.

Utilizzo delle tabelleWorking with tables

È possibile usare le origini dati tabella in modo analogo all'uso di una tabella interna di PowerApps.You can use table data sources the same way that you use an internal PowerApps table. Esattamente come una tabella interna, ogni origine dati ha record, colonne e proprietà che è possibile usare nelle formule.Just like an internal table, each data source has records, columns, and properties that you can use in formulas. Inoltre:In addition:

  • L'origine dati ha gli stessi nomi di colonna e gli stessi tipi di dati della tabella sottostante nella connessione.The data source has the same column names and data types as the underlying table in the connection.

    Nota: per origini dati SharePoint o Excel che contengono nomi di colonna con spazi, PowerApps sostituirà gli spazi con "_x0020_".Note: For SharePoint and Excel data sources that contain column names with spaces, PowerApps will replace the spaces with "_x0020_". Ad esempio, "Nome colonna" in SharePoint o Excel verrà visualizzato come "Column_x0020_Name" in PowerApps quando viene visualizzato nel layout di dati o usato in una formula.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.

  • L'origine dati viene caricata automaticamente dal servizio durante il caricamento dell'app.The data source is loaded from the service automatically when the app is loaded. È possibile forzare l'aggiornamento dei dati usando la funzione Refresh.You can force the data to refresh by using the Refresh function.
  • Quando gli utenti eseguono un'app, possono creare, modificare ed eliminare i record ed eseguire il push delle modifiche nella tabella sottostante nel servizio.As users run an app, they can create, modify, and delete records and push those changes back to the underlying table in the service.
    • I record possono essere creati con le funzioni Patch e Collect.Records can be created with the Patch and Collect functions.
    • I record possono essere modificati con le funzioni Patch, Update e UpdateIf.Records can be modified with the Patch, Update, and UpdateIf functions.
    • I record possono essere rimossi con le funzioni Remove e RemoveIf.Records can be removed with the Remove and RemoveIf functions.
    • Gli errori che si verificano durante l'utilizzo di un'origine dati sono disponibili tramite la funzione Errors.Errors when working with a data source are available through the Errors function.
  • Le funzioni DataSourceInfo, Defaults e Validate forniscono informazioni sull'origine dati che è possibile usare per ottimizzare l'esperienza utente.The DataSourceInfo, Defaults, and Validate functions provide information about the data source that you can use to optimize the user experience.

Creazione di origini datiCreating data sources

PowerApps non può essere usato per creare un'origine dati connessa o per modificarne la struttura. L'origine dati deve esistere già nel servizio.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. Per creare ad esempio una tabella in una cartella di lavoro di Excel archiviata in OneDrive, è prima di tutto necessario usare Excel Online su OneDrive per creare una cartella di lavoro.For example, to create a table in an Excel workbook stored on OneDrive, you first use Excel Online on OneDrive to create a workbook. Creare quindi una connessione alla tabella dall'app.Next you create a connection to it from your app.

Le origini dati di tipo raccolta, tuttavia possono essere create e modificate in un'app, ma sono solo temporanee.However, collection data sources can be created and modified inside an app, but are only temporary.

Visualizzare uno o più recordDisplay one or more records

Il diagramma precedente mostra il flusso di informazioni quando un'app legge le informazioni in un'origine dati: The diagram above shows the flow of information when an app reads the information in a data source:

  • Le informazioni vengono archiviate e condivise tramite un servizio di archiviazione, in questo caso un elenco di SharePoint di un sito di Office 365.The information is stored and shared through a storage service (in this case, a SharePoint list of an Office 365 site).
  • Una connessione rende disponibili queste informazioni per l'app.A connection makes this information available to the app. La connessione gestisce l'autenticazione dell'utente per l'accesso alle informazioni.The connection takes care of authentication of the user to access the information.
  • Quando l'app viene avviata o viene selezionata la funzione Refresh, le informazioni vengono recuperate dalla connessione e inserite in un'origine dati nell'app per l'uso 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.
  • Le formule vengono usate per leggere le informazioni ed esporle nei controlli che possono essere visualizzati dall'utente.Formulas are used to read the information and expose it in controls that the user can see. È possibile visualizzare i record di un'origine dati usando una raccolta in una schermata e collegando la proprietà Items all'origine dati: 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. È possibile collegare i controlli entro la raccolta con la raccolta usando la proprietà Default dei controlli.You wire controls within the gallery, to the gallery, using the controls' Default property.
  • Anche l'origine dati è una tabella.The data source is also a table. È quindi possibile usare Filter, Sort, AddColumns e altre funzioni per perfezionare e aumentare l'origine dati prima di usarla nel suo complesso.So you can use Filter, Sort, AddColumns, and other functions to refine and augment the data source before using it as a whole. È anche possibile usare Lookup, First, Last e altre funzioni per utilizzare i singoli record.You can also use the Lookup, First, Last, and other functions to work with individual records.

Modificare un recordModify a record

Nella sezione precedente è stato illustrato come leggere un'origine dati.In the prededing section, you saw how to read a data source. Si noti che le frecce nel diagramma precedente sono unidirezionali.Note that the arrows in the diagram above are one way. Non viene eseguito di nuovo il push delle modifiche a un'origine dati tramite le stesse formule in cui sono stati recuperati i dati.Changes to a data source aren't pushed back through the same formulas in which the data was retrieved. Vengono invece usate nuove formule.Instead, new formulas are used. Viene spesso usata una schermata diversa per la modifica di un record rispetto a quella usata per l'esplorazione dei record, in particolare in un dispositivo mobile.Often a different screen is used for editing a record than for browsing records, especially on a mobile device.

Si noti che per modificare un record esistente di un'origine dati è necessario che il record provenga originariamente dall'origine dati.Note that, to modify an existing record of a data source, the record must have originally come from the data source. È possibile che il record sia stato trasmesso tramite una raccolta, una variabile del contesto e tramite diverse formule, ma la rispettiva origine deve essere riconducibile all'origine dati.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. Ciò è importante, perché le informazioni aggiuntive vengono trasmesse insieme al record che le identifica in modo univoco, per assicurare che venga modificato il record corretto.This is important because additional information travels with the record that uniquely identifies it, ensuring that you modify the correct record.

Il diagramma precedente mostra il flusso di informazioni per l'aggiornamento di un'origine dati: The diagram above shows the flow of information to update a data source:

  • Un controllo Modifica modulo fornisce un contenitore per le schede di input, che sono costituite da controlli di input utente, ad esempio un controllo di input di testo o un dispositivo di scorrimento.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. Le proprietà DataSource e Item vengono usate per identificare il record da modificare.The DataSource and Item properties are used to identify the record to edit.
  • Ogni scheda di input ha una proprietà Default, che viene in genere impostata sul campo del record ThisItem del modulo.Each input card has a Default property, which is usually set to the field of the form's ThisItem record. I controlli nella scheda di input otterranno i rispettivi valori di input da Default.The controls within the input card will then take their input values from Default. Non è in genere necessario modificare questa impostazione.Normally you do not need to modify this.
  • Ogni scheda di input espone una proprietà Update.Each input card exposes an Update property. Questa proprietà esegue il mapping dell'input dell'utente a un campo specifico del record, in modo da eseguire il writeback nell'origine dati.This property maps the user's input to a specific field of the record for writing back to the data source. Non è in genere necessario modificare questa impostazione.Normally you do not need to modify this.
  • Un pulsante o un controllo immagine nella schermata consente all'utente di salvare le modifiche al record.A button or an image control on the screen enables the user to save changes to the record. La formula OnSelect del controllo chiama la funzione SubmitForm per eseguire questa operazione.The OnSelect formula of the control calls the SubmitForm function to do this work. SubmitForm legge tutte le proprietà Update delle schede e usa queste informazioni per eseguire il writeback nell'origine dati.SubmitForm reads all the Update properties of the cards and uses this to write back to the data source.
  • In alcuni casi si verificheranno problemi.Sometimes there will be issues. È possibile che una connessione di rete sia inattiva o che una verifica della convalida venga eseguita dal servizio, senza che l'app sia informata.A network connection may be down, or a validation check is made by the service that the app didn't know about. Le proprietà Error ed ErrorKind del controllo modulo rendono disponibili queste informazioni, in modo che possano essere visualizzate all'utente.The Error and ErrorKind properties of the form control makes this information available, so you can display it to the user.

Per un controllo più granulare sul processo, è anche possibile usare la funzione Patch e Errors.For more fine grained control over the process, you can also use the Patch and Errors function. Il controllo Modifica modulo espone una proprietà Updates, in modo che sia possibile leggere i valori del campo nel modulo.The Edit form control exposes an Updates property so that you can read the values of the fields within the form. È anche possibile usare questa proprietà per chiamare un connettore personalizzato su una connessione, ignorando completamente le funzioni Patch e SubmitForm.You can also use this property to call a custom connector on a connection, completely bypassing the Patch and SubmitForm functions.

ConvalidaValidation

Prima di modificare un record, è necessario che l'app verifichi che la modifica sia accettabile,Before making a change to a record, the app should do what it can to make sure the change will be acceptable. per i due motivi seguenti:There are two reasons for this:

  • Commenti immediati per l'utente.Immediate feedback to the user. L'approccio ottimale consiste nel risolvere un problema appena si verifica, quando l'utente è ancora interessato.The best time to fix a problem is right when it happens, when it is fresh in the user's mind. Letteralmente con ogni tocco o sequenza di tasti è possibile visualizzare testo rosso che identifica un problema con l'immissione specifica.Literally with each touch or keystroke, red text can appear that identifies an issue with their entry.
  • Minore traffico di rete e meno latenza utente.Less network traffic and less user latency. Un numero maggiore di problemi rilevati nell'app consente di ridurre il numero di conversazioni in rete per rilevare e risolvere problemi.More issues detected in the app means fewer conversations over the network to detect and resolve issues. Ogni conversazione richiede tempi di attesa prima che l'utente possa proseguire con il proprio lavoro.Each conversation takes time during which the user must wait before they can move on.

PowerApps offre due strumenti per la convalida:PowerApps offers two tools for validation:

  • L'origine dati può fornire informazioni sugli elementi validi e non validi.The data source can provide information about what is and isn't valid. Ad esempio, i numeri possono avere valori minimi e massimi e possono essere necessarie una o più voci.For example, numbers can have minimum and maximum values, and one or more entries can be required. È possibile accedere a queste informazioni con la funzione DataSourceInfo.You can access this information with the DataSourceInfo function.
  • La funzione Validate usa queste informazioni per verificare il valore di una singola colonna o di un intero record.The Validate function uses this same information to check the value of a single column or of an entire record.

Gestione degli erroriError handling

Il record è stato convalidato.Great, you've validated your record. È ora necessario aggiornare il record con Patch.Time to update that record with Patch!

È tuttavia possibile che si verifichi un problema.But, alas, there may still be a problem. Alcuni dei possibili errori dipendono ad esempio dal fatto che la rete è inattiva, la convalida nel servizio non è riuscita o l'utente non ha le autorizzazioni corrette.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. L'app deve rispondere in modo appropriato alle situazioni di errore, fornendo commenti all'utente e soluzioni al problema.It needs to respond appropriately to error situations, providing feedback to the user and a means for them to make it right.

Quando si verificano errori in un'origine dati, l'app registra automaticamente le informazioni sull'errore e le rende disponibili tramite la funzione Errors.When errors occur with a data source, your app automatically records the error information and makes it available through the Errors function. Gli errori sono associati ai record correlati ai problemi.Errors are associated with the records that had the problems. Se il problema può essere risolto dall'utente, ad esempio in caso di errore di convalida, è possibile inviare di nuovo il record per eliminare gli errori.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.

Se si verifica un errore durante la creazione di un record con Patch o Collect, non sono presenti record a cui associare eventuali errori.If an error occurs when a record is created with Patch or Collect, there is no record to associate any errors with. In questo caso, il valore blank verrà restituito da Patch e può essere usato come argomento del record per Errors.In this case, blank will be returned by Patch and can be used as the record argument to Errors. Gli errori di creazione vengono cancellati con l'operazione successiva.Creation errors are cleared with the next operation.

La funzione Errors restituisce una tabella di informazioni sull'errore.The Errors function returns a table of error information. Queste informazioni possono includere le informazioni sulla colonna, nel caso in cui l'errore possa essere attribuito a una colonna specifica.This information can include the column information, if the error can be attributed to a particular column. Usare i messaggi di errore a livello di colonna nei controlli di etichetta vicini alla posizione della colonna nella schermata di modifica.Use column-level error messages in label controls that are close to where the column is located on the edit screen. Usare i messaggi di errore a livello di record in cui il valore Column nella tabella di errore è blank, in una posizione vicina al pulsante Save per l'intero record.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.

Utilizzo di origini dati di grandi dimensioniWorking with large data sources

Quando si creano report da origini dati di grandi dimensioni, ad esempio milioni di record, si vuole ridurre al minimo il traffico di rete.When you are creating reports from large data sources (perhaps millions of records), you want to minimize network traffic. Si supponga di volere creare un report relativo a tutti i clienti con valore StatusCode di tipo "Platinum" a New York CityLet's say you want to report on all Customers having a StatusCode of "Platinum" in New York City. e che la tabella Customers contenga milioni di record.And that your Customers table contains millions of records.

Non è consigliabile inserire milioni di clienti nell'app e scegliere i clienti da usare.You do not want to bring those millions of Customers into your app, and then choose the ones you want. È invece preferibile che la selezione venga eseguita nel servizio cloud in cui è archiviata la tabella e che vengano inviati in rete solo i record scelti.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.

Molte, ma non tutte, le funzioni che possono essere usate per scegliere i record possono essere delegate, ovvero vengono eseguite all'interno del servizio 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. Per informazioni su questa procedura, vedere Delegation (Delega).You can learn how to do this by reading about Delegation.

RaccolteCollections

Le raccolte sono un tipo speciale di origine dati.Collections are a special kind of data source. Sono locali per l'app e non sono supportate da alcuna connessione a un servizio nel cloud. Non è quindi possibile condividere le informazioni tra dispositivi per lo stesso utente o tra utenti.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. Funzionano in modo analogo alle altre origini dati, con alcune eccezioni:They operate like any other data source, with a few exceptions:

  • Le raccolte possono essere create in modo dinamico con la funzione Collect.Collections can be created dynamically with the Collect function. Non devono essere stabilite in anticipo, come le origini dati basate su connessione.They don't need to be established ahead of time, as connection-based data sources do.
  • Le colonne di una raccolta possono essere modificate in qualsiasi momento tramite la funzione Collect.The columns of a collection can be modified at any time using the Collect function.
  • Le raccolte consentono i record duplicati.Collections allow duplicate records. In una raccolta possono esistere più copie dello stesso record.More than one copy of the same record can exist in a collection. Le funzioni come Remove verranno applicate alla prima corrispondenza trovata, a meno che non venga fornito l'argomento All.Functions such as Remove will operate on the first match they find, unless the All argument is supplied.
  • È possibile usare le funzioni SaveData e LoadData per salvare e ricaricare una copia della raccolta.You can use the SaveData and LoadData functions to save and reload a copy of the collection. Le informazioni vengono archiviate in una posizione privata a cui gli altri utenti, le altre app o gli altri dispositivi non possono accedere.The information is stored in a private location that other users, apps, or devices can't access.
  • È possibile usare i controlli Esporta e Importa per salvare e ricaricare una copia della raccolta in un file con cui l'utente può interagire.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.

Per altre informazioni sull'utilizzo di una raccolta come origine dati, vedere Create and update a collection (Creare e aggiornare una raccolta).For more information on working with a collection as a data source, see create and update a collection.

Le raccolte vengono in genere usate per includere lo stato globale per l'app.Collections are commonly used to hold global state for the app. Per informazioni sulle opzioni disponibili per la gestione dello stato, vedere Working with variables (Utilizzo delle variabili).See working with variables for the options available for managing state.