Pāriet uz galveno saturu

Laika rindas diagrammas izveide

Izveidojiet paneļus un atlasiet laika rindu, kurai vēlaties izveidot diagrammu. Izmantojiet pielāgotus vaicājumus un tādas papildu funkcijas kā filtrēšana, apkopošana, granularitāte, aritmētiskās operācijas un funkcijas darbam ar laika rindām.

Paneļa izveide

Lai izveidotu paneli ar laika rindas datiem no Cognite Data Fusion (CDF):

  1. Pierakstieties savā Grafana instancē un izveidojiet paneli.

  2. Izmantojiet vaicājumu cilnes zem galvenā diagrammas apgabala, lai atlasītu laika rindu savam panelim:

    • Laika rindas meklēšana — datu ienešana no noteiktas laika rindas. Sāciet rakstīt laika rindas nosaukumu vai aprakstu un atlasiet to nolaižamajā sarakstā.

      Norādiet apkopošanu un granularitāti pašā vaicājumā. Pēc noklusējuma apkopošanas iestatījums ir vidēja, un granularitāti nosaka diagrammai atlasītais laika intervāls.

      padoms

      Pēc izvēles varat iestatīt pielāgotu iezīmi un izmantot formātu {{property}}, lai izvilktu datus no laika rindas. Varat izmantot visus pieejamos laika rindas rekvizītus, lai definētu iezīmi, piemēram, {{name}} - {{description}} vai {{metadata.key1}}.

    • Laika rinda no aktīva — datu ienešana no laika rindas, kas ir saistīta ar noteiktu aktīvu. Sāciet rakstīt aktīva nosaukumu vai aprakstu un atlasiet to nolaižamajā sarakstā. Pēc izvēles varat izlemt, vai iekļausiet laika rindas no apakšaktīviem.

    • Pielāgots laika rindas vaicājums — vaicājumam atbilstošas laika rindas ienešana.

  3. Diagrammas apgabalā tiks attēlota jūsu atlasei atbilstošā laika rinda. Pēc nepieciešamības pielāgojiet laika intervālu, lai parādītu attiecīgos datus.

Laika intervāla pielāgošana

Pielāgotu vaicājumu izmantošana

Pielāgoti vaicājumi nodrošina detalizētu kontroli pār laika rindu datu atlasi. Varat izmantot aritmētiskas operācijas, funkcijas un īpašu sintaksi sintētisku laika rindu ienešanai. Šajā sadaļā ir arī vispārēji aprakstīti ar datu filtrēšanu saistītie ierobežojumi un efektīva regulāru izteiksmju un servera puses filtru izmantošana.

Vaicājuma definēšana

Lai pieprasītu laika rindu, norādiet vaicājumu, ietverot tajā parametrus. Piemēram, lai pieprasītu laika rindas meklēšanu, kur id ir vienāds ar 123, norādiet vaicājumu ts{id=123}.

Laika rindu var pieprasīt, izmantojot id, externalId vai laika rindu filtrus.

Pielāgots vaicājums

Sintētiskām laika rindām var norādīt vairāku veidu rekvizītus:

  • bool: ts{isString=true} vai ts{isStep=false}
  • string vai number: ts{id=123} vai ts{externalId='external_123'}
  • array: ts{assetIds=[123, 456]}
  • object: ts{metadata={key1="value1", key2="value2"}}

Sarežģītu sintētisko laika rindu veidošanai var vienā vaicājumā apvienot vairākus veidus:

ts{name="test", assetSubtreeIds=[{id=123}, {externalId="external_123"}]}

Filtrēšana

Vaicājumi arī atbalsta filtrēšanu, pamatojoties uz laika rindu rekvizītiem, kas tiek lietoti kā loģiskie operatori AND. Piemēram, tālāk redzamais vaicājums atrod laika rindas:

  • kuras pieder aktīvam ar id, kas ir vienāds ar 123
  • kur name sākas ar "Begin"
  • kur name nebeidzas ar "end"
  • kur name nav vienāds ar "Begin query"
ts{assetIds=[123], name=~"Begin.*", name!~".*end", name!="Begin query"}

Vaicājuma sintakse ietver dažādus atbilstības operatoru veidus:

  • = — precīza atbilstība. Norāda parametrus uz CDF nosūtāmam laika rindas pieprasījumam. Izmantojiet kopā ar filtrēšanas atribūtiem.
  • =! — precīza neatbilstība. Filtrē ienestās laika rindas pēc rekvizītiem, kas neatbilst virknei. Atbalsta teksta virknes, skaitliskas un Būla vērtības.
  • =~ — atbilstība regulārajai izteiksmei. Filtrē ienestās laika rindas pēc rekvizītiem, kas atbilst regulārajai izteiksmei. Atbalsta teksta virknes.
  • !~ — neatbilst regulārajai izteiksmei. Filtrē ienestās laika rindas pēc rekvizītiem, kas neatbilst regulārajai izteiksmei. Atbalsta teksta virknes.

