Esecuzione di query sui dati

Completato

Il connettore Dataverse include alcune azioni progettate per recuperare dati dalle tabelle. In questa unità vengono presi in esame due delle azioni più comuni. L'azione Recupera una riga tramite ID recupera una singola riga con l'ID univoco che si specifica. Quando non si conosce l'ID univoco, si può utilizzare l'azione Elenca righe, che restituisce zero per molte righe che corrispondono ai criteri di filtro inseriti.

Ampliando le opzioni per queste azioni, sono disponibili le azioni ...dall'ambiente selezionato che permettono di usare le stesse azioni con un ambiente diverso da quello in uso. Vediamo assieme alcune delle opzioni disponibili per ottenere dati.

Seleziona colonne

L'opzione Seleziona colonne limita le colonne che vengono restituite dall'azione. È consigliabile impostare l'elenco di colonne in base ai dati di cui si ha bisogno nei passaggi del flusso successivi. L'inserimento di un elenco di colonne aumenta l'efficienza del flusso. Assicurarsi di utilizzare il nome logico delle colonne della tabella, che si trova nella sezione Opzioni avanzate delle proprietà delle colonne. Se, ad esempio, si vuole includere le colonne Nome e Cognome della tabella Contatti, occorre fornire il seguente elenco di colonne separate da virgole:

firstname,lastname

La specifica di un elenco di colonne limita le colonne che vengono visualizzate nel contenuto dinamico quando si impostano i passaggi successivi nel flusso. Se le colonne che ci si aspetta di vedere non sono visibili, verificare l'opzione Seleziona colonne relativa all'azione che recupera i dati.

Espandi query

Per impostazione predefinita, quando si eseguono le azioni di recupero dati, queste recuperano solo i dati dalla tabella primaria specificata nell'azione. È possibile utilizzare l'opzione Espandi query per fornire un'espressione in stile OData per includere i dati da tabelle correlate. Questa opzione è disponibile in Parametri avanzati.

Ad esempio, la tabella Account ha una relazione con la tabella Contatto a indicare il contatto principale per l'account. L'esempio seguente mostra l'espressione OData per includere la colonna del nome completo e l'ID del contatto primario nell'output dell'azione.

primarycontactid($select=contactid,fullname)

Sebbene questa espressione includa i dati nell'output delle azioni, non include le colonne di dati nel riquadro Contenuto dinamico per la selezione. Per utilizzare i dati correlati, è necessario utilizzare un'espressione del flusso di lavoro per accedere ai dati.

Utilizzo dell'azione Recupera una riga tramite ID

In genere, si utilizza l'azione Recupera una riga tramite ID per recuperare dati extra di tabelle Dataverse nell'ambito della logica del flusso. Ad esempio, se l'aggiunta di una nuova riga nella tabella Account attiva il flusso, si potrebbe utilizzare un'azione Recupera una riga tramite ID per recuperare l'e-mail per il contatto primario correlato. In questo esempio, è inutile utilizzare un'azione Recupera una riga tramite ID per recuperare l'account perché i dati per la riga vengono forniti come output dal trigger.

Di tanto in tanto si potrebbe voler utilizzare nuovamente l'azione Recupera una riga tramite ID nella logica del flusso per assicurarsi di disporre dei dati più recenti. Ad esempio, se il flusso è stato sospeso per un passaggio di approvazione, potrebbero trascorrere un paio di giorni dall'ultima volta che sono stati recuperati i dati. Potrebbe essere utile usare l'azione Recupera una riga tramite ID per ottenere i dati più recenti dopo l'approvazione. Questo approccio impedirebbe l'esecuzione del flusso in base a dati non aggiornati.

Se l'ID della riga che si intende creare nel passaggio fosse null, la soluzione migliore sarebbe completare un controllo condizionale sul valore prima di eseguire il passaggio Recupera una riga tramite ID. Il passaggio ha esito negativo se l'ID della riga è null. Un altro errore comune si verifica se non si dispone dell'autorizzazione alla lettura dei dati per la riga.

Utilizzo dell'azione Elenca righe

L'azione Elenca righe è molto utile perché consente di specificare criteri semplici o complessi per determinare quali righe di dati restituire. L'azione supporta due stili nella modalità di specifica di questi criteri: espressioni in stile OData o Dataverse FetchXML. È possibile usare entrambi gli stili di criteri per comporre criteri semplici e complessi. Per lo più sono le preferenze personali a determinare lo stile che si utilizza. FetchXML dispone tuttavia del supporto di alcuni strumenti della community che potrebbero semplificare la creazione di criteri più complessi.

Recupero di oltre 5.000 righe

