KohaSuomi / Koha

(KOHA) Koha is a free software integrated library system (ILS). Koha is distributed under the GNU GPL version 3 or later. Note: this is a synced mirror of the official Koha repo.
https://koha-community.org/
GNU General Public License v3.0
7 stars 13 forks source link

Siirtoraportti-toimintoon tieto, onko siirtoraportin tietue uusi täydellisesti kuvailtu tietue VAI jo olemassa olevan täydellisesti kuvaillun tietueen muutostietue #286

Open Kati-Helle opened 1 year ago

Kati-Helle commented 1 year ago

Kehitysehdotukseni

Saisiko Siirtoraporttiin tiedon, onko tietue hankintatietueen täydennystietue ("täydellisesti kuvailtu") VAI jo tietokannassa olevan täydellisesti kuvaillun tietueen muutos/korjaustietue?

Tieto perustumaan esim. nimiön Koodaustaso-merkkipaikan arvoon? kuva

Jotain muuta?

No response

AnneliO commented 9 months ago

Koha-Suomen asiantuntijaryhmä 15.1.2024: Siirtoraporttia ollaan uudistamassa tällä hetkellä ja siellä tiedot ovat laajemmin näkyvillä. Pohditaan Tietuesiirtäjän käyttöönoton jälkeen, onko tälle vielä tarvetta.

AnneliO commented 4 months ago

Koha-Suomen asiantuntijaryhmä 19.6.2024: Siirtoraportti on korvattu Tietuesiirtäjä-raportilla, jonka ilmoittaa, jos 000/17-merkkipaikkaan on tullut muutos.

Ennen kuin tehdään päätös:

kuva

AnneliO commented 4 months ago

OUTIssa on tällainen Vaskin Valuneet tietueet -raportti, joka hakee tietueet, joissa 000/17 on muuttunut arvosta 8 johonkin muuhun arvoon. Lisäksi sen pystyy rajaamaan niteiden kotikirjaston mukaan. Lisäsin siihen vielä ehdon, että voi hakea useamman päivän ajalta valuneet:

SELECT t1.object AS 'tietuenumero', (select itemtype from biblioitems bi where t1.object=bi.biblionumber) AS 'Aineistotyyppi', datelastseen AS "Viimeisin havaintopvm",

    b.author AS Tekijä,
    CONCAT('<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',b.biblionumber,'" target="_blank">',b.title,IF(b.subtitle != '', CONCAT(' ',b.subtitle),''),IF(b.part_number != '', CONCAT(' ',b.part_number),''),IF(b.part_name != '', CONCAT(' ',b.part_name),''),'</a>') AS 'Nimeke',
    SUBSTRING(t1.info, LOCATE('LDR', t1.info)+21, 1) AS 'vanha leader 17',
    SUBSTRING(ExtractValue(bm.metadata,'//leader'),18,1) AS 'uusi leader 17',
    SUBSTRING(t1.info, LOCATE('040    _a', t1.info)+9, 8) AS 'vanha 040a',
    ExtractValue(bm.metadata,'//datafield[@tag="040"][1]/subfield[@code="a"]') AS 'uusi 040a',
    SUM(CASE WHEN i.notforloan='-2' AND i.homebranch LIKE <<Kirjasto|branches:all>> THEN 1 ELSE 0 END) AS 'Saapuneita niteitä yksikössä',
    t1.timestamp AS 'Valunut',
    STR_TO_DATE(ExtractValue(bm.metadata,'//controlfield[@tag="005"]'),'%Y%m%d%H%i%s') AS 'Muokattu'
FROM (SELECT object, info, MAX(timestamp) AS timestamp
        FROM action_logs al
        WHERE al.timestamp >= NOW() - INTERVAL <<Haettavien päivien määrä>> DAY
            AND al.module='CATALOGUING'
            AND al.action='MODIFY'
            AND SUBSTRING(al.info, LOCATE('LDR', al.info)+21, 1) = 8
        GROUP BY object) t1
LEFT JOIN biblio_metadata bm ON t1.object=bm.biblionumber
LEFT JOIN biblio b ON t1.object=b.biblionumber
CROSS JOIN (SELECT * FROM items WHERE homebranch LIKE <<Kirjasto|branches:all>> AND notforloan != '-1') i ON t1.object=i.biblionumber
WHERE SUBSTRING(ExtractValue(bm.metadata,'//leader'),18,1) != 8
GROUP BY t1.object
order by 2,3,4,5

kuva

(Tuossa sanotaan, että merkkipaikka 18, mutta käytännössä se tarkoittaa merkkipaikkaa 17, koska merkkipaikat lähtevät liikkeelle nollasta)

Sama raporttikirjastossa

Kati-Helle commented 4 months ago

Kiitos raportista. Tarve olisi saada listaus tietueista, joissa tietueen lähtötilanteessa 000/17-arvo ei ole 8 (eli Ennakkotieto).

Kokeilin Hellessä raporttiin nämä muutokset. Ainakaan hakutuloksessa ei ole enää näkyvillä vanhan leaderin arvoa 8:

AND SUBSTRING(al.info, LOCATE('LDR', al.info)+21, 1) = 8
->
AND SUBSTRING(al.info, LOCATE('LDR', al.info)+21, 1) not like 8

ja

WHERE SUBSTRING(ExtractValue(bm.metadata,'//leader'),18,1) != 8
-> WHERE SUBSTRING(ExtractValue(bm.metadata,'//leader'),18,1) not like 8

Saisiko raporttiin rajaukset niin, että tietue tulee raportin hakutulokseen vain kun tietueen tietty kenttä muuttuu? Ainakin päätekijyys, pääluokka ja nimeke vain kun tietueella ei ole päätekijyyttä. Unohdinko jotain?

Saisiko raportin hakutulokseen näkymään vanha arvo ja uusi arvo ko. muuttuneesta kentistä.

Raportin hakutulosnäyttöä (yhden päivän ajalta hakutulos kaikki kirjastot mukaan lukien juuri nyt 354): kuva

AnneliO commented 4 months ago

@MikkoLiimatainen osaisitko sinä raportin alkuperäisenä tekijänä toteuttaa raporttiin Katin kaipaamia ehtoja?

MikkoLiimatainen commented 4 months ago

Ehdin nyt vilkaisemaan tätä ja tuon lokin kaivaminen muutoksien tarkastelua ajatellen vaikuttaa olevan aika monimutkaista. Koodin muuttaminen tällaiseen tarkoitukseen vaatii aika pitkälti koodin uudelleenkirjoittamisen, koska nykyinen koodi ei ota huomioon indikaattoreita, eikä kentän pituutta, joten arvoja ei indikaattoreiden takia saa välttämättä ollenkaan, eikä kenttää oikean mittaisena muulloinkaan, jotta tarkastelu olisi mahdollista tehdä.

Sain juuri testattua tavan, jolla pitäisi saada molemmat nuo ongelmat ohitettua, joten periaatteessa voisi olla mahdollista saada toivotut arvot tarkasteluun. Voin koittaa rakentaa raportin tarkastelemaan muutoksia kentissä 100a, 084a ja 245a viimeisen vuorokauden ajalta ainakin näin aluksi, niin katsotaan kuinka monimutkaiseksi raportti menee ja onko sitä käytännössä mahdollista ajaa tässä laajuudessa.

MikkoLiimatainen commented 4 months ago

Tässä olisi testattavaksi raportti, joka sisältää yllä mainittujen kenttien tiedot ja mahdollistaa niiden vertailun.

SELECT *
FROM (SELECT t1.object AS 'tietuenumero',
  (select itemtype from biblioitems bi where t1.object=bi.biblionumber) AS 'Aineistotyyppi',
  datelastseen AS "Viimeisin havaintopvm",
  b.author AS Tekijä,
  CONCAT('<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',b.biblionumber,'" target="_blank">',b.title,IF(b.subtitle != '', CONCAT(' ',b.subtitle),''),IF(b.part_number != '', CONCAT(' ',b.part_number),''),IF(b.part_name != '', CONCAT(' ',b.part_name),''),'</a>') AS 'Nimeke',
  SUBSTRING(ExtractValue(bm.metadata,'//leader'),18,1) AS 'uusileader17',
  SUBSTRING(t1.info, REGEXP_INSTR(t1.info, 'LDR')+21,1) AS 'vanhaleader17',
  ExtractValue(bm.metadata,'//datafield[@tag="040"][1]/subfield[@code="a"]') AS 'uusi040a',
  TRIM(TRAILING '\n' FROM TRIM(IF(REGEXP_INSTR(t1.info, '040...._a') = 0, '', SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '040...._a')+9, REGEXP_INSTR(SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '040...._a')+9, 200), '[0-9]{3}...._| _')-1)))) AS 'vanha040a',
  ExtractValue(bm.metadata,'//datafield[@tag="100"][1]/subfield[@code="a"]') AS 'uusi100a',
  TRIM(TRAILING '\n' FROM TRIM(IF(REGEXP_INSTR(t1.info, '100...._a') = 0, '', TRIM(SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '100...._a')+9, REGEXP_INSTR(SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '100...._a')+9, 200), '[0-9]{3}...._| _')-1))))) AS 'vanha100a',
  ExtractValue(bm.metadata,'//datafield[@tag="245"][1]/subfield[@code="a"]') AS 'uusi245a',
  TRIM(TRAILING '\n' FROM TRIM(IF(REGEXP_INSTR(t1.info, '245...._a') = 0, '', SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '245...._a')+9, REGEXP_INSTR(SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '245...._a')+9, 200), '[0-9]{3}...._| _')-1)))) AS 'vanha245a',
  ExtractValue(bm.metadata,'//datafield[@tag="084"][1]/subfield[@code="a"]') AS 'uusi084a',
  TRIM(TRAILING '\n' FROM TRIM(IF(REGEXP_INSTR(t1.info, '084...._a') = 0, '', SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '084...._a')+9, REGEXP_INSTR(SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '084...._a')+9, 200), '[0-9]{3}...._| _')-1)))) AS 'vanha084a',
  SUM(CASE WHEN i.notforloan='-2' AND i.homebranch LIKE <<Kirjasto|branches:all>> THEN 1 ELSE 0 END) AS 'Saapuneita niteitä yksikössä',
  t1.timestamp AS 'Valunut',
  STR_TO_DATE(ExtractValue(bm.metadata,'//controlfield[@tag="005"]'),'%Y%m%d%H%i%s') AS 'Muokattu'
FROM (SELECT object, info, MAX(timestamp) AS timestamp
        FROM action_logs al
        WHERE al.timestamp >= NOW() - INTERVAL <<Haettavien päivien määrä>> DAY
            AND al.module='CATALOGUING'
            AND al.action='MODIFY'
        GROUP BY object) t1
LEFT JOIN biblio_metadata bm ON t1.object=bm.biblionumber
LEFT JOIN biblio b ON t1.object=b.biblionumber
CROSS JOIN (SELECT * FROM items WHERE homebranch LIKE <<Kirjasto|branches:all>> AND notforloan != '-1') i ON t1.object=i.biblionumber
GROUP BY t1.object) t2
WHERE t2.vanhaleader17 != 8
/*  AND t2.vanha040a != t2.uusi040a */ 
order by 2,3,4,5

Raportti pohjautuu ylläolevaan OUTIn raporttiin ja laitoin hakurajaukseksi Katin toivoman lähtötilanteessa 000/17-arvo ei ole 8. Pois käytöstä kommentoituna hakurajauksena on myös 040a-kenttien erojen haku. Periaatteessa siis on nyt tehtävissä päätekijyys, pääluokka ja nimeke erojen haku kentistä 100a, 084a ja 245a, mutta toteutus voisi olla hyvä miettiä sen mukaan, miten tätä raporttia halutaan käyttää.

Pidempiä aikavälejä hakiessa tulosjoukko kasvaa kohtuu suureksi, jolloin rajauksen tekeminen hakuehtona voisi olla hyödyllistä. Jos taas hakee esimerkiksi vain viimeisen päivän muuttuneita tietoja, voisi erot vain boldata tuloksista näkyviin.

Lisäksi voisi olla hyvä miettiä kuinka hyödyllistä on kaikkien erojen hakeminen muutenkaan, koska ainakin tekijätietoihin näytetään usein vain lisättävän pilkku perään, joten onko se sellaista tietoa, mitä halutaan hakea. Tälläiset tapaukset voisi pystyä rajaamaan tuloksista pois poistamalla loppupilkut tuloksista ennen vertailua. Tosin tällaisia pikkumuutoksia tehdään varmaan muitakin usein, joten kaikkien tällaisten muutosten pois rajaaminen voi olla hankalaa.

Raportilla joudutaan jo muutenkin tekemään hieman ekstrasiivoilua ylimääräisten välilyöntien ja rivinvaihtojen takia, joita lokitiedot näyttävät sisältävän. Lisäksi ainakin Vaskin tietokannassa tietueissa näyttää olevan ylimääräisiä näkymättömiä merkkejä, jotka vaikuttavat raportin toimintaan. Tähän mennessä olen löytänyt vain yhden tällaisen merkin eli unicode-merkki U+200F:n, joka merkkaa lukusuuntaa oikealta vasemmalle, mutta muitakin saattaa olla. Näiden siivoaminen raportilta voi olla hankalaa.

No, jos nyt ehditte testaamaan tätä versiota hieman, niin lienee helpompi miettiä suuntaa raportin jatkokehitykselle.

MikkoLiimatainen commented 4 months ago

Tuo raportti taitaa vielä tarvita jonkin tarkastelun, onko tietue valunut vai muuten muokattu. Alkuperäinen raportti ei sitä tietoa tainnut tarvita, joten en huomannut lisätä rajausta muokkauksen tekotavalle/tekijälle.

AnttHeik commented 4 months ago

Tuo raportti taitaa vielä tarvita jonkin tarkastelun, onko tietue valunut vai muuten muokattu. Alkuperäinen raportti ei sitä tietoa tainnut tarvita, joten en huomannut lisätä rajausta muokkauksen tekotavalle/tekijälle.

Tää voisi olla ihan hyvä lisä kyllä. @pirliis voitko laittaa tämän raportin OUTIinkin testatailtavaksi?

Kati-Helle commented 4 months ago

Tuo raportti taitaa vielä tarvita jonkin tarkastelun, onko tietue valunut vai muuten muokattu. Alkuperäinen raportti ei sitä tietoa tainnut tarvita, joten en huomannut lisätä rajausta muokkauksen tekotavalle/tekijälle.

Hellessä raportin hakutuloksessa esim. tietueet, joiden lokimerkinnöissä näitä tietoja

Virkailija-sarakkeessa virkailijan nimi ja ID (piilotin tiedot), käyttöliittymänä Virkailijaliittymä

kuva

*Lisätietona vielä tämä vastaani tullut kuva

Virkailija-sarakkeessa arvo 0 , käyttöliittymänä Verkkokirjasto kuva

pirliis commented 4 months ago

@AnttHeik, OUTIssa raportti 793.

AnttHeik commented 4 months ago

OUTissa raportille näyttää tulevan kaikki tietueet, joissa on tapahtunut jotain muutosta esim. viimeisen vuorokauden aikana. Tarkoitus oli vissiin rajata raportti vain niihin tietueisiin, joissa muutosta on tapahtunut 084-, 1XX- ja 245-kentissä?

Lisäksi jostain syystä raportille tulee vanhoja tietueita, joissa näyttää MARC-esikatselun perusteella, ettei niille ole tehty vuosiin mitään eikä niteitäkään ole lainattu, mutta raportti näyttää, että ne olisivat valuneet esim. 10.7.2024.

Mitäköhän nämä leaderin muutokset r:stä esim. 4:ään tai 5:een tarkoittavat? image

MikkoLiimatainen commented 4 months ago

Minulta oli pudonnut koodista rivi, joka rajaa etsittävät muutokset tietuemuokkauksiin, joten nuo 5r ja 4r muutokset johtuivat siitä, että tietuetta verrattiin samalla numerolla olevaan niteeseen, josta tuo r tulee. Näistä varmaankin tulee myös nuo väärät valumisajat.

Tässä korjattu koodi, johon on lisätty tarkistus 084a, 100a ja 245a kenttien muutoksille. Nyt raportille ei siis tule muut kuin ne tietueet, joissa jokin näistä muutoksista on tapahtunut.

SELECT *
FROM (SELECT t1.object AS 'tietuenumero',
  (select itemtype from biblioitems bi where t1.object=bi.biblionumber) AS 'Aineistotyyppi',
  datelastseen AS "Viimeisin havaintopvm",
  b.author AS Tekijä,
  CONCAT('<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',b.biblionumber,'" target="_blank">',b.title,IF(b.subtitle != '', CONCAT(' ',b.subtitle),''),IF(b.part_number != '', CONCAT(' ',b.part_number),''),IF(b.part_name != '', CONCAT(' ',b.part_name),''),'</a>') AS 'Nimeke',
  SUBSTRING(ExtractValue(bm.metadata,'//leader'),18,1) AS 'uusileader17',
  SUBSTRING(t1.info, REGEXP_INSTR(t1.info, 'LDR')+21,1) AS 'vanhaleader17',
  ExtractValue(bm.metadata,'//datafield[@tag="040"][1]/subfield[@code="a"]') AS 'uusi040a',
  TRIM(TRAILING '\n' FROM TRIM(IF(REGEXP_INSTR(t1.info, '040...._a') = 0, '', SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '040...._a')+9, REGEXP_INSTR(SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '040...._a')+9, 200), '[0-9]{3}...._| _')-1)))) AS 'vanha040a',
  ExtractValue(bm.metadata,'//datafield[@tag="100"][1]/subfield[@code="a"]') AS 'uusi100a',
  TRIM(TRAILING '\n' FROM TRIM(IF(REGEXP_INSTR(t1.info, '100...._a') = 0, '', TRIM(SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '100...._a')+9, REGEXP_INSTR(SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '100...._a')+9, 200), '[0-9]{3}...._| _')-1))))) AS 'vanha100a',
  ExtractValue(bm.metadata,'//datafield[@tag="245"][1]/subfield[@code="a"]') AS 'uusi245a',
  TRIM(TRAILING '\n' FROM TRIM(IF(REGEXP_INSTR(t1.info, '245...._a') = 0, '', SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '245...._a')+9, REGEXP_INSTR(SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '245...._a')+9, 200), '[0-9]{3}...._| _')-1)))) AS 'vanha245a',
  ExtractValue(bm.metadata,'//datafield[@tag="084"][1]/subfield[@code="a"]') AS 'uusi084a',
  TRIM(TRAILING '\n' FROM TRIM(IF(REGEXP_INSTR(t1.info, '084...._a') = 0, '', SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '084...._a')+9, REGEXP_INSTR(SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '084...._a')+9, 200), '[0-9]{3}...._| _')-1)))) AS 'vanha084a',
  SUM(CASE WHEN i.notforloan='-2' AND i.homebranch LIKE <<Kirjasto|branches:all>> THEN 1 ELSE 0 END) AS 'Saapuneita niteitä yksikössä',
  t1.timestamp AS 'Valunut',
  STR_TO_DATE(ExtractValue(bm.metadata,'//controlfield[@tag="005"]'),'%Y%m%d%H%i%s') AS 'Muokattu'
FROM (SELECT object, info, MAX(timestamp) AS timestamp
        FROM action_logs al
        WHERE al.timestamp >= NOW() - INTERVAL <<Haettavien päivien määrä>> DAY
            AND al.module='CATALOGUING'
            AND al.action='MODIFY'
            AND al.info LIKE 'biblio%'
        GROUP BY object) t1
LEFT JOIN biblio_metadata bm ON t1.object=bm.biblionumber
LEFT JOIN biblio b ON t1.object=b.biblionumber
CROSS JOIN (SELECT * FROM items WHERE homebranch LIKE <<Kirjasto|branches:all>> AND notforloan != '-1') i ON t1.object=i.biblionumber
GROUP BY t1.object) t2
WHERE t2.vanhaleader17 != 8
  AND (t2.vanha084a != t2.uusi084a
  OR t2.vanha100a != t2.uusi100a
  OR t2.vanha245a != t2.uusi245a)
order by 2,3,4,5
Kati-Helle commented 4 months ago

Kiitos Mikko, Hellen hakutuloksessa ei ole nyt tietueita liittyen leaderin arvoihin 5r ja 4r.

Hakutuloksessa esim. tietue, jonka 084a-arvo muuttunut kuva

Tietueen lokitiedoissa 084a-kentän muutokseen liittyen kuva

Hakutuloksessa on edelleen tietueita, joiden viimeisin muokkaus on Kohassa virkailijan tekemä. Esimerkiksi tämä kuva

kuva

Tietueen lokitiedot (piilotin virkailijan nimen ja ID-tunnuksen) kuva

MikkoLiimatainen commented 4 months ago

No pistetäänpä vielä tuo muokkauksen rajaus käyttäjään 0. Olettaisin, että tämä rajaa muutokset valuneisiin tietueisiin. Ainakin muutosten pitäisi tällä rajauksella olla järjestelmän tekemiä.

SELECT *
FROM (SELECT t1.object AS 'tietuenumero',
  (select itemtype from biblioitems bi where t1.object=bi.biblionumber) AS 'Aineistotyyppi',
  datelastseen AS "Viimeisin havaintopvm",
  b.author AS Tekijä,
  CONCAT('<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',b.biblionumber,'" target="_blank">',b.title,IF(b.subtitle != '', CONCAT(' ',b.subtitle),''),IF(b.part_number != '', CONCAT(' ',b.part_number),''),IF(b.part_name != '', CONCAT(' ',b.part_name),''),'</a>') AS 'Nimeke',
  SUBSTRING(ExtractValue(bm.metadata,'//leader'),18,1) AS 'uusileader17',
  SUBSTRING(t1.info, REGEXP_INSTR(t1.info, 'LDR')+21,1) AS 'vanhaleader17',
  ExtractValue(bm.metadata,'//datafield[@tag="040"][1]/subfield[@code="a"]') AS 'uusi040a',
  TRIM(TRAILING '\n' FROM TRIM(IF(REGEXP_INSTR(t1.info, '040...._a') = 0, '', SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '040...._a')+9, REGEXP_INSTR(SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '040...._a')+9, 200), '[0-9]{3}...._| _')-1)))) AS 'vanha040a',
  ExtractValue(bm.metadata,'//datafield[@tag="100"][1]/subfield[@code="a"]') AS 'uusi100a',
  TRIM(TRAILING '\n' FROM TRIM(IF(REGEXP_INSTR(t1.info, '100...._a') = 0, '', TRIM(SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '100...._a')+9, REGEXP_INSTR(SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '100...._a')+9, 200), '[0-9]{3}...._| _')-1))))) AS 'vanha100a',
  ExtractValue(bm.metadata,'//datafield[@tag="245"][1]/subfield[@code="a"]') AS 'uusi245a',
  TRIM(TRAILING '\n' FROM TRIM(IF(REGEXP_INSTR(t1.info, '245...._a') = 0, '', SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '245...._a')+9, REGEXP_INSTR(SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '245...._a')+9, 200), '[0-9]{3}...._| _')-1)))) AS 'vanha245a',
  ExtractValue(bm.metadata,'//datafield[@tag="084"][1]/subfield[@code="a"]') AS 'uusi084a',
  TRIM(TRAILING '\n' FROM TRIM(IF(REGEXP_INSTR(t1.info, '084...._a') = 0, '', SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '084...._a')+9, REGEXP_INSTR(SUBSTRING(t1.info, REGEXP_INSTR(t1.info, '084...._a')+9, 200), '[0-9]{3}...._| _')-1)))) AS 'vanha084a',
  SUM(CASE WHEN i.notforloan='-2' AND i.homebranch LIKE <<Kirjasto|branches:all>> THEN 1 ELSE 0 END) AS 'Saapuneita niteitä yksikössä',
  t1.timestamp AS 'Valunut',
  STR_TO_DATE(ExtractValue(bm.metadata,'//controlfield[@tag="005"]'),'%Y%m%d%H%i%s') AS 'Muokattu'
FROM (SELECT object, info, MAX(timestamp) AS timestamp
        FROM action_logs al
        WHERE al.timestamp >= NOW() - INTERVAL <<Haettavien päivien määrä>> DAY
            AND al.module='CATALOGUING'
            AND al.action='MODIFY'
            AND al.info LIKE 'biblio%'
            AND al.user = 0
        GROUP BY object) t1
LEFT JOIN biblio_metadata bm ON t1.object=bm.biblionumber
LEFT JOIN biblio b ON t1.object=b.biblionumber
CROSS JOIN (SELECT * FROM items WHERE homebranch LIKE <<Kirjasto|branches:all>> AND notforloan != '-1') i ON t1.object=i.biblionumber
GROUP BY t1.object) t2
WHERE t2.vanhaleader17 != 8
  AND (t2.vanha084a != t2.uusi084a
  OR t2.vanha100a != t2.uusi100a
  OR t2.vanha245a != t2.uusi245a)
order by 2,3,4,5
MikkoLiimatainen commented 4 months ago

Tarvitseeko noita päätekijöitä muuten hakea vielä jostain muista kentistä kuin 100a. Esim. 110a? En nyt suoraan muista mitkä kaikki näistä ovat olleet olennaisia aiemmissa vastaavissa raporteissa. Jos ensin määritellään kaikki kentät, joiden muutoksia halutaan tarkistella ja katsotaan raportin toimivuus, niin voin sitten myöhemmin koittaa vaikka saada ryhmiteltyä kentät otsikoiden päätekijyys ym. alle.

Kati-Helle commented 4 months ago

Kiitos Mikko muutoksesta 'No pistetäänpä vielä tuo muokkauksen rajaus käyttäjään 0'. Helle-Kohassa hakutuloksen tietueiden lokitietojen mukaan viimeisimpänä muokkaajana Virkailija=0. Lisäksi Käyttöliittymä=Verkkokirjasto.

Kati-Helle commented 4 months ago

MARC21-formaatissa mainitut Pääkirjauskentät https://marc21.kansalliskirjasto.fi/bib/1XX.htm

Antti varmistanee tarvittavat tarkasteltavat kentät :)

AnttHeik commented 3 months ago

Eli 100a-kentän lisäksi voisi laittaa vielä kentät 110a ja 111a. Mietin vähän, että olisiko varalta pitänyt laittaa myös 130a, mutta siinä tapahtuvat muutokset vaikuttavat kyllä hyvin harvoin tarroihin. Ehkä se kuitenkin voisi olla mukana.

AnttHeik commented 3 months ago

Olisikohan tuohon raporttiin mahdollista saada näkyviin myös tiedot 245-kentän osakentistä b, n ja p vai meneekö liian hankalaksi? Nyt jotkin noissa tapahtuneet muutokset eivät näy tuossa listauksessa.