Projekti

Yleinen

Profile

Tukipyyntö #4370

Hanken: Holdings-tietueiden poisto monografioilta

Lisännyt Vilhelm Lönnberg noin 3 vuotta sitten. Päivitetty yli 2 vuotta sitten.

Tila:
Suljettu
Prioriteetti:
Normaali
Nimetty:
-
Luokka:
Jälkihoitotyö
Kohdeversio:
-
Alku:
26. Maaliskuuta 2020
Määräaika:
% Tehty:

80%

Arvioitu aika:
Yhteyshenkilö:
Votes: 0

Kuvaus

Poistetaan holdings-tietueet niiltä monografia-tietueilta, joissa on niteitä ja joissa nimiö-kentän merkkipaikka 07 sisältää merkinnän "m".
Ennen poistoa siirretään varastotiedoista 852 z-osakentän julkiset huomautukset Koha-nidetietueen z-public note -kenttään.
Ei poisteta:
Varastotietueita, joilla EI ole niteitä.
Näitä ovat kausijulkaisujen (s) ja e-aineistoon linkittävät varastotietueet (DATABASER, EBOK, EBOK1, ELEKTRON, LJUDBOK).
Jatkossa varastotietueita käytetään vain sarja-aineistoissa (esim. lehdet) ja e-aineistoissa (e-kirjat ja tietokannat).

SQL insert.PNG (13,2 KB) SQL insert.PNG Vilhelm Lönnberg, 10. Elokuuta 2020 15:07
Beståndsposter.docx (11,6 KB) Beståndsposter.docx Vilhelm Lönnberg, 14. Elokuuta 2020 15:18
4682

Historia

#1 Updated by Joonas Kylmälä almost 3 years ago

Hei,

oletan että haluatte laitta 852z-kentän huomautukset kaikkiin varastotietueen niteisiin?

Hyllypaikoissa 'DATABASER', 'EBOK', 'EBOK1', 'ELEKTRON', 'LJUDBOK' on aika paljon niteellisiä varastotietueita. Poistetaanko siis ne kuitenkin? Alla on SQL-kysely poistamista varten, joka jättäisi nämä varastotietueet poistamisen ulkopuolelle. Jos haluatte että nämäkin siis poistetaan niin ilmoittakaa ja muokataan SQL-lausetta. Voidaan myös tehdä tämä erissä, eli ensin poistetaan kaikki sellaiset varastotietueet jotka ei ole noissa edellä mainituissa sijainneissa ja täyttää muut ehdot ja sen jälkeen voitte ehkä tutkia tietokantaa helpommin kun siellä on vähemmän varastotietueita.

INSERT INTO temp_holding_ids (SELECT DISTINCT(holding_id) from holdings where biblionumber IN (SELECT DISTINCT(biblio_metadata.biblionumber) from biblio_metadata LEFT JOIN items USING (biblionumber) WHERE SUBSTRING(ExtractValue(biblio_metadata.metadata,'//leader'), 8, 1) = "m" GROUP BY biblio_metadata.biblionumber HAVING COUNT(items.itemnumber) > 0) AND holdings.deleted_on IS NULL AND holdings.location NOT IN ('DATABASER', 'EBOK', 'EBOK1', 'ELEKTRON', 'LJUDBOK'));

UPDATE items SET holding_id = NULL WHERE holding_id IN (SELECT holding_id from temp_holding_ids);
UPDATE holdings_metadata SET deleted_on = NOW() WHERE holding_id IN (SELECT holding_id from temp_holding_ids);
UPDATE holdings SET deleted_on = NOW() WHERE holding_id IN (SELECT holding_id from temp_holding_ids);

#2 Updated by Vilhelm Lönnberg almost 3 years ago

4682

Hei,

Pitää ensin keskustella sisäsesti mitä näille tehdään. Tuo SQL kysely ei toiminut minulle. Sain vain seuraavan varoituksen että kysely ei pitänyt INSERT hakusanasta. Teenkö jotain väärin kuin yritin viedä sen Kohan?

#3 Updated by Joonas Kylmälä almost 3 years ago

Aja vain tuo sisäkysely eli

SELECT DISTINCT(holding_id) from holdings where biblionumber IN (SELECT DISTINCT(biblio_metadata.biblionumber) from biblio_metadata LEFT JOIN items USING (biblionumber) WHERE SUBSTRING(ExtractValue(biblio_metadata.metadata,'//leader'), 8, 1) = "m" GROUP BY biblio_metadata.biblionumber HAVING COUNT(items.itemnumber) > 0) AND holdings.deleted_on IS NULL AND holdings.location NOT IN ('DATABASER', 'EBOK', 'EBOK1', 'ELEKTRON', 'LJUDBOK')

#4 Updated by Vilhelm Lönnberg almost 3 years ago

SQL kysely toimi, tosin minulle jäi epäselväksi missä kentässä tuo holdings_id löytyy?

