Spostamento dei dati tra raccolte e origini dati con Collect

Completato

Le raccolte sono un'origine dati speciale. Sono locali nell'app e non sono supportate da una connessione a un servizio nel cloud. Pertanto le informazioni non possono essere condivise tra dispositivi per lo stesso utente o tra utenti. È possibile creare le raccolte dinamicamente con la funzione Collect. Non è necessario stabilirle in anticipo, come nel caso delle origini dati basate sulla connessione. In altre parole, le raccolte sono solo variabili e quindi i loro contenuti non vengono salvati se l'utente chiude l'app. Chiunque esegua l'app non può accedere ai dati in essa contenuti. Per salvare le informazioni di una raccolta, occorre scriverle in un'origine dati. Esaminiamo i due modi principali per salvare i dati di una raccolta in un'origine dati.

Uso della funzione Collect

La funzione Collect aggiunge record a un'origine dati. È in grado di aggiungere un singolo valore, un record oppure una tabella a una raccolta. Può essere usata per creare una raccolta e scrivere in un'origine dati, ad esempio un elenco SharePoint o una tabella Dataverse. Consente di scrivere dati in blocco senza usare una funzione ForAll/Patch per scorrere i dati.

Quando si usa Collect per scrivere in un'origine dati, è possibile specificare gli elementi come record se i nomi delle colonne e la struttura dei dati corrispondono all'origine. Di conseguenza, una formula come la seguente scrive un singolo record nei dati, esattamente come farebbe una funzione Patch:

Collect('YourDataSource', {Title: 'First Try', StartDate: Today()})

Finché l'origine dati ha colonne denominate "Title" e "StartDate" (rispettivamente tipi di dati, testo e data), la formula crea un record nell'origine dati in cui Title è "First Try" e StartDate è la data odierna.

Si possono mettere in fila molti record aggiungendoli dopo il primo, purché si scriva il tipo di dati corretto nella colonna giusta, comprese le colonne obbligatorie.

Si può anche scrivere un'intera tabella nell'origine dati tramite l'istruzione Collect purché la struttura dei dati corrisponda.

Infine, si può usare una versione semplificata della formula per scrivere un'intera raccolta nell'origine dati tramite una sintassi come la seguente:

Collect('YourDataSource', colMyCollection)

In modo analogo a quando si scriveva un singolo record nell'origine dati, quando si usa Collect per scrivere un'intera tabella nell'origine dati, la struttura dei dati e i nomi delle colonne deve corrispondere alle colonne in cui si scrive. Il vantaggio principale dell'uso di una funzione Collect per la scrittura è la semplicità del codice.

In sintesi, quando si usa Collect per scrivere nell'origine dati è importante ricordare queste tre condizioni:

  • È necessario che nell'origine dati siano presenti le colonne della raccolta. L'origine dati può avere altre colonne, ad esempio colonne generate dal sistema, ma le colonne da cui si scrive nella raccolta devono essere presenti nell'origine dati in cui si scrive. Se nella raccolta è presente una colonna denominata Widget, anche nell'origine dati deve essere presente una colonna di testo denominata Widget.

  • Il tipo di dati, ad esempio testo, numero o data, di ogni colonna della raccolta deve corrispondere al tipo di dati di destinazione.

  • La raccolta deve includere dati per tutte le colonne obbligatorie presenti nell'origine dati.

Suggerimento

Se necessario, è possibile usare le funzioni seguenti per trasformare la raccolta in modo che corrisponda all'origine dati, ad esempio:

  • AddColumns
  • DropColumns
  • RenameColumns
  • ShowColumns

Per altre informazioni, consultare Funzioni AddColumns, DropColumns, RenameColumns e ShowColumns in Power Apps.

Per altre informazioni sulla funzione Collect e sulle raccolte, consultare la documentazione di Collect.

Patch e ForAll

La funzione Patch consente di modificare o creare un record nell'origine dati. La funzione ForAll consente di eseguire una formula per ogni record di una tabella e le raccolte sono tabelle. È possibile combinare queste funzioni per aggiornare l'origine dati con il contenuto della raccolta. Sebbene sia necessario più codice rispetto alla tecnica Collect, l'uso di una funzione ForAll/Patch è preferibile quando si desidera applicare più logica.

Ad esempio, è possibile creare una raccolta denominata collectColorData contenente tre colonne: Name, FavoriteColor e UpdateSource. La colonna AggiornaOrigine può essere di tipo booleano (true o false). Durante l'uso dell'app, l'utente può aggiornare il valore della colonna e quindi selezionare un pulsante denominato Aggiorna origine. È possibile impostare la proprietà OnSelect del pulsante su questa formula:

ForAll(Filter(collectColorData, UpdateSource = true),
Patch(DataSourceName, Defaults(DataSourceName), {NameColumnSource: Name,
FavoriteColorColumnSource: FavoriteColor}))

La formula aggiunge nuovi record all'origine dati denominata DataSourceName, impostando le colonne NameColumnSource e FavoriteColorColumnSource sui valori della raccolta, ma solo per i record per cui la colonna UpdateSource è impostata su true.

Questo esempio potrebbe essere ulteriormente ottimizzato, ma serve a dimostrare il concetto e la funzionalità del salvataggio dinamico di una raccolta in un'origine dati.

Per altre informazioni su ForAll, consultare la documentazione di ForAll.

Per altre informazioni su Patch, consultare la documentazione di Patch.

Una volta appresi i modi in cui si possono scrivere i dati di una raccolta in un'origine dati e il motivo per cui è preferibile usare l'uno o l'altro, viene illustrato un esercizio in cui si usano raccolte e dati esterni.