Filtrēt var arī pēc metadatiem:

ts{externalIdPrefix="test", metadata={key1="value1", key2=~"value2.*"}}

Augstāk redzamajā vaicājumā tiek pieprasītas laika rindas, kur:

  • externalIdPrefix ir vienāds ar "test"
  • metadata.key1 ir vienāds ar "value1"
  • metadata.key2 sākas ar "value2"

Vaicājumu ierobežojumi

Izpildot pielāgotus vaicājumus, ir svarīgi saprast pamata ierobežojumus laika rindu ienešanai.

  • Filtrēšana klienta pusē: savienotājs izmanto vaicājumus ar regulārajām izteiksmēm (=~ atbilstībām un !~ izslēgšanai) un neprecīzus neatbilstības filtrus (=!) klienta pusē. Šis process notiek pēc tam, kad no Cognite Data Fusion (CDF) sākotnēji ir izgūts līdz 1000 laika rindu vienumiem. Šīs pieejas dēļ pastāv iespēja, ka ienestajā apakškopā netiks iekļautas visas atbilstošās laika rindas, ja kopējais skaits pārsniedz 1000.

  • Filtrēšana servera pusē: lai mazinātu šī ierobežojuma ietekmi, ieteicams izmantot filtrēšanu servera pusē, kad vien tas ir iespējams. To var izdarīt, izmantojot precīzas atbilstības filtrus (=) noteiktiem laika rindu filtra rekvizītiem. Šādi rīkojoties, var efektīvi sašaurināt no CDF izgūto laika rindu kopu, nodrošinot turpmāko klienta puses filtru izmantošanu specifiskākai datu kopai. Tas ir īpaši noderīgi, lai nodrošinātu, ka sākotnējā no CDF ienestajā datu kopā tiek iekļautas visas atbilstošās laika rindas, īpaši jūs interesējošās.

Izmantojiet filtrēšanu servera pusē kopā ar noteiktiem atribūtiem vai metadatiem, lai pirms regulāro izteiksmju vai citu klienta puses filtru izmantošanas precizētu vaicājuma tvērumu. Šī pieeja ievērojami palielina iespēju, ka jūsu Grafana panelī tiks atlasītas visas jūs interesējošās laika rindas.

Apkopošana, granularitāte un atskaites punkts

Katrai laika rindai var norādīt apkopošanu un granularitāti, izmantojot lietotāja saskarnē pieejamās nolaižamās izvēlnes.

Ja, piemēram, apkopošanas iestatījums ir average un granularitāte ir 1h, visos vaicājumos tiek pieprasīti datu punkti ar atlasīto apkopošanu un granularitāti. Pēc noklusējuma sintētiskām laika rindām apkopošana sākas ceturtdien, 1970. gada 1. janvārī plkst. 00:00:00 pēc koordinētā universālā laika.

Izmantojot sintētisko laika rindu vaicājumu sintaksi, var definēt apkopošanu, granularitāti un atskaites punktu katrai laika rindai atsevišķi:

ts{externalId='houston.ro.REMOTE_AI[34]', alignment=1599609600000, aggregate='average', granularity='24h'}

Augstāk redzamajā vaicājumā tiek ignorētas lietotāja saskarnē iestatītās apkopošanas un granularitātes vērtības. Atbalstīto apkopošanas funkciju sarakstu skatiet API dokumentācijā.

Aritmētiskās operācijas

Laika rindu apvienošanai var izmantot aritmētiskās operācijas. Piemērs:

ts{id=123} + ts{externalId="test"}

Augstāk redzamā vaicājuma rezultāts ir vienota diagramma, kurā datu punkti ir summētas katras laika rindas vērtības.

Šajā piemērā vaicājumā ts{name~="test1.*"} var iegūt vairākas laika rindas, tomēr pieņemsim, ka tas atgriež trīs laika rindas ar identifikatoriem 111, 222 un 333:

ts{name~="test1.*"} + ts{id=123}

Vaicājuma rezultāts ir trīs diagrammas — vaicājuma pirmās un otrās izteiksmes atgriezto summēto laika rindu vērtību kombinācija. Iegūtās diagrammas atbilst šiem vaicājumiem:

  • ts{id=111} + ts{id=123}
  • ts{id=222} + ts{id=123}
  • ts{id=333} + ts{id=123}

Šādas norises piemērs (katra ts{} izteiksme atgriež divas laika rindas) ir redzams nākamajā attēlā (pievērsiet uzmanību iezīmēm zem diagrammas).

Pielāgota vaicājuma matemātiskās operācijas

Funkcijas

Mēs atbalstām plašu funkciju klāstu, kuras varat izmantot sintētiskajām laika rindām.

  • Trigonometriskās: sin(ts{}), cos(ts{}), pi().
  • Mainīga garuma funkcijas: max(ts{}, ...), min(ts{}, ...), avg(ts{}, ...).
  • Algebriskās: ln(ts{}), pow(ts{}, exponent), sqrt(ts{}), exp(ts{}), abs(ts{}).
  • Kļūdu apstrādes: on_error(ts{}, default_value). Skat. Kļūdu apstrāde aprēķinos.
  • Virknes tipa laika rindas: map(expression, [list of strings to map from], [list of values to map to], default_value). Skat. Virknes tipa laika rinda.

Kļūdu apstrāde aprēķinos

Funkcija on_error(ts{...}) ļauj atveidot diagrammu pat tad, ja rodas izņēmums. Tā apstrādā tālāk norādīto veidu kļūdas.

  • BAD_DOMAIN — ja ir norādīti kļūdaini ievades diapazoni. Piemēram, dalījums ar nulli vai kvadrātsakne no negatīva skaitļa.
  • OVERFLOW — ja absolūtā vērtībā izteikts rezultāts ir lielāks par 10^100.

Ja rodas kāda no šīm kļūdām, tā vietā, lai atgrieztu vērtību laikspiedolam, CDF atgriež kļūdas lauku ar kļūdas ziņojumu. Lai no tiem izvairītos, (apakš)izteiksmi var ietvert funkcijā on_error():

on_error(1/ts{externalId='canBeZero'}, 0)

Virknes tipa laika rindas

Funkcija map() var apstrādāt laika rindas ar teksta virkņu vērtībām, pārveidojot virknes par dubultas precizitātes peldošā punkta skaitļiem. Ja, piemēram, vārsta laika rindai var būt vērtība "OPEN" vai "CLOSED", varat to šādi pārveidot par skaitli:

map(TS{externalId='stringstate'}, ['OPEN', 'CLOSED'], [1, 0], -1)

Vērtība "OPEN" ir kartēta ar 1, vērtība "CLOSED" — ar 0, un jebkādas citas vērtības — ar -1.

Apkopošana virknes tipa laika rindām pašlaik netiek atbalstīta. Visas virknes tipa laika rindas tiek uzskatītas par pakāpeniskām.

Mērvienību pārveidošana

Ja laika rindai ir definēts parametrs unitExternalId, varat pārveidot laika rindas vērtības citās mērvienībās tādā pašā daudzumā, izgūstot datus ar pielāgotiem vaicājumiem.

Piemērs:

{ts{externalId='temperature_f_houston', targetUnit='temperature:deg_c'} + ts{id='123', targetUnitSystem='SI'}}

Katrai laika rindai vai atsevišķajam datu punktam varat izvēlēties targetUnit vai targetUnitSystem. Jūsu izvēlētajai mērķa mērvienībai jābūt saderīgai ar sākotnējo mērvienību.

Izgūstot datu punktus, izmantojot sintētiskas laika rindas, vērtību mērvienības netiks paturētas. Tas nozīmē, ka ir iespējams pievienot vērtības no temperatūras laika rindas attāluma laika rindai, lai gan tās nebūs fiziski precīzas.

Ņemiet vērā, ka tad, ja mēģināsiet piekļūt katras laika rindas rekvizītam unit vai unitExternalId iezīmes laukā, Grafana atgriezīs nevis datu punktu mērvienību, bet laika rindas sākotnējo mērvienību.

Laika rindas datu attēlošana no datu modeļa instancēm

Varat attēlot laika rindu datus no CDF datu modeļu instancēm.

  1. Cilnē Datu modeļi atlasiet datu modeli un versiju.

  2. Norādiet vaicājumu.

    Svarīgi

    Pievienojiet laukus __typename un externalId zem laukiem, kuri satur laika rindu. Šajā piemērā — zem laukiem temperature un pressure:

    {
    listPump {
    items {
    temperature {
    __typename
    externalId
    }
    pressure {
    __typename
    externalId
    }
    }
    }
    }
    Pielāgota vaicājuma datu modelis