OData – bästa metoder och felsökning
Få ut det mesta av OData-klienten med dessa bästa metoder och felsökningstips.
Prestanda
Prestandan hos OData-tjänsterna beror på typen av data du använder. Exempelvis tar det ungefär 2 1/2 till 3 minuter att läsa 1M-datapunkter (6K-datapunkter per sekund). Varje fullständig begäran tar i genomsnitt 120 ms och OData-klienten kan komma att lägga till ytterligare tid för bearbetning och datahantering.
Följ dessa allmänna bästa metoder för att se till att du får bästa och mest pålitliga prestanda:
- Använd inte
OR
-uttryck eller expanderande tabeller. - Använd flera frågor när det är möjligt.
- Använd inkrementell uppdatering.
- Partitionera datamängder om möjligt.
- Behåll bara den data du behöver. Ta bort onödiga kolumner och data.
- Spara historiska data i en separat rapport om du inte behöver dem dagligen. Uppdatera rapporten med historiska data när du behöver den.
Skriv presterande frågor
OData-tjänsten accepterar flera samtidiga förfrågningar och behandlar förfrågningarna parallellt. OData-klienter skickar också flera frågor samtidigt när det är möjligt.
Det är bättre att sätta ihop och använda flera frågor istället för en enda komplex fråga med till exempel OR
-uttryck eller expander. En enda komplex fråga måste itereras sekventiellt med den tillagda fördröjningen för varje begäran.
Ladda ner data med hjälp av flera frågor och samla de resulterande tabellerna i din OData-klient så att du kan arbeta med tabellerna som om de vore en enda tabell.
Använd inkrementell uppdatering
Inkrementell uppdatering ger följande fördelar för stora datamängder:
- Endast data som har ändrats behöver uppdateras.
- Du behöver inte upprätthålla långvariga anslutningar till källsystem.
- Mindre data att uppdatera minskar den totala förbrukningen av minne och andra resurser.
Varje OData-klient kan ha sina specifika funktioner för inkrementell uppdatering som skiljer sig från andra. För Microsoft Power BI, se Inkrementell uppdatering för semantiska modeller i Power BI.
Partitionera stora datamängder
Om du behöver ladda ner stora datamängder, partitionerar du dem och har en separat fråga för att läsa varje partition. En del OData-klienter som Microsoft Power BI, kan bearbeta flera frågor samtidigt. Partitionering av datamängden kan avsevärt förbättra prestandan.
Om du till exempel läser datapunkter från de senaste två åren kan du prova att dela upp frågan i två frågor som var och en läser ett års data. Slå sedan samman (konkatenera) tabellerna i Power BI.
Egenskapsnamn i metadata och CDF RAW
Egenskapsnycklar för metadata och CDF-mellanlagringsområdet (RAW) måste vara giltiga identifierare och kan bara bestå av bokstäver, siffror och understreck. OData-tjänsterna skriver om alla andra tecken till ett understreck. För bästa och mest förutsägbara resultat, se till att intagen data följer denna namnkonvention för egenskapsnycklar: ^[a-zA-Z][_a-za-z0-9]\*[a-zA-Z0-9]\$
.
Felsökning
Hitta information som hjälper dig att felsöka problem med CDF som datakälla för OData-klienter.
Frågor tar för lång tid
Ett CDF-projekt kan innehålla hundratals miljoner rader med data, och att ladda dem alla i en OData-klient är inte genomförbart. Om din fråga tar timmar att köra försöker du med största sannolikhet ladda för mycket data.
Se Filtrera objekt i datamodeller och Filtrera asset-centric-resurstyper för att se vilka filtreringsmöjligheter som stöds av OData-tjänsterna.
Får inte alla resultat
Om du får färre resultat än förväntat kanske du använder en filterfunktion som CDF inte stöder, som t.ex. startswith
i kolumnen Namn för TimeSeries.
Se Filtrera objekt i datamodeller och Filtrera asset-centric-resurstyper för att se vilka filtreringsmöjligheter som stöds av OData-tjänsterna.
Det går inte att hämta minimala värden från CDF RAW
Om du använder data från CDF-mellanlagringsområdet, CDF RAW i en OData-klient, kan du uppleva problem med att hämta små tal i exponentiell notation.
CDF RAW har inget schema, men OData-biblioteken i vissa OData-klienter som Power BI försöker välja rätt format för data. För närvarande väljer Power BI fel avkodare för små tal i exponentiell notation, och du kan få ett fel som liknar detta:
DataSource,Error: OData: Cannot convert the literal '2.89999206870561 to the expected type 'Edm.Decimal',
För att lösa problemet, mata in värdena i CDF RAW som strängar istället för siffror och konvertera tillbaka strängarna till siffror i Power BI, till exempel med hjälp av Decimal.From
Power Query M-funktionen. Du kommer inte att förlora precision, och eftersom de flesta JSON-avkodare accepterar strängar för siffror, kommer klienter som förväntar sig siffror fortfarande att fungera.