Mitä tulee hyllypaikoihin 'DATABASER', 'EBOK', 'EBOK1', 'ELEKTRON', 'LJUDBOK' missä on niteitä, niin niitä ei missän nimessä poistetta! Osa esim. on tohtorin väitöksia missä on niin e-kirja kuin nide.

#5 Updated by Joonas Kylmälä almost 3 years ago

holdings_id -tietokantasarake kirjoitetaan ilman s:ää, siis holding_id. Se löytyy holdings, holdings_metadata ja items -tauluista.

Tutkin asiaa tarkemmin ja ainoa noissa sijainneissa oleva varastotietue, johon liittyy (siis varastotietueeseen) suoraan nide on tietueessa https://hanken.finna.fi/Record/hanna.351065

Ne mitä löytyi tuhansittain oli sellaisia, että tietueessa on varastotietue noissa listassa olevissa hyllypaikoissa ja sitten joku nide, joka ei liity varastotietueeseen tai liittyy johonkin muuhun varastotietueeseen, esim. https://hanken.finna.fi/Record/hanna.50498

Olisiko nyt tarkoitus jättää sellaisten bib-tietueiden käsittely pois, joissa on varastotietueita 'DATABASER', 'EBOK', 'EBOK1', 'ELEKTRON', 'LJUDBOK' hyllypaikoissa? Voidaan myös lähteä liikkeelle jonkun pienemmän ja helpommin määriteltävän kokonaisuuden poistamisesta.

#6 Updated by Joonas Kylmälä almost 3 years ago

Keskusteltiin asiasta ja yhteenvetona nyt uusi poistostrategia:

- Poistetaan varastotietueet vain jos kaikki bib-tietueessa olevat varastotietueet on poistettavien hyllypaikkojen listassa
- Poistetaan varastotietue vain jos sillä on niteitä

Unohdin vielä kysyä tämän kysymyksen: haluatteko laittaa 852z-kentän huomautukset kaikkiin varastotietueen niteisiin ennen poistamista? Oletan että haluatte, muuten tulisi aika hassu tilanne, että vain yhdellä niteistä olisi tallessa tämä tieto vaikka se koskee kaikkia.

#7 Updated by Vilhelm Lönnberg almost 3 years ago

Holding poistettaan kaikista yliviivatuista loceista (löytyy tiedostosta) niillä on itemi. Ne locit mitkä eivät ole yliviivattu, niin holdingsit jää riippumatta onko niissä item tai ei.

Kyllä saa pistää huomautuksen kenttään 852z.

#8 Updated by Joonas Kylmälä almost 3 years ago

Julkisten varastotietueen huomautusten siirto 852z-kentästä julkisiin nidehuomatuksiin (itemnotes) ja varastotietueiden poisto nyt listattujen hyllypaikkojen kohdalle olisi määriteltynä ja valmiina suoritettavaksi, jos saan siihen teiltä luvan. Muutoksen tekemisen jälkeen olisi hyvä, että tarkistaisitte nuo ~2000 huomautusta käsin, että niissä ei sama teksti esimerkiksi ole nyt kahteen kertaan, jos se on siis vaikkapa ollut varastotietueessa ja niteessa aikaisemmin. Varastotietueen ja niteen huomautuksen väliin tulee myös pilkku erotinmerkiksi, onko tämä OK?

INSERT INTO temp_holding_ids (SELECT holding_id from holdings where biblionumber IN (SELECT DISTINCT(biblio_metadata.biblionumber) from biblio_metadata LEFT JOIN items USING (biblionumber) WHERE SUBSTRING(ExtractValue(biblio_metadata.metadata,'//leader'), 8, 1) = "m" GROUP BY biblio_metadata.biblionumber HAVING COUNT(items.itemnumber) > 0) AND holdings.deleted_on IS NULL AND holdings.holding_id IN (select holding_id from items) AND holdings.location IN ('MONOGRAFI', 'VASA', 'REFERENS', 'AVHNYA', 'KURSHEM', 'KURSLASE', 'MONOLASE', 'MOTESRUM', 'AVHGAMLA', 'AABOCKER', 'AVHARKIV'));

UPDATE items LEFT JOIN (SELECT holding_id, ExtractValue(metadata, '//datafield[@tag="852"]/subfield[@code="z"]') as note from holdings_metadata WHERE ExtractValue(metadata, '//datafield[@tag="852"]/subfield[@code="z"]') != "") m ON m.holding_id = items.holding_id SET items.itemnotes = CONCAT_WS(', ', m.note, items.itemnotes) WHERE items.holding_id IS NOT NULL AND items.holding_id IN (SELECT holding_id from temp_holding_ids);

UPDATE items SET holding_id = NULL WHERE holding_id IN (SELECT holding_id from temp_holding_ids);
UPDATE holdings_metadata SET deleted_on = NOW() WHERE holding_id IN (SELECT holding_id from temp_holding_ids);
UPDATE holdings SET deleted_on = NOW() WHERE holding_id IN (SELECT holding_id from temp_holding_ids);

Raportti, jolla saatte julkiset niteiden huomautukset liittyen muokattuihin varastotietueisiin (toimii vasta poiston jälkeen)

select biblionumber, itemnotes from items where holding_id IN (select holding_id from temp_holding_ids) and itemnotes != "";

#9 Updated by Vilhelm Lönnberg almost 3 years ago

Onko yllä olevan SQL raporttin tarkoitus toimia Kohassa? Koha ei ainakaan hyväksy INSERT toimintoa,

#10 Updated by Joonas Kylmälä almost 3 years ago

Ei ole tarkoitus toimia, nuo kyselyt muuttavat tietokannan dataa eli tässä tapauksessa poistaisivat nuo varastotietueet ja sellainen ei onnistu raporttien kautta. Lisäsin nyt nuo poistettavat varastotietue id:t temp_holding_ids -tauluun jos haluat myös tutustua niihinkin ennen poistamista. Se onnistuu lauseella

select * from temp_holding_ids;

Ennen lopullista poistoajoa päivitän vielä tuon listauksen viimeisimmän tilanteen mukaan, mutta käytän siis samaa SQL-lausetta kuin minkä tähän laitoin, joten mitään yllätyksiä ei pitäisi tulla.

#11 Updated by Vilhelm Lönnberg almost 3 years ago

Onko holdings_id sama kuin biblionumber? Mistä tasan tarkkaan etsitään holdings_id bibtietueista? Olen yrittänyt etsiä holding_id:tä bibtietueista enkä ole täysin ymmärtänyt mistä se löytyy. Koska jos holding_id on sama kuin biblionumber niin silloin tuohon edellä olevaan raporttiin tulee TIDSKRIFT loceistä. TIDSKRIFT holdings ja items ei pitänyt koskea!

#12 Updated by Joonas Kylmälä almost 3 years ago

Tällä näätte poistettavien varastotietueiden perustiedot (toimipiste, hyllypaikka, biblionumber, ...):

SELECT * FROM holdings WHERE holding_id IN (SELECT holding_id from temp_holding_ids);

#13 Updated by Joonas Kylmälä almost 3 years ago

Jäi epäselväksi ehkä edellisestä viestistäni, niin tarkennan vielä: holding_id siis yksilöi varastotietueen ja biblionumber yksilöi bibliografisen tietueen. Eli jos tuolla edellisellä kyselyllä katsotaan noita tuloksia, niin biblionumberilla löydät Kohasta bib-tietueen, josta voit myös käydä katsomassa poistettavaa varastotietuetta. Varastotietueen holding_id näkyy kohassa varastotietueen 999e-MARC-kentässä (tosin tämä on konfiguroitavissa asetuksista, niin en ole nyt varma mikä se teillä on kun tässä oli muutoksia vastaikään)

#14 Updated by Vilhelm Lönnberg almost 3 years ago

Kävimme läpi raporttia. Vaikutti hyvältä. Saa aloittaa ajon. Mihin aikana ajo tehdään ja kuinka kauan se kestää ja onko Koha poissa käytöstä sen aikana?

#15 Updated by Joonas Kylmälä almost 3 years ago

Hyvä juttu, teen ajon tänään iltapäivästä, ilmoitan sitten teille kun se on tehty. Ajossa menee vain pari sekuntia eikä vaikuta Kohan toimintaan.

#16 Updated by Joonas Kylmälä almost 3 years ago

  • % Tehty changed from 0 to 80

Ajo on nyt tehty. SQL-raportilla

select biblionumber, barcode, itemnotes from items where itemnumber IN (select itemnumber from temp_items_ids);

voitte tarkastaa näyttääkö niteiden huomautukset nyt oudoilta, mutta vaikuttaisi siltä että ei koska ei ollut sellaisia tapauksia, joissa olisi ollut varastotietueessa ja niteessä molemmissa huomautuksia. Ehkä enemmän kannaattaa kiinnittää huomiota siihen, jos on monta nidettä bibliossa ja niissä sama huomautus.

Tarkastan vielä ne loput kulmatapaukset, jotka jäi poistamatta, jos siis sellaisia on ollenkaan. Esim. ne NULL-hyllypaikassa olevat jäivät vielä tästä ajosta poistamatta.

#17 Updated by Joonas Kylmälä almost 3 years ago

NULL-hyllypaikassa ei ollut poistettavia, eli se käsitelty. Onkohan nyt siis kaikki halutut poistettu vai löydättekö vielä jotain, jonka saa poistaa?

#18 Updated by Joonas Kylmälä yli 2 vuotta ago

  • Tila changed from Uusi to Suljettu

Vie Atom PDF