CSV forælder-barn-hierarki: skabelon (nedbrydning af produktkatalog)

En PIM- eller styklisteeksport navngiver hver rækkes forælder, så dens pile peger opad. Kolonnen Linje til navngiver børn, så de peger nedad. Skabelonen her er den ombytning tegnet ud: fem dybdeniveauer, fem beslutninger, syv blade.

Brug denne skabelon

Den CSV-fil, der giver dette diagram

Én række pr. trin. Tallene i Linje til er rækkenumre — det er dem, der tegner forbindelserne, og det er den kolonne, de fleste filer mangler.

#FigurBokstekstLinje tilLinjetekstVandret baneLodret bane
1StartKatalog for udeliv2, 3Rod (forælder tom)Kategoripost
2ProcessSiddemøbler4Dybde 1Kategoripost
3ProcessSkygge og læ7Dybde 1Kategoripost
4DecisionHar kategorien flere underniveauer?5, 6Underkategori, Salgbart produktDybde 1Kategoripost
5ProcessBænke10Dybde 2Kategoripost
6ProcessHyndesæt til bænk8Dybde 2Produktpost
7ProcessHængeparasol 3 m9Dybde 2Produktpost
8DecisionHar produktet varianter?11, 12Ja: én række pr. variant, Nej: produktrækken er varenummeretDybde 2Produktpost
9DecisionSælges reservedelen særskilt?13, 14Sælges særskilt, Kun til serviceDybde 2Produktpost
10ProcessHavebænk 3 personer15Dybde 3Produktpost
11SuccessHyndesæt, naturDybde 3Variantpost
12SuccessHyndesæt til bænk, ét varenummerDybde 3Produktpost
13SuccessErstatningsdug 3 mDybde 3Variantpost
14EndRibbesamling til parasolDybde 3Komponentpost
15DecisionLagerført eller fremstillet efter ordre?17, 16Lagerført, Fremstillet efter ordreDybde 3Produktpost
16DecisionKøbt hjem eller fremstillet selv?18, 19Købt hjem, Fremstillet selvDybde 3Komponentpost
17SuccessHavebænk 3 personer, egDybde 4Variantpost
18EndLægtesæt i hårdttræDybde 4Komponentpost
19EndBænkestel i støbejernDybde 4Komponentpost
#,Figur,Bokstekst,Linje til,Linjetekst,Vandret bane,Lodret bane
1,Start,Katalog for udeliv,"2, 3",,Rod (forælder tom),Kategoripost
2,Process,Siddemøbler,4,,Dybde 1,Kategoripost
3,Process,Skygge og læ,7,,Dybde 1,Kategoripost
4,Decision,Har kategorien flere underniveauer?,"5, 6","Underkategori, Salgbart produkt",Dybde 1,Kategoripost
5,Process,Bænke,10,,Dybde 2,Kategoripost
6,Process,Hyndesæt til bænk,8,,Dybde 2,Produktpost
7,Process,Hængeparasol 3 m,9,,Dybde 2,Produktpost
8,Decision,Har produktet varianter?,"11, 12","Ja: én række pr. variant, Nej: produktrækken er varenummeret",Dybde 2,Produktpost
9,Decision,Sælges reservedelen særskilt?,"13, 14","Sælges særskilt, Kun til service",Dybde 2,Produktpost
10,Process,Havebænk 3 personer,15,,Dybde 3,Produktpost
11,Success,"Hyndesæt, natur",,,Dybde 3,Variantpost
12,Success,"Hyndesæt til bænk, ét varenummer",,,Dybde 3,Produktpost
13,Success,Erstatningsdug 3 m,,,Dybde 3,Variantpost
14,End,Ribbesamling til parasol,,,Dybde 3,Komponentpost
15,Decision,Lagerført eller fremstillet efter ordre?,"17, 16","Lagerført, Fremstillet efter ordre",Dybde 3,Produktpost
16,Decision,Købt hjem eller fremstillet selv?,"18, 19","Købt hjem, Fremstillet selv",Dybde 3,Komponentpost
17,Success,"Havebænk 3 personer, eg",,,Dybde 4,Variantpost
18,End,Lægtesæt i hårdttræ,,,Dybde 4,Komponentpost
19,End,Bænkestel i støbejern,,,Dybde 4,Komponentpost

Sådan fungerer det

  1. Find de to kolonner, der bærer hierarkiet

    Alt andet i eksporten er pynt i denne sammenhæng. Du skal bruge den kolonne, der rummer hver rækkes egen identifikator, og den kolonne, der navngiver dens forælder. De hedder sjældent id og parent_id: se efter parent_sku, belongs_to, category_path eller assembly. Er forælderen en sti frem for en kode, som Hjem > Siddemøbler > Bænke, er det sidste led forælderen, og resten er dybden. Har eksporten slet ingen forælderkolonne, men et niveaunummer, så se bemærkningen om indrykkede styklister længere nede.

  2. Vend forælderkolonnen om til Linje til

    Det er hele arbejdet. Sortér eller gruppér eksporten efter dens forælderkolonne, så hver forælders børn ligger samlet, og skriv så de børns rækkenumre ind i forælderens celle i Linje til, adskilt af kommaer. Retningen vender her: eksporten sagde barn navngiver forælder, arket siger forælder navngiver børn. Én følge er værd at sige højt: forælderkolonnen har én værdi pr. række, og Linje til har lige så mange værdier, som den række har børn, så informationen flytter fra mange rækker over på færre.

  3. Nummerér rækkerne til sidst, og først når rækkefølgen er endelig

    Linje til rummer rækkens placering i arket og ikke dens identifikator, så SKU-1042 skal blive til nummeret på den række, der bærer den. Indsæt en række bagefter, og hvert tal under indsættelsespunktet er nu forskudt med én. Få rækkerne på deres endelige plads først, og slå så id'erne op til numre i én omgang. En værdi i Linje til, der navngiver en række, som ikke findes, bliver droppet i stilhed, når diagrammet tegnes, og det ser ud som en kasse, der ganske enkelt glemte at forbinde sig til noget.

  4. Sæt cellen i Linje til i anførselstegn, og bekræft feltadskilleren

    Linje til og Linjetekst rummer kommaadskilte lister, så i en kommaadskilt fil skal de celler omsluttes af dobbelte anførselstegn ("4,5" og "Ja,Nej"), ellers får rækken et felt for meget, og hver kolonne efter den forskyder sig ét til venstre. Europæiske eksporter er ofte semikolonadskilte, hvilket gør kommaer inde i celler harmløse, men betyder, at hele filen skal læses som semikolonadskilt. Produktnavne har deres egne problemer med anførselstegn: et komma i Bænk, 3 personer eller et tommemærke i en 3" stang skal undtages på samme måde. Ser en kolonne ud til at blive ignoreret ved import, så se på den første overskrift, for en fil skrevet som UTF-8 med et byteordensmærke bærer tre usynlige bytes foran den.

  5. Sæt Figur ud fra, hvad rækken er, og Vandret og Lodret bane ud fra, hvor den ligger

    Én række får Start: den med den tomme forælder. Rækker med et tomt Linje til er blade, og et blad har brug for en slutfigur (Slut, Succes eller Afvist), for en række, der ikke er en afslutning og ikke har nogen udgående forbindelse, er en blindgyde. Brug den opdeling, denne skabelon bruger, hvis det hjælper: Succes til rækker, en kunde kan bestille, og Slut til rækker, der kun findes inde i en samling. Udfyld derefter Vandret bane med den dybde, du gik dig frem til, og Lodret bane med eksportens egen typekolonne. Et figurnavn, der ikke genkendes, normaliseres til Proces uden at klage, så kontrollér især stavningen af Beslutning.

  6. Ryd forældreløse rækker, ekstra rødder og sløjfer, før du importerer

    Tre kontroller, hver med sit eget symptom. Hver værdi i forælderkolonnen skal optræde i id-kolonnen; de, der ikke gør, er forældreløse, som regel fordi eksporten blev filtreret til én kategori, mens forældrene ligger over den. Præcis én række bør have en tom forælder, og har flere det, ser du på flere træer. Og ingen række må nå sig selv gennem sine forældre, hvilket sker efter en dårlig sammenfletning og, når det først er vendt om, tegner en forbindelse, der løber tilbage i sig selv.

Ofte stillede spørgsmål

Hvordan laver man en forælder- og barnkolonne om til et flowchart?

Ved at vende relationen om og derefter nummerere den. Eksporten giver dig barn navngiver forælder; arket vil have forælder navngiver børn. Gruppér rækkerne efter forælderkolonnen, og skriv for hver forælder dens børns rækkenumre ind i den forælders celle i Linje til, adskilt af kommaer. Hver række, hvis forældercelle er tom, er en rod og får figuren Start; hver række, der ikke optræder i nogens forælderkolonne, er et blad, får et tomt Linje til og får en slutfigur. Udfyld Bokstekst fra navnekolonnen, Vandret bane fra den dybde, du får ved at følge forælderkæden, og Lodret bane fra den typekolonne, eksporten allerede har. Træk derefter .csv-filen over på editorens regnearksområde, eller indsæt CSV-teksten direkte i det. Importen matcher på overskrifter, så kolonnernes rækkefølge i din fil er uden betydning, og kolonner, den ikke genkender, tages med og ignoreres.

Hvad er forskellen på en forælderkolonne og en kolonne Linje til?

Retning, antal og hvad værdien henviser til. En forælderkolonne peger opad: hver række navngiver den ene række over sig, så der er præcis én værdi pr. række, og blade er de rækker, ingen navngiver. En kolonne Linje til peger nedad: hver række navngiver rækkerne under sig, så en forælder med fire børn rummer fire værdier i én celle, og blade er de rækker, hvis celle er tom. Og værdierne er forskellige af art. En forælderkolonne rummer en identifikator, noget i retning af SKU-1042, som følger rækken, hvor end den flytter hen. Linje til rummer en placering, rækkens 1-baserede nummer i arket, som ændrer sig i det øjeblik, en række indsættes over den. Det er derfor, identifikatorerne skal slås op til numre, efter at rækkefølgen ligger fast, frem for før.

Mine kolonner forskød sig midtvejs i filen. Hvad skete der?

Næsten altid et komma uden anførselstegn. En CSV-række deles på feltadskilleren, før noget som helst andet ser på den, så en celle i Linje til med 4,5 i en kommaadskilt fil læses som to felter, rækken ender ét felt længere end overskriften, og hver kolonne efter Linje til lander under naboens overskrift. Omslut de celler med dobbelte anførselstegn, så sætter læseren dem sammen igen. Det samme gælder Linjetekst, som også er en kommaadskilt liste, og ethvert produktnavn med et komma i. Begynder forskydningen derimod ved den allerførste kolonne, er årsagen som regel det modsatte problem: filen er semikolonadskilt, som de fleste europæiske systemeksporter er, og bliver læst som kommaadskilt, eller et tegnsætsmisforhold har hængt et byteordensmærke på den første overskrift, så den ikke længere matcher.

Hvad sker der med en række, hvis forælder mangler i eksporten?

Den bliver forældreløs, og det er den mest almindelige fejl i en filtreret eksport. Du bad systemet om én kategori, eller kun om aktive varer, og det gav dig præcis de rækker, inklusive deres forælder-id'er, som peger på rækker, filteret udelod. Intet i filen er markeret som forkert. Når hierarkiet vendes om, bliver den række ganske enkelt aldrig nævnt i nogens Linje til, så den tegnes som en kasse, hvor intet ankommer, og som ligger uden for træet. Beslut pr. række, hvad der er tale om, før du importerer: en række, hvis forælder blev filtreret fra, bør knyttes til den nærmeste medtagne forfader, og en række, hvis forælder ikke længere findes i kildesystemet, er en datafejl, der skal meldes tilbage frem for tegnes.

Kan jeg bruge en stykliste med en niveaukolonne i stedet for en forælderkolonne?

Ja, og den konverteres til det samme, men konverteringen afhænger af rækkefølgen frem for af nogen værdi i rækken. En indrykket stykliste gentager niveauerne 1, 2, 2, 3, 1 ned gennem filen, og reglen er, at en rækkes forælder er den nærmeste række over den, hvis niveau er præcis ét lavere. Det betyder, at eksportens oprindelige rækkefølge er bærende: sortér filen efter varenummer først, og hierarkiet er væk, uden en fejl og uden noget tilbage at genskabe det fra. Gå filen igennem fra top til bund, hold styr på den senest sete række på hvert niveau, tildel forældre undervejs, og vend først derefter om til Linje til. Antal, enheder og leverandørkoder kan blive, hvor de er, i deres egne kolonner, som tages med gennem importen og ignoreres, eller flytte over i kolonnen Noter, hvis du vil have dem synlige.

Brug denne skabelon

Mere i CSV-skabeloner til flowcharts og diagrammer

Mere i Skabeloner til procesdiagrammer

Browse all CSV-skabeloner til flowcharts og diagrammer