INTEGRITY Dokumentace

Nekonzistentní výsledky GraphQL API

Pokud stejný dotaz GraphQL Analytics API spustíte vícekrát a pokaždé dostanete mírně odlišné výsledky, způsobuje to vzorkování Adaptive Bit Rate (ABR). ABR dynamicky upravuje rozlišení dat podle složitosti dotazu a časování, což může mezi jednotlivými spuštěními vést k mírným odchylkám ve výsledcích.

Chcete-li snížit variabilitu, dotazujte se na kratší časové úseky (denní nebo týdenní místo měsíčních) a používejte agregované datové sady (uzly s Groups příponu) a vyžádat si intervaly spolehlivosti pro posouzení kvality dat. Další informace najdete v Vzorkování.

Co je to vzorkování?

Datový pipeline Cloudflare zpracovává přes 700 milionů událostí za sekundu v rámci celé globální sítě. Zpracovávat všechna tato data v reálném čase pro každý jednotlivý dotaz by bylo neúměrně nákladné a časově náročné.

Vzorkování analyzuje podmnožinu dat namísto každého jednotlivého datového bodu. Cloudflare používá vzorkování Adaptive Bit Rate (ABR), aby dotazy proběhly rychle i při práci s rozsáhlými datovými sadami.

ABR ukládá data ve více rozlišeních:

Při spuštění dotazu ABR dynamicky vybere nejvhodnější rozlišení podle složitosti dotazu, požadovaného časového rozsahu, počtu řádků k načtení a aktuální zátěže systému.

Proč se výsledky liší mezi jednotlivými spuštěními dotazu?

Výsledky se mohou lišit z několika důvodů:

Pokud například stejný dotaz za 30 dní spustíte dvakrát, může poprvé vrátit 3,500 objektů a podruhé 3,600 objektů. To znamená, že se použilo jiné rozlišení vzorkování.

Mohu vzorkovaným datům důvěřovat?

Ano. Vzorkovaná data jsou vysoce spolehlivá a poskytují stejně důvěryhodné poznatky jako data odvozená z úplných datových sad. Techniky vzorkování Cloudflare zachycují základní charakteristiky celé datové sady.

Agregované metriky (součty, průměry, percentily) se extrapolují na základě velikosti vzorku, takže vykazované metriky přesně reprezentují celou datovou sadu. Výsledky založené na tisících řádků budou s vysokou pravděpodobností reprezentativní.

Jak mohu omezit rozptyl výsledků dotazů?

Dotazování kratších časových rozsahů

Místo dotazování na celý měsíc najednou rozdělte dotazy na menší intervaly (denní nebo týdenní).

Předtím (proměnlivější):

datetime_geq: "2024-09-01T00:00:00Z"
datetime_lt: "2024-10-01T00:00:00Z"

Po (konzistentnější):

datetime_geq: "2024-09-01T00:00:00Z"
datetime_lt: "2024-09-02T00:00:00Z"

Výsledky poté agregujte na straně klienta. U menších časových oken je méně pravděpodobné, že se spustí agresivní prahové hodnoty vzorkování.

Použití agregovaných datasetů

Upřednostněte u datových uzlů Groups příponu před syrovými (raw) adaptivními datasety. Agregovaná data jsou předzpracovaná a méně náchylná k odchylkám způsobeným vzorkováním.

Použijte například httpRequestsAdaptiveGroups místo nezpracovaných dat událostí.

Přidejte explicitní řazení

Vždy uveďte orderBy ve svých dotazech, abyste zajistili konzistentní řazení výsledků:

orderBy: [datetime_ASC]

Použití intervalů spolehlivosti

U adaptivních datových sad požadujte intervaly spolehlivosti k posouzení kvality dat a ověření vzorkování:

confidence(level: 0.95) {
  count {
    estimate
    lower
    upper
    sampleSize
  }
}

Vyšší sampleSize značí spolehlivější výsledky.

Stručný přehled

Vystavit Zmírnění
Výsledky se mezi jednotlivými spuštěními liší Dotazování kratších časových rozsahů (denně nebo týdně místo měsíčně)
Agresivní vzorkování u rozsáhlých dotazů Rozdělte dotazy na kratší časové intervaly a agregujte je na straně klienta
Potřeba konzistentního řazení Přidejte orderBy klauzuli na všechny dotazy
Potřeba ověřit kvalitu dat Požadavek confidence intervaly pro kontrolu velikosti vzorku a přesnosti
Použití syrových adaptivních dat Přepněte na agregované datové sady (uzly s Groups příponu)