Sääntöjoukon tulokset on mahdollista jakaa useaan tiedostoon. Tätä voidaan tarvita esimerkiksi seuraavissa tapauksissa:
- Jaa tulokset tiedostoihin kustannuspaikoittain - jokaiselle kustannuspaikalle luodaan oma tiedostonsa, katso esimerkki 1
- Jaa tulokset tiedostoihin projekteittain - jokaiselle projektille luodaan oma tiedostonsa
- Tiedostot jaetaan sisältämään tulokset siten että tiedostot sisältävät siihen määritellyt kustannuspaikat - katso esimerkki 2
- Jaa tulokset tiedostoihin maksuryhmittäin - jokaiselle maksuryhmälle luodaan oma tiedostonsa, katso esimerkki 3
Huomioi että tyhjiä tiedostoja ei luoda. Jos tulokset jaetaan oletuskustannuspaikan mukaan ja oletuskustannuspaikka-dataa ei ole, tiedostoa ei luoda.
Vientitiedoston osiin jakamisen asetukset
Asetukset vientitiedoston osiin jakamiselle löytyvät sääntöjoukkojen asetuksista sääntöjoukkojen kyselyiden asetusten jälkeen. Vähintään kohdat 'Jaa tiedostoihin arvoilla*' sekä ' Jaa "Palkka-aineiston taulu" tiedot seuraavasti' tulee täyttää.
Huomio: sääntöjoukon kyselyssä käytetyn taulun jakamisen asetukset eivät saa olla tyhjiä. Jos esimerkiksi sääntöjoukon kyselyssä käytetään taulua UserEventData, tulee myös Jaa "Tapahtumataulu" tiedot seuraavasti -asetus olla käytössä. Muuten sääntöjoukon kysely ei palauta tähän tauluun liittyviä tietoja.
Alla kuvattuna osiin jakamisen asetukset:
- Jaa tiedostoihin arvoilla - Tällä asetuksella määritetään määrätyt arvot/käsitteet, joiden mukaan data jaetaan tiedostoihin. Tämän ei tarvitse olla olemassa oleva arvo viennin sääntöjoukoissa, mutta sen tulee olla yksittäinen sarake, jossa on uniikki arvo jota voidaan hyödyntää seuraavien kohtien asetuskyselyissä.
- Jaa "Palkka-aineiston taulu" tiedot seuraavasti", Jaa "Tapahtumataulu" tiedot seuraavasti ja Jaa "Tapahtumahistoriataulu" tiedot seuraavasti" - Nämä asetukset määrittävät datan, joka on saatavilla jokaiselle tiedostolle, ja jonka perusteella tiedostot jaotellaan. Jaottelu tehdään arvojen perusteella, jotka saadaan kohdan 1 kyselyn (Jaa tiedostoihin arvoilla) tuloksesta. Kyselyn 1 palauttamat arvot ovat saatavilla muuttujassa
:splittingValue
ja kysely toistetaan jokaiselle palautetulle arvolle.
- Jaetun tiedoston nimi - Vapaavalintainen: Jaetun tiedoston nimen kaavan asetus. Arvoa
[SplittingValue]
voi käyttää tiedoston nimen kaavassa korvaavana tietona. Tällöin jos tulokset jaetaan oletuskustannuspaikan mukaan, tämä kaava korvataan tiedostonimeen oletuskustannuspaikalla.
Jos esimerkiksi halutaan tiedostoja, jotka alkavat korvattavalla kaavalla, asetetaan:[SplittingValue]_exportToSomeSystem.csv
Tällöin jos esimerkiksi tiedot jaotellaan kahden kustannuspaikan kesken, joiden koodit ovat 1200 ja 9001, tiedostojen nimiksi muodostuu1200_exportToSomeSystem.csv
and9001_exportToSomeSystem.csv
Käytettävissä olevat korvauskuviot. Huomaathan, että kaikki formaatit ovat suomenkielisessä muodossa.
- [vvvvkkpphhmmss] Päivämäärä ja aika, esimerkiksi 20181201120000
- [vvvvkkpphhmm] Päivämäärä ja aika ilman sekunteja, esimerkiksi 201812011200
- [vvvvkkpp] Päivämäärä, esimerkiksi 20181201
- [SplittingValue] Arvo, joka muodostetaan kyselyllä kohdassa "Jaa tiedostoihin arvoilla"
- "Vie tiedostot zip-muodossa" - Määrittää viedäänkö jaetut tiedostot SFTP-palvelimelle yhtenä zip-muotoiseksi pakattuna tiedostona vai pakkaamattomina erillisinä tiedostoina. Määritys koskee ainoastaan sftp-siirtoja, ei aineiston lataamista käyttöliittymässä.
Esimerkki 1 - Tulosten jaottelu kustannuspaikoittain erillisiin tiedostoihin
Näillä asetuksilla tulokset jaetaan tiedostoihin siten että jokaiselle sääntöjoukon tulosten löytämälle kustannuspaikalle luodaan oma tiedostonsa. Esimerkiksi jos tulokset sisältävät henkilöitä, jotka kuuluvat kustannuspaikkoihin A, B ja D, näiden henkilöiden tulokset jaotellaan kolmeen tiedostoon:
- Tiedosto "A_xxxxx.csv", joka sisältää kustannuspaikkaan A kuuluvien henkilöiden tulokset
- Tiedosto "B_xxxxx.csv", joka sisältää kustannuspaikkaan B kuuluvien henkilöiden tulokset
- Tiedosto "D_xxxxx.csv", joka sisältää kustannuspaikkaan D kuuluvien henkilöiden tulokset
Jos on olemassa muita kustannuspaikkoja, joiden henkilöitä sääntöjoukon tulokset eivät palauttaneet, näille kustannuspaikoille ei luoda omaa tiedostoa. Myös esimerkiksi tiedostoa "A_xxxxx.csv" ei luoda, jos tulokset eivät sisällä yhtään dataa kustannuspaikan A henkilöille.
"Jaa tiedostoihin arvoilla*" -kysely:
SELECT DISTINCT IFNULL(Value, '') FROM UserInfoData WHERE InfoTypeName = 'DefaultCostGroupCode'
"Jaa Palkka-aineiston taulu tiedot seuraavasti*" -kysely:
SELECT * FROM UserSalaryData WHERE IFNULL(UserCostGroup, '') = :splittingValue
"Jaa Tapahtumataulu tiedot seuraavasti*" -kysely:
SELECT * FROM UserEventData WHERE IFNULL(UserCostGroup, '') = :splittingValue
"Jaa Tapahtumahistoriataulu tiedot seuraavasti*" -kysely:
SELECT * FROM UserEventHistoryData WHERE IFNULL(UserCostGroup, '') = :splittingValue
Esimerkki 2 - Tulosten jakaminen määritettyjen kustannuspaikkojen mukaan
Näillä asetuksilla tulokset jaetaan kahteen tiedostoon, joista:
- "FileOne" sisältää tulokset kustannuspaikoista A, B ja C,
- ja "FileTwo" sisältää tulokset kustannuspaikoista D ja E
"Jaa tiedostoihin arvoilla*" -kysely:
SELECT DISTINCT CASE
WHEN Value IN('A', 'B', 'C') THEN 'FileOne'
WHEN Value IN('D', 'E') THEN 'FileTwo'
END
FROM UserInfoData
WHERE InfoTypeName = 'DefaultCostGroupCode'
"Jaa Palkka-aineiston taulu tiedot seuraavasti*" -kysely:
SELECT
*
FROM UserSalaryData
WHERE
CASE
WHEN UserCostGroup IN('A', 'B', 'C') THEN 'FileOne'
WHEN UserCostGroup IN('D', 'E') THEN 'FileTwo'
END = :splittingValue
Huomio: Sekä "Jaa tiedostoihin arvoilla**" että "Jaa Palkka-aineiston taulu tiedot seuraavasti*" -kyselyt tulee määrittää asetuksiin.
Huomio: Määritettyjä kustannuspaikkoja ja muodostettavien tiedostojen määrää voidaan muuttaa, samoin 'FileOne' ja 'FileTwo' (jotka tulevat kyselyn palauttamien tiedostojen etuliitteiksi) voidaan muuttaa, mutta kyselyiden ehtojen ja tiedostonimien pitää täsmätä molemmissa kyselyissä.
Esimerkki 3 - Tulosten jakaminen maksuryhmän perusteella
"Jaa tiedostoihin arvoilla*" -kysely:
SELECT DISTINCT IFNULL(uid.Value, '')
FROM UserData as u
LEFT JOIN userinfodata AS uid ON (
u.userId = uid.userId AND
uid.InfoTypeName = 'NeptonPaymentGroupName_SDSQL'
)
"Jaa Palkka-aineiston taulu tiedot seuraavasti*" -kysely:
SELECT usd.*
FROM UserSalaryData AS usd
LEFT JOIN UserInfoData as uid ON (
usd.userId = uid.userId AND
uid.InfoTypeName = 'NeptonPaymentGroupName_SDSQL' AND
datetime(usd.salaryrenderingdate) BETWEEN uid.ValidFrom AND uid.ValidTo
)
WHERE IFNULL(uid.value, '') = :splittingValue
"Jaa Tapahtumataulu tiedot seuraavasti*" -kysely:
SELECT ued.*
FROM UserEventData AS ued
LEFT JOIN UserInfoData as uid ON (
ued.userId = uid.userId AND
uid.InfoTypeName = 'NeptonPaymentGroupName_SDSQL' AND
datetime(ued.startdatetime) BETWEEN uid.ValidFrom AND uid.ValidTo
)
WHERE IFNULL(uid.value, '') = :splittingValue
"Jaa Tapahtumahistoriataulu tiedot seuraavasti*" -kysely:
SELECT ued.*
FROM UserEventHistoryData AS ued
LEFT JOIN UserInfoData as uid ON (
ued.userId = uid.userId AND
uid.InfoTypeName = 'NeptonPaymentGroupName_SDSQL' AND
datetime(ued.startdatetime) BETWEEN uid.ValidFrom and uid.ValidTo
)
WHERE IFNULL(uid.value, '') = :splittingValue
Tässä esimerkissä tiedostojen jakoarvona käytetään maksuryhmän nimeä mutta pienillä muokkauksilla (jokin muu InfoTypeName) saisi näillä ehdoilla jakamisarvona käytettyä esim. maksuryhmän koodia.
Jälkimmäinen parametri lauseessa: `IFNULL(uid.value, '')` asettaa ilman maksuryhmää oleville tyhjän merkkijonon mutta ilman ryhmää oleville voi käyttää jotain muutakin merkkijonoa.
Huomaa että kummatkin esitetyt muutosvaihtoehdot pitää asettaa samalla tavoin kaikkiin jakamiskyselyihin
Esimerkki 4 - Tulosten jakaminen kiinteiden arvojen perusteella
Näillä asetuksilla tulokset jaetaan kahteen tiedostoon, joista:
- "monthly" sisältää kuukausipalkkaisten henkilöiden tulokset
- "hourly" sisältää tuntipalkkaisten henkilöiden tulokset
"Jaa tiedostoihin arvoilla*" -kysely:
SELECT * FROM (VALUES ('monthly'), ('hourly'));
"Jaa Palkka-aineiston taulu tiedot seuraavasti" -kysely:
SELECT *
FROM UserSalaryData
WHERE EmployeeSalaryType = :splittingValue
"Jaa Tapahtumataulu tiedot seuraavasti" -kysely:
SELECT *
FROM UserEventData
WHERE EmployeeSalaryType = :splittingValue
"Jaa Tapahtumahistoriataulu tiedot seuraavasti" -kysely:
SELECT *
FROM UserEventHistoryData
WHERE EmployeeSalaryType = :splittingValue
Useamman tiedoston käsittely viennissä
- Manuaalinen vienti käyttöliittymässä - tiedostot pakataan ZIP-arkistoon
- Ajastettu vienti - tiedostot pakataan ZIP-arkistoon
- Julkinen Web service - ZIP-arkisto sisällytetään ResponseString -elementtiin base64-enkoodattuna
Miten jaottelu toimii
Kun tulokset jaotellaan useaan tiedostoon, käytännössä datan luonnissa ja jaottelussa on kolme vaihetta:
- Haetaan arvot, joiden mukaan jaottelu tehdään, esimerkiksi oletuskustannuspaikka (yksi tiedosto per kustannuspaikka)
- Luodaan väliaikaiset taulut UserSalaryData ja UserEventData joihin populoidaan jaotteluarvon mukainen data (esimerkiksi tietty oletuskustannuspaikka). Tämä tehdään jokaiselle vaiheessa 1 saadulle arvolle.
- Suoritetaan sääntöjoukon kyselyt tauluille jotka ovat luotu vaiheessa 2.