SharePointin listat ovat aina olleet suosittu alusta erilaisia pienille ja isoille ratkaisuille. Pikkujouluihin ilmoittautuminen, tilausten käsittely, palautteiden kerääminen jne. Kekseliäisyys on rajana ja muutama hyvinkin luova ratkaisu on tullut nähtyä.
SharePoint listoissa on kuitenkin aina ollut erilaisia rivimääriin liittyviä rajoitteita.
Alunperin hyvin toiminut ratkaisu voi ajan myötä muuttua kelvottoman hitaaksi tai pahimmillaan lakata toimimasta kokonaan.
Ratkaisun tekijä ei ehkä huomannut tiedustella, millaisiin rivimääriin tulee varautua. Usein ratkaisun hankkijallakaan ei ole käsitystä paljonko niitä rivejä tulee viikossa, kuukaudessa tai vuodessa.
Suuret datamäärät eivät ole ongelma jos niihin varaudutaan. Yksi suoraviivainen varautumiskeino on tarpeettomien rivien hävittäminen. Miten tämä toteutetaan Flown avulla?
Esimerkki – SharePoint listan siivoaminen
SharePoint lista
Esimerkin listana toimii tilauslista, johon tulee kuukaudessa 1000 tilausta.
Päätän että yli 90 päivää vanhoja tilauksia ei tarvitse säilyttää.
Miten vanhojen rivien tuhoaminen kannattaa toteuttaa?
Rivit tuhoava Flow
Helpointa on tehdä säännöllisesti, vaikka joka toinen päivä, käynnistyvä Flow-työnkulku, joka poistaa 90 päivää vanhat tilausrivit.
Ensimmäinen mieleen tuleva Flow:n ratkaisumalli on:
- hakea kaikki listan tilausrivit
- käydä ne yksitellen läpi
- tarkistaa onko luontipäivä vanhempi kuin 90 päivää
- mikäli on, tuhotaan rivi
Listassa on kuitenkin aina keskimäärin 3000 riviä, joten tämä lähestyminen generoi suuren määrän Flow-tapahtumia. Näistä tapahtumista syntyy jossain kohtaa oikeaa laskua.
Tehdään sama asia fiksummin ja käytetään OData filtteröintiä.
- Määritellään työnkulun käynnistyvän joka toinen päivä
- Alustetaan muuttujan archievedate arvoksi päivämäärä nykyhetkestä 90 päivää taaksepäin (addDays(utcNow(),-90, ’g’)).
Haetaan seuraavaksi tilaus-listalta kaikki rivit joiden luontipäivä on pienempi kuin äsken alustamamme archievedate. Tämä tehdään ODATA filtterin (Filter Query) avulla.
Nyt kysely palauttaa 3000 rivin sijasta ainoastaan rivit jotka pitää poistaa!
Poistetaan lopuksi rivit käyttäen Delete Item -toimintoa.
Samaa logiikkaa voi käyttää rivien siirtämiseksi erilliseen ”arkisto” SharePoint listaan, mikäli rivit halutaan poistaa aktiivinäkymästä mutta kuitenkin säilyttää. Tai johonkin Azuren tarjoamaan tietokantaan.
Yhteenveto
Suosittelen tutustumaan OData:an mikäli työskentelet Flow / Logic Apps -työnkulkujen parissa. Sitä käyttäen voit usein yksinkertaistaa työnkulkujasi. Operoit työnkulun sisällä vain sillä tietojoukolla, mikä kussakin tilanteessa on tarpeellinen.