Per impostazione predefinita, l'azione non restituisce più di 5.000 righe. È possibile attivare la funzionalità Paginazione dalla scheda Impostazioni se occorre che vengano restituiti più dati. Quando si attiva la paginazione, si può specificare una dimensione di pagina fino a 100.000 righe. Quando è possibile ottenere più di una pagina di dati, occorre gestire manualmente le pagine nel flusso ottenendo il token di paging e trasmettendolo al momento del recupero delle pagine successive. Per altre informazioni, vedere Attivare la paginazione.

Assicurarsi di considerare le proprie esigenze future perché il raggiungimento di 5.000 righe non generi un errore. Inoltre, non si riceveranno tutti i dati. Quando possibile, è consigliabile definire criteri che producano i risultati più piccoli possibili per agevolare l'elaborazione del flusso.

Utilizzo dei criteri stile OData

Nella proprietà Filtra righe dell'azione, è possibile fornire un filtro in stile OData per limitare le righe che vengono restituite alle righe che corrispondono ai criteri. Quando si compone l'espressione per la proprietà Filtra righe, occorre utilizzare il nome logico della colonna, che si può trovare nella sezione Opzioni avanzate della proprietà della colonna. La logica seguente è un semplice esempio che filtra Contatti per restituire tutte le righe con il nome John.

firstname eq 'John'

Inoltre, è possibile utilizzare gli operatori di filtro di query standard e le funzioni di query. La logica seguente, ad esempio, modifica il filtro in modo da utilizzare la funzione contain.

contains(firstname,'John')

Per altre informazioni, vedere gli esempi in operatori di filtro standard e funzioni di query.

È possibile utilizzare gli operatori logici quali and, or e not. Ad esempio, la logica seguente verifica che la colonna dei ricavi rientri nell'intervallo 2001-99999.

revenue lt 100000 and revenue gt 2000

È possibile utilizzare le parentesi () con gli operatori logici per specificare la precedenza in modo da poter valutare un'espressione complessa, come segue:

(contains(name,'sample') or contains(name,'test')) and revenue gt 5000

È anche possibile filtrare i dati correlati. Ad esempio, la seguente espressione restituisce le righe della tabella degli account che hanno un contatto primario denominato Susanna.

primarycontactid/fullname eq 'Susanna (sample)'

Insieme all'espressione Filtra righe, la proprietà Ordina per aiuta a determinare l'ordine dell'output delle righe prodotto dall'azione. I nomi devono essere un elenco di nomi di colonne logiche separati da virgole. Se viene specificato solo il nome della colonna, la colonna viene ordinata in ordine crescente. È possibile specificare un suffisso asc o desc a indicare se l'ordine è crescente o decrescente.

La proprietà Numero di righe può indicare il numero di righe da restituire. Se, ad esempio, si vuole verificare se esistono righe corrispondenti, non è necessario restituire più di una singola riga.

Suggerimento

Quando si testa il flusso, è possibile impostare Numero di righe su 1 (o su un altro numero piccolo) per accelerare il test. Se la tabella contiene migliaia di righe di dati, l'uso di questo parametro contribuisce a risolvere rapidamente i problemi del flusso durante lo sviluppo.

Uso dei criteri di stile FetchXML

FetchXML è un linguaggio di query basato su XML proprietario di Dataverse che è possibile usare per eseguire query sui dati. È possibile comporre l'espressione FetchXML e usarla come criteri di filtro per l'output delle righe prodotto dall'azione Elenca righe. È possibile comporre manualmente il codice XML oppure usare la Ricerca avanzata da un'applicazione basata su modello Power Apps per creare il filtro e scaricare l'espressione FetchXML.

FetchXML contiene l'equivalente delle funzionalità Seleziona colonna, Ordina per, Espandi query e Filtra righe per i criteri di stile OData.

L'espressione seguente è un esempio di FetchXML per filtrare le righe con stato attivo e con un nome contenente Contoso nella tabella Account. Questo esempio restituisce anche l'e-mail del contatto primario correlato alla riga dell'account.

<fetch>
  <entity name="account">
    <attribute name="name"/>
    <attribute name="address1_city"/>
    <attribute name="primarycontactid"/>
    <attribute name="telephone1"/>
    <attribute name="accountid"/>
    <order attribute="name" descending="false"/>
    <filter type="and">
      <condition attribute="statecode" operator="eq" value="0"/>
      <condition attribute="name" operator="like" value="%Contoso%"/>
    </filter>
    <link-entity alias="accountprimarycontactidcontactcontactid" name="contact" from="contactid" to="primarycontactid" link-type="outer" visible="false">
      <attribute name="emailaddress1"/>
    </link-entity>
  </entity>
</fetch>

Per altre informazioni, consultare Uso di FetchXML per costruire una query.

Attualmente, le query di aggregazione non sono supportate quando si usa l'azione Elenca righe con i criteri FetchXML.