FetchXML-editor til offlineprofiler (prøveversion)

[Denne artikel er dokumentation til en foreløbig version og er med forbehold for ændringer.]

FetchXML er Dataverses oprindelige forespørgselssprog, der gør det muligt for oprettere at skrive datafiltre som XML-kode, ligesom at skrive en formel, men mere effektiv. Brug FetchXML-editoren til at optimere komplekse profiler for at opnå bedre ydeevne og undgå synkroniseringstimeout for store tabeller (100.000+ poster).

Denne funktion er bedst egnet til avancerede oprettere og udviklere, der er komfortable med at arbejde med XML og har brug for mere kontrol, end hvad den visuelle filtergenerator giver.

Vigtig

  • Dette er en forhåndsversionsfunktion.
  • Prøveversionsfunktioner er ikke beregnet til produktionsbrug og kan have begrænset funktionalitet. Disse funktioner er underlagt supplerende vilkår for anvendelse og er tilgængelige før en officiel udgivelse, så kunderne kan få tidlig adgang og give feedback.
  • Denne funktion overføres gradvist til flere områder og er muligvis ikke tilgængelig i dit område endnu.

Fordele ved FetchXML-editoren

FetchXML-editoren giver flere fordele i forhold til visualudtryksgeneratoren til definition af offlinedatafiltre.

  • Understøttelse af hierarkiske betingelser:

    FetchXML-editoren understøtter oprettelse af komplekse, hierarkiske betingelser, f.eks under. , eq-or-under, aboveog eq-or-above på hierarkiaktiverede opslag. Få mere at vide om at forespørge om hierarkiske data

    <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>
    
  • Understøttelse af kontrol af ikke-relaterede tabeller:

    Med FetchXML-editoren kan du linke til andre tabeller, selvom de ikke har en direkte relation til den primære tabel, forudsat at du angiver gyldige fra og til attributter. Denne funktion er især nyttig i komplekse offlinescenarier, hvor flere enheder deler en fælles fremmed nøgle, men ikke er direkte relateret.

    <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>
    
  • Understøttelse af forespørgselsoptimering ved hjælp af sen materialisering og forespørgselstip:

    Editoren viser avancerede optimeringskontrolelementer direkte på elementet <fetch> , herunder:

  • latematerialize="true": Ved hjælp af latematerialize="true"optimerer du forespørgselsydeevnen ved at indsnævre matchende poster, før du henter alle deres kolonnedata. Denne attribut reducerer belastningen, når store tabeller synkroniseres under offlinesynkronisering. Få mere at vide om brug af sen materialisering

    <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>
    
  • Attributten options overfører SQL Server forespørgselstip. Få mere at vide om brug af disse indstillinger

Sådan fungerer FetchXML-editoren

Du får adgang til FetchXML-editoren via konfigurationsoplevelsen for offlineprofilen i Power Apps. Du skriver eller indsætter en FetchXML-forespørgsel, og editoren validerer den i realtid, før du gemmer den.

  1. I Power Apps skal du gå til miljøets indstillinger og åbne siden Offline Profiles. Vælg en eksisterende offlineprofil, eller opret en ny, og vælg derefter Rediger profil.

  2. I offlineprofileditoren skal du tilføje eller vælge den tabel, hvis data du vil filtrere til offlinebrug.

  3. Under Filter skal du vælge Brugerdefinerede eller Relaterede rækker og derefter vælge Rediger filter.

  4. Rul ned i filtereditoren, og vælg Vis/Rediger FetchXML for at åbne FetchXML-kodeeditoren. Skærmbillede af FetchXML-kodeeditoren i offlineprofilfiltereditoren.

  5. Rediger den eksisterende FetchXML-forespørgsel, eller indsæt en ny. Editoren validerer automatisk syntaks og struktur, når du redigerer, og kontrollerer, om:

    • Et obligatorisk <fetch> rodelement med mindst ét <entity> element
    • Kun understøttede FetchXML-koder
    • Elementer, der er placeret i de korrekte overordnede elementer
    • Maksimalt 500 filterklausuler

    Hvis editoren registrerer et problem, f.eks. et manglende påkrævet element eller et ikke-understøttet <link-entity> forbrug, vises der en klar fejlmeddelelse, så du kan løse det, før du gemmer.

  6. Når fetchXML-forespørgslen er gyldig, skal du vælge Anvend for at konvertere filteret og derefter gemme offlineprofilen.

Vigtig

Vælg altid Anvend og derefter Gem , når du har redigeret FetchXML. Hvis du ikke gemmer, slettes dine ændringer.

Når offlineprofilen er gemt, bruges dit brugerdefinerede FetchXML-filter til datasynkronisering. Hvis din forespørgsel kun bruger funktioner, der understøttes af Visual Builder, vises disse filtre fortsat i brugergrænsefladen i Udtryksgenerator. Hvis du bruger avancerede funktioner kun for FetchXML, gengiver brugergrænsefladen for visualiseringsfilteret muligvis ikke dem. Brug FetchXML-editoren til eventuelle fremtidige ændringer af filteret.

Bedste praksis

  • Anvend ydelsestip som latematerialize="true" eller hint="union" for store datasæt.
  • Valider FetchXML ved hjælp af de indbyggede editorkontroller, før du gemmer.
  • Gem din offlineprofil umiddelbart efter anvendelse af FetchXML-ændringer.
  • Brug kun understøttede FetchXML-konstruktioner til offlineprofiler, f.eks link-type="any" . eller link-type="not any".
  • Undgå ikke-understøttede jointyper som inner eller outer i offlinefiltre.
  • Bevar filterdelsætninger under grænsen på 500-delsætninger pr. forespørgsel.
  • Ignorer ikke valideringsfejl. Forespørgsler skal være korrekt udformet og fuldført.

Begrænsninger

  • Forespørgsler skal starte med et <fetch> rodelement og indeholde mindst ét <entity> element.
  • Kun understøttede FetchXML-elementer er tilladt. Ukendte eller ikke-understøttede koder udløser valideringsfejl.
  • Elementer skal følge de korrekte overordnede/underordnede indlejringsregler.
  • <link-entity> i <filter> skal bruge link-type="any" eller link-type="not any". Indre og ydre joinforbindelser understøttes ikke.
  • FetchXML-koder <attribute> bruges ikke til valg af kolonner i offlinesynkronisering. Brug i stedet indstillingen Filtrer kolonner .
  • Eksplicitte pagineringsattributter såsom page og count ignoreres i offline-profiler.
  • Forespørgsler er begrænset til maksimalt 500 filterklausuler.