Toon posts:

Data versioning in ETL

Pagina: 1
Acties:

Vraag


  • Yucon
  • Registratie: December 2000
  • Nu online
Kent iemand goede software om versiebeheer van datasets te beheren?

Iedereen hier zal git kennen voor het versiebeheer van software. Ik werk zelf in de ERP wereld en daar heb je vaak de situatie dat je bij migraties data moet gaan opschonen. Leveranciersdata opschonen, artikeldata opschonen, etc. Het lastige dat je daar hebt is dat het eigenaarschap niet altijd duidelijk is met als gevolg dat er tijdelijk meerdere versies van de waarheid zijn. Uiteindelijk komen die meestal wel weer bij elkaar. Hier is nogal wat variatie in; jantje beheert de nederlandse leveranciers, pietje de buitenlandse, en klaasje de leveranciers van ijzerwaren ongeacht waar die gevestigd zijn. De overlap en bijbehorende discussies mogen duidelijk zijn.

Het resultaat is dat je vrijwel dezelfde situatie hebt als met software. Allerlei losse stukjes code die uiteindelijk ofwel verdwijnen, ofwel ooit in de master branch terechtkomen. Tooling in deze datawereld wordt ETL tooling genoemd. Extract, transform en load maar dat is dan ook precies wat het doet. De focus ligt op allerlei connectors in combinatie met transformatiemogelijkheden. Maar dan wel uitgaande van een afgebakende dataset en daar zit het pijnpunt.

Ik zocht dus naar tools die dit meer op een git manier aanpakken met branching en merging. Daarbij ben ik alleen lakeFS tegengekomen. Dat is dan weer specifiek op big data gericht. Waarschijnlijk is er wel overlap, maar het zou wel handig zijn als er ook een user interface op zou zitten waarbij key users data kunnen reviewen en dat lijkt hier dan weer niet de insteek te zijn.

Ergens vraag ik me af of ik een afslag gemist heb. Wat ik wil lijkt enorm voor de hand liggend te zijn en toch bestaat het blijkbaar niet. Heeft iemand hier iets handigs voor gevonden?

Ik twijfelde een beetje over het juiste forum. Omdat dit ondanks de data toch wel sterk om scripting draait en mensen buiten de devwereld het concept van git lastig te begrijpen te vinden heb ik voor software ontwikkeling gekozen. Feitelijk zijn migraties dat vanwege de vele scripting dat in de basis namelijk ook wel alleen is het breder dan dan.

edit; de ETL tools die bij mijn huidige klant gebruikt worden zijn dell boomi. azure data factory en SSIS (verkokering, diverse afdelingen). Ik heb daar zelf nog niets relevants voor kunnen vinden maar ik noem ze mocht iemand een exotische plugin voor een ervan kennen die dit soort dingen afhandelt. Je hebt voor azure data factory wel bijvoorbeeld dit maar dit is juist een voorbeeld van wat ik niet zoek. Dit focust op versiebeheer voor de ETL scripts zelf ipv de datasets die erbij horen en alleen die scripts meenemen is te beperkt.

[Voor 20% gewijzigd door Yucon op 22-02-2022 09:46]

Alle reacties


  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 14:29
Dit is best een tricky probleem; want wil je ook verschillende versies van de data (dus de eigenlijke records) opslaan en (tegelijkertijd) beschikbaar stellen? Bijvoorbeeld dat verschillende afdelingen naar verschillende versies van het data warehouse aankijken?

Op zich zijn er best systemen die versies / wijzigingen aan de data tracken zoals het LakeFS dat je zelf noemt of een Delta Lake of iets als DVC. Maar ik weet niet of dat voldoet aan je requirements.

Je zou ook eens naar DataBuildTool (https://www.getdbt.com/) kunnen kijken; hiermee kun je al je transformaties onder versiebeheer zetten en laten uitrollen. MAAR het doet niet de Load stap van ETL; m.a.w. je moet je ruwe data al ergens hebben staan. Wel kun je met DBT verschillende versies van die data weergeven; bijvoorbeeld een view waarin sommige records weggefilterd worden voor de ene afdeling en een volledige view voor de andere...

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 13:08
Ik Heb bij een aantal grote bedrijven gezien dat ze hier een CQRS oplossing voor maken Misschien dat die kant op te zoeken je verder helpt? Effectief sla je dan alle mutaties op en maak je projecties voor verschillende soorten gebruikers. Zo kunnen er parallel ook meerdere versies van de waarheid verstaan in verschillende projecties , Maar wel gebaseerd zijn op dezelfde bron data.

[Voor 49% gewijzigd door BCC op 22-02-2022 11:45]


  • Yucon
  • Registratie: December 2000
  • Nu online
BCC schreef op dinsdag 22 februari 2022 @ 11:42:
Ik Heb bij een aantal grote bedrijven gezien dat ze hier een CQRS oplossing voor maken Misschien dat die kant op te zoeken je verder helpt? Effectief sla je dan alle mutaties op en maak je projecties voor verschillende soorten gebruikers. Zo kunnen er parallel ook meerdere versies van de waarheid verstaan in verschillende projecties , Maar wel gebaseerd zijn op dezelfde bron data.
Ik kende CQRS eerlijk gezegd niet in deze context. Tot nu toe beschouwde ik het als iets om de performance bij grote volumes nog een beetje op peil te houden.

Dit is echter iets anders. Of bedoel je daarmee dat ze meerdere versies van die "C" loggen en op die manier dingen uit elkaar houden?

edit: je edit maakte het duidelijk

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 13:08
Event sourcing is gelieerd hieraan. Er staan wel wat goede filmpjes op YouTube bijvoorbeeld YouTube: Ian Luites - From Legacy To Event Sourcing | CBL AMSTERDAM 19

[Voor 43% gewijzigd door BCC op 22-02-2022 12:02]


  • Yucon
  • Registratie: December 2000
  • Nu online
BCC schreef op dinsdag 22 februari 2022 @ 12:01:
Event sourcing is gelieerd hieraan. Er staan wel wat goede filmpjes op YouTube bijvoorbeeld YouTube: Ian Luites - From Legacy To Event Sourcing | CBL AMSTERDAM 19
Stevige kost, wel heel interessant. Ik ben nu halverwege. Vanavond verder.

Op zich zit dit wel in de buurt en ik dacht eerder ook al iets in de richting van het stapelen van recordsets wat grofweg wel wat overeenkomsten heeft. Alleen was het in principe niet de bedoeling om iets te gaan bouwen. Gevoelsmatig moeten hier toch wel standaard oplossingen voor bestaan, tenminste dat hoopte ik toen ik begon met zoeken.

Er viel me ook nog een alternatieve oplossing in die wel elegant in z'n eenvoud is. De hoeveelheden data zijn redelijk beperkt. Denk aan ergens tussen de paar honderd tot max 150.000 recs (meestal veel minder). Je zou de data als json files weg kunnen schrijven en die vervolgens gewoon met een git setup af kunnen laten handelen. Als je datasets die door users aangeleverd zijn automatisch naar een geschikte json file converteert en naar git doorzet, en functionaliteit inbouwt om een willekeurige branch van file naar db te laten verhuizen kun je ook eenvoudig queries laten draaien. Dan ben je er wel bijna.

Edit; dan kom je dus op iets dergelijks uit YouTube: Using Git as a NoSql Database by Kenneth Truyers (filmpje zelf staat ook op m'n lijst voor vanavond)

[Voor 7% gewijzigd door Yucon op 22-02-2022 13:22]


  • BCC
  • Registratie: Juli 2000
  • Laatst online: 13:08
Die talk is van 2019, maar die legt het principe wel uit met een concreet voorbeeld imho. Er zijn ondertussen vast tools op de markt die dit zo voor je kunnen - maar zoals je al zei dit is de dev afdeling - ik bouw maatwerk oplossingen voor als er geen tool is, dus van bestaande tooling weet ik ook niet zoveel in dit geval :)

  • Lt.Mitchell
  • Registratie: Januari 2022
  • Nu online
Als ik je vraag goed begrijp ben je eerder op zoek naar een tool om aan Master Data Management te gaan doen? Niet zo zeer versioning van code?

Afhankelijk van de maturiteit van de organisatie kan je werken met
- sharepoint lists
- MDS (SQL Server Master Data Services)
- Atacamma (https://www.ataccama.com/)

  • scosec
  • Registratie: Februari 2016
  • Laatst online: 15-01 13:40
Met welke reden wil je datasets mee in source control zetten?

Je tooling heb je met ADF in source control. Wat wil je met die datasets in sourcecontrol?
Elke run creërt een nieuw output bestand als je wil. Desnoods bewaar je die in een datalake of blobcontainer.

Ik denk dat je, je vraag nog iets of wat moet toelichten.

  • Yucon
  • Registratie: December 2000
  • Nu online
scosec schreef op dinsdag 22 februari 2022 @ 17:12:
Met welke reden wil je datasets mee in source control zetten?

Je tooling heb je met ADF in source control. Wat wil je met die datasets in sourcecontrol?
Elke run creërt een nieuw output bestand als je wil. Desnoods bewaar je die in een datalake of blobcontainer.

Ik denk dat je, je vraag nog iets of wat moet toelichten.
Soms is van een bepaalde entiteit de data owner niet bekend. Of die is wel bekend maar is die persoon zelf ook nogal onzeker over hoe het nu in elkaar zit waardoor je meerdere versies hebt waarvan op z'n minst iemand claimt dat dat de waarheid is. Achteraf blijkt dat toch genuanceerder te zijn. Dan moet je datasets gaan combineren. Met name als dat meerdere keren achter elkaar en in verschillende combinaties gebeurt valt dat met de hand niet te managen.

  • Yucon
  • Registratie: December 2000
  • Nu online
Lt.Mitchell schreef op dinsdag 22 februari 2022 @ 14:29:
Als ik je vraag goed begrijp ben je eerder op zoek naar een tool om aan Master Data Management te gaan doen? Niet zo zeer versioning van code?

Afhankelijk van de maturiteit van de organisatie kan je werken met
- sharepoint lists
- MDS (SQL Server Master Data Services)
- Atacamma (https://www.ataccama.com/)
dat is ook wel een goede denkrichting. Ik zat in m'n hoofd niet echt richting MDM omdat ik dit recent bij iets bij de hand gehad had wat meer richting transactionele data lag. Maar dat maakt het probleem inderdaad niet anders.
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee