Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
[Questo articolo è una documentazione preliminare soggetta a modifiche].
FetchXML è il linguaggio di query nativo di Dataverse che consente agli autori di scrivere filtri dati come codice XML, in modo analogo alla scrittura di una formula, ma più potente. Usare l'editor FetchXML per ottimizzare i profili complessi per prestazioni migliori ed evitare timeout di sincronizzazione in tabelle di grandi dimensioni (100K+ record).
Questa funzionalità è più adatta a produttori avanzati e sviluppatori che hanno familiarità con XML e necessitano di un maggiore controllo rispetto a ciò che offre il generatore di filtri visivi.
Important
- Questa è una funzionalità di anteprima.
- Le funzionalità di anteprima non sono destinate ad essere utilizzate per la produzione e sono soggette a restrizioni. Queste funzionalità sono soggette a condizioni per l'utilizzo supplementari e sono disponibili prima di una versione ufficiale in modo che i clienti possano ottenere l'accesso in anteprima e fornire feedback.
- Questa funzionalità viene gradualmente implementata in tutte le aree geografiche e potrebbe non essere ancora disponibile nella tua.
Vantaggi dell'editor FetchXML
L'editor FetchXML offre diversi vantaggi rispetto al generatore di espressioni visive per la definizione di filtri dati offline.
Supporto per condizioni gerarchica:
L'editor FetchXML supporta la creazione di condizioni complesse e gerarchiche, come ad esempio
under,eq-or-under,aboveeeq-or-abovenelle ricerche abilitate per la gerarchia. Altre informazioni sull'esecuzione di query sui dati gerarchici<fetch> <entity name="account"> <filter type="and"> <condition attribute="statecode" operator="eq" value="0" /> </filter> <link-entity name="businessunit" from="businessunitid" to="owningbusinessunit" link-type="any"> <filter type="and"> <condition attribute="businessunitid" operator="eq-or-under" value="{YOUR-PARENT-BU-GUID}" /> </filter> </link-entity> </entity> </fetch>Supporto per i controlli sulle tabelle non correlate:
L'editor FetchXML consente di collegarsi ad altre tabelle anche se non hanno una relazione diretta con la tabella primaria, purché siano specificati attributi da e a validi. Questa funzionalità è particolarmente utile in scenari offline complessi in cui più entità condividono una chiave esterna comune, ma non sono direttamente correlate.
<fetch distinct="false" latematerialize="true" options="DisableRowGoal, EnableOptimizerHotfixes"> <entity name="cr57f_producttranslation"> <filter type="and"> <link-entity name="cr57f_userlanguagepreference" from="cr57f_language_id" to="cr57f_language_id" link-type="any"> <filter type="and"> <condition attribute="cr57f_user_id" operator="eq" value="user_002" /> </filter> </link-entity> </filter> </entity> </fetch>Supporto per l'ottimizzazione delle query tramite materializzazione ritardata e hint di query:
L'editor espone controlli di ottimizzazione avanzati direttamente sull'elemento
<fetch>, tra cui:latematerialize="true": usandolatematerialize="true", è possibile ottimizzare le prestazioni delle query restringendo i record corrispondenti prima di recuperare tutti i dati della colonna. Questo attributo riduce il carico durante la sincronizzazione di tabelle di grandi dimensioni durante la sincronizzazione offline. Altre informazioni sull'uso della materializzazione tardiva<fetch distinct="false" latematerialize="true" options="OptimizeForUnknown,ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS"> <entity name="msdyn_workorder"> <filter type="and"> <condition attribute="statecode" operator="eq" value="0" /> <condition attribute="msdyn_systemstatus" operator="in"> <value>690970000</value> <value>690970001</value> </condition> </filter> <!-- Booking chain --> <link-entity name="bookableresourcebooking" from="msdyn_workorder" to="msdyn_workorderid" link-type="any"> <filter type="and"> <condition attribute="statecode" operator="eq" value="0" /> <filter type="or"> <condition attribute="starttime" operator="today" /> <condition attribute="starttime" operator="next-seven-days" /> </filter> </filter> <link-entity name="bookingstatus" from="bookingstatusid" to="bookingstatus" link-type="any"> <filter type="and"> <condition attribute="statecode" operator="eq" value="0" /> </filter> </link-entity> <link-entity name="bookableresource" from="bookableresourceid" to="resource" link-type="any"> <filter type="and"> <condition attribute="userid" operator="eq-userid" /> </filter> </link-entity> </link-entity> <!-- Customer asset --> <link-entity name="msdyn_customerasset" from="msdyn_customerassetid" to="msdyn_customerasset" link-type="any"> <filter type="and"> <condition attribute="statecode" operator="eq" value="0" /> </filter> <!-- Account --> <link-entity name="account" from="accountid" to="msdyn_account" link-type="any"> <filter type="and"> <condition attribute="statecode" operator="eq" value="0" /> </filter> </link-entity> </link-entity> </entity> </fetch>L'attributo
optionspassa gli hint di query per SQL Server. Altre informazioni sull'uso di queste opzioni
Funzionamento dell'editor FetchXML
È possibile accedere all'editor FetchXML tramite l'esperienza di configurazione del profilo offline in Power Apps. È possibile scrivere o incollare una query FetchXML e l'editor la convalida in tempo reale prima del salvataggio.
In Power Apps passare alle impostazioni dell'ambiente e aprire la pagina Profili offline. Selezionare un profilo offline esistente o crearne uno nuovo e quindi selezionare Modifica profilo.
Nell'editor del profilo offline aggiungere o selezionare la tabella i cui dati si desidera filtrare per l'uso offline.
In Filtro scegliere Righe personalizzate o Correlate e quindi selezionare Modifica filtro.
Nell'editor di filtri scorrere verso il basso e selezionare Visualizza/Modifica FetchXML per aprire l'editor di codice FetchXML.
Modificare la query FetchXML esistente o incollarne una nuova. L'editor convalida automaticamente la sintassi e la struttura durante la modifica, verificando quanto segue:
- Elemento radice obbligatorio
<fetch>con almeno un<entity>elemento - Solo i tag FetchXML supportati
- Elementi inseriti all'interno degli elementi padre corretti
- Massimo 500 clausole di filtro
Se l'editor rileva un problema, ad esempio un elemento obbligatorio mancante o un utilizzo non supportato
<link-entity>, viene visualizzato un messaggio di errore chiaro in modo da poterlo correggere prima del salvataggio.- Elemento radice obbligatorio
Dopo che la query FetchXML è valida, selezionare Applica per convertire il filtro e quindi Salvare il profilo offline.
Important
Selezionare sempre Applica e quindi Salva dopo aver modificato FetchXML. Se non si salva, le modifiche vengono rimosse.
Dopo il salvataggio, il profilo offline usa il filtro FetchXML personalizzato per la sincronizzazione dei dati. Se la query usa solo le funzionalità supportate dal generatore di oggetti visivi, tali filtri continuano a essere visualizzati nell'interfaccia utente di Generatore di espressioni. Se si usano funzionalità avanzate di solo FetchXML, l'interfaccia utente del filtro visivo potrebbe non visualizzarle. Utilizzare l'editor FetchXML per eventuali modifiche future apportate a tale filtro.
Procedure consigliate
- Applicare hint per le prestazioni come
latematerialize="true"ohint="union"per set di dati di grandi dimensioni. - Convalida il tuo FetchXML utilizzando il controllo integrato dell'editor prima di salvare.
- Salvare il profilo offline immediatamente dopo l'applicazione delle modifiche FetchXML.
- Usare solo costrutti FetchXML supportati per i profili offline, ad esempio
link-type="any"olink-type="not any". - Evitare tipi di join non supportati, ad esempio
inneroouterin filtri offline. - Mantenere le clausole di filtro al di sotto del limite di 500 clausole per ogni query.
- Non ignorare gli errori di convalida. Le query devono essere ben formate e complete.
Limitazioni
- Le query devono iniziare con un
<fetch>elemento radice e includere almeno un<entity>elemento. - Sono consentiti solo gli elementi FetchXML supportati. Tag sconosciuti o non supportati attivano errori di convalida.
- Gli elementi devono seguire le regole di annidamento padre-figlio appropriate.
-
<link-entity>all'interno<filter>deve usarelink-type="any"olink-type="not any". Inner join e outer join non sono supportati. - I tag FetchXML
<attribute>non vengono usati per la selezione di colonne nella sincronizzazione offline. Usare invece l'opzione Filtra colonne . - Gli attributi di paginazione espliciti come
pageecountvengono ignorati nei profili offline. - Le query sono limitate a un massimo di 500 clausole di filtro.