Redigerer
Datatransformasjon
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
'''Datatransformasjon''', eller bare '''transformasjon''', er en prosess innen databehandling hvor man konverterer data fra en struktur eller format til en annen struktur eller format. Det er en grunnleggende del i det meste av [[dataintegrasjon]],<ref name="cio.com"/> og er vanlig i [[Dataforvaltning|databehandlingsoppgaver]] som [[dataavstemming]], [[dataintegrasjon]], applikasjonsintegrasjon og operasjoner i [[datavarehus]]. == Kompleksitet == Datatransformasjon kan være enkel eller kompleks basert på hvilke endringene som kreves for dataene mellom den går fra kildesystemet og målsystemet. Transformasjon utføres vanligvis via en blanding av manuelle og automatiserte steg.<ref name="livinglab.mit.edu">DataXFormer. Morcos, Abedjan, Ilyas, Ouzzani, Papotti, Stonebraker. An interactive data transformation tool. Retrieved from: http://livinglab.mit.edu/wp-content/uploads/2015/12/DataXFormer-An-Interactive-Data-Transformation-Tool.pdf</ref> Verktøy og teknologier brukt til datatransformasjon kan variere mye basert på format, struktur, kompleksitet og volum på dataene som transformeres. == Transformasjoner ved grunndata-omarbeiding == En [[grunndata]]-omarbeiding er en spesiell form for datatransformasjon hvor hele databasen med dataverdier transformeres eller omarbeides uten å trekke ut dataene fra databasen. Alle data i en velutformet database er direkte eller indirekte relatert til en begrenset mengde med grunn-[[Tabell (database)|databasetabeller]] ved hjelp av et nettverk av begrensninger for [[Nøkkel (database)#Fremmednøkkel|fremmednøkler]]. Hver fremmednøkkelbegrensning er avhengig av en unik [[Database index|databaseindeks]] fra den overordnede databasetabellen. Når den riktige hoved-databasetabellen omarbeides med en annen unik indeks, så skal dette medføre at de direkte og indirekte relaterte dataene også omarbeides. De direkte og indirekte relaterte dataene kan også fremdeles vises i den opprinnelige formen siden den opprinnelige unike indeksen fremdeles eksisterer med grunndataene. Omarbeiding av database må også gjøres på en slik måte at det ikke påvirker [[applikasjonsarkitektur]]-programvare. Når dataavbildningen er gjøres indirekte via en formidlende [[datamodell]] kalles prosessen kalles også '''dataformidling'''. == Transformasjonsprosessen == Datatransformasjon kan deles inn i følgende steg, hvor nødvendigheten av de enkelte stegene avhenger av kompleksiteten som kreves i transformasjonen: * [[Dataoppdagelse]] * [[Dataavbildning]] * [[Kodegenerering (kompilatorer)|Kodegenerering]] * [[Utførelse|Kodekjøring]] * Datagjennomgang Disse stegne er ofte i fokus for utviklere eller tekniske dataanalytikere som kan bruke flere spesialiserte verktøy for å utføre oppgavene sine. Stegene kan beskrives som følger: '''Dataoppdagelse''' er det første steget i transformasjonsprosessen. Vanligvis profileres dataene ved hjelp av profileringsverktøy eller noen ganger ved hjelp av manuelt skrevne profileringsskript for bedre å forstå strukturen og egenskapene til dataene og finne ut hvordan de må transformeres. '''Dataavbildning''' er prosessen med å definere hvordan individuelle felter avbildes, modifiseres, skjøtes, filtreres, aggregeres, og så videre, for å gi det ønskede sluttresultatet. Utviklere eller tekniske dataanalytikere utfører tradisjonelt dataavbildning siden de jobber med de spesifikke teknologiene for å definere transformasjonsreglene (for eksempel [[Uttrekk, transformasjon og lasting|ETL-vektøy]]<ref>DWBIMASTER. Top 10 ETL Tools. Retrieved from: http://dwbimaster.com/top-10-etl-tools/</ref> eller transformasjonsspråk). '''Kodegenerering''' er prosessen med å generere kjørbar kode (for eksempel [[SQL]], [[Python]], [[R (programmeringsspråk)|R]] eller andre [[Skriptspråk|kjørbare]] instruksjoner) som kan transformere dataene basert på de ønskede og definerte dataavbildnings-reglene.<ref>Petr Aubrecht, Zdenek Kouba. Metadata driven data transformation. Retrieved from: http://labe.felk.cvut.cz/~aubrech/bin/Sumatra.pdf {{Wayback|url=http://labe.felk.cvut.cz/~aubrech/bin/Sumatra.pdf |date=20210416121323 }}</ref> Vanligvis genererer transformasjonsteknologiene denne koden<ref>LearnDataModeling.com. Code Generators. Retrieved from: http://www.learndatamodeling.com/tm_code_generator.php {{Wayback|url=http://www.learndatamodeling.com/tm_code_generator.php |date=20170802064905 }}</ref> basert på definisjonene eller [[Metadata|metadataene]] definert av utviklerne. '''Kodekjøring''' er steget der den genererte koden utføres mot dataene for å gi det ønskede resultatet. Koden som kjøres kan være tett integrert med transformasjonsverktøyet, eller kan kreve separate steg av utvikleren for å kjøre den genererte koden manuelt. '''Datagjennomgang''' er det siste steget i prosessen, og fokuserer på å sikre at utdataene oppfyller transformasjonskravene. Det er vanligvis forretningsbrukeren eller den endelige sluttbrukeren av dataene som utfører dette steget. Eventuelle avvik eller feil i dataene som blir funnet og kommuniseres tilbake til utvikleren eller dataanalytikeren som endringsforespørsler eller nye krav som skal implementeres i transformasjonsprosessen.<ref name="cio.com"/> == Typer transformasjoner == === Satsvis datatransformasjon === Tradisjonelt har datatransformasjon vært en satsvis prosess<ref name="tdwi.org">TDWI. 10 Rules for Real-Time Data Integration. Retrieved from: https://tdwi.org/Articles/2012/12/11/10-Rules-Real-Time-Data-Integration.aspx?Page=1</ref> hvor utviklere skriver kode eller implementerer transformasjonsregler i et dataintegrasjonsverktøy og deretter kjører den koden eller disse reglene på store datamengder.<ref name="andrefreitas.org">Tope Omitola, Andr´e Freitas, Edward Curry, Sean O'Riain, Nicholas Gibbins, and Nigel Shadbolt. Capturing Interactive Data Transformation Operations using Provenance Workflows Retrieved from: http://andrefreitas.org/papers/preprint_capturing%20interactive_data_transformation_eswc_highlights.pdf</ref> Denne prosessen kan følge de lineære stegene som beskrevet om generelle transformasjonsprosesser ovenfor. Satsvis transformasjon er hjørnesteinen i praktisk talt alle integrasjonsteknologier som [[datavarehus]], [[datamigrering]] og [[applikasjonsintegrasjon]].<ref name="cio.com">CIO.com. Agile Comes to Data Integration. Retrieved from: https://www.cio.com/article/2378615/data-management/agile-comes-to-data-integration.html</ref> Når data må transformeres og leveres med lav [[latens]] brukes ofte begrepet mikrosats (''microbatch'').<ref name="tdwi.org"/> Dette refererer til at det behandles små grupper med data (for eksempel et lite antall rader eller en liten mengde dataobjekter) som demed kan behandles veldig raskt og leveres til målsystemet når det trengs. === Fordeler med satsvis datatransformasjon === Tradisjonelle transformasjonsprosesser har vært en arbeidshest for selskaper i flere tiår. De ulike verktøyene og teknologiene (dataprofilering, datavisualisering, datavask, dataintegrasjon, og så videre) har modnet, og de fleste (om ikke alle) virksomheter transformerer enorme datamengder som mater interne og eksterne applikasjoner, datavarehus og andre datalagre.<ref name="The Value of Data Transformation">The Value of Data Transformation</ref> === Begrensninger av tradisjonell datatransformasjon === Den tradisjonelle transformasjonsprosessen har også begrensninger som hemmer den generelle effektiviteten og effekten.<ref name="cio.com"/><ref name="livinglab.mit.edu"/><ref name="andrefreitas.org"/> Menneskene som trengs for å bruke dataene (for eksempel forretningsbrukere) spiller ikke en direkte rolle i transformasjonsprosessen.<ref name="digital.lib.washington.edu"/> Vanligvis gir brukerne transformasjonsoppgaven til utviklere som har de nødvendige tekniske eller kodeferdighetene for å definere transformasjonene og utføre dem på dataene.<ref name="The Value of Data Transformation">The Value of Data Transformation</ref> Denne prosessen gjør at mesteparten med å definere de nødvendige transformasjonene lempes over på utvikleren som ofte ikke har den samme [[Domenekunnskap|domenekunnskapen]] som forretningsbrukeren. Utvikleren tolker kravene til forretningsbrukeren og implementerer den relaterte koden eller logikken. Dette steget har potensial til å introdusere feil i prosessen (gjennom feiltolkede krav), og øker også tiden for å komme frem til en løsning på forretningsproblemet.<ref name="digital.lib.washington.edu"/><ref name="ReferenceA">McKinsey.com. Using Agile to Accelerate Data Transformation</ref> Dette problemet har gitt opphav til behovet for [[Smidig programvareutvikling|smidighet]] og [[selvbetjening]] innen dataintegrasjon (altså styrke brukeren av dataene sine datakunnskaper og gjøre dem i stand til å transformere dataene selv interaktivt).<ref name="andrefreitas.org"/><ref name="ReferenceA">McKinsey.com. Using Agile to Accelerate Data Transformation</ref> Det finnes selskaper som tilbyr verktøy for selvbetjening av datatransformasjon. De tar sikte på å effektivt analysere, kartlegge og transformere store datamengder uten å kreve den tekniske kunnskapen og prosesskompleksiteten som vanligvis kreves. Mens disse selskapene på underliggende nivå leverer tradisjonell satsvis transformasjon så muliggjør verktøyene deres en presentasjon som er mer interaktiv for brukerne gjennom å bruke visuelle plattformer og enkle skript som gjenbrukes.<ref>{{Kilde avis|url=https://www.datanami.com/2016/05/31/self-service-prep-killer-app-big-data/|tittel=Why Self-Service Prep Is a Killer App for Big Data|dato=2016-05-31|avis=Datanami|besøksdato=2017-09-20|språk=en-US}}</ref> Likevel kan det være noen kompatibilitetsproblemer (som for eksempel at nye datakilder som [[tingenes internett]] (IoT) ikke fungerer korrekt med eldre verktøy) og [[Samsvar og etterlevelse|samsvarsbegrensninger]] på grunn av forskjeller i [[datastyring]]-, preparering- og revisjonspraksis.<ref>{{Kilde www|url=https://blog.coupler.io/what-is-data-transformation/|tittel=Your Practical Guide to Data Transformation|besøksdato=2022-07-08|fornavn=Pablo|etternavn=Sergio}}</ref> === Interaktiv datatransformasjon === Interaktiv datatransformasjon (IDT)<ref>Tope Omitola, Andr´e Freitas, Edward Curry, Sean O’Riain, Nicholas Gibbins, and Nigel Shadbolt. Capturing Interactive Data Transformation Operations using Provenance Workflows Retrieved from: http://andrefreitas.org/papers/preprint_capturing%20interactive_data_transformation_eswc_highlights.pdf</ref> er en type datatransformasjon som gir et grafisk grensesnitt for datatransformasjoner,<ref name="digital.lib.washington.edu">Morton, Kristi -- Interactive Data Integration and Entity Resolution for Exploratory Visual Data Analytics. Retrieved from: https://digital.lib.washington.edu/researchworks/handle/1773/35165</ref> og dermed kan legge til rette for transformasjoner av analytikere og forretningsbrukere med begrenset teknisk kompetanse. Verktøyet kan tolke egenskapene til dataene (via automatisert dataprofilering eller visualisering), og brukes for å endre eller korrigere dataene gjennom enkle brukerinteraksjoner som ved å klikke eller velge bestemte elementer i dataene.<ref name="livinglab.mit.edu"/> Selv om interaktiv datatransformasjon følger de samme integrasjonsstegene som satsvis integrasjon er det en hovedforskjell i at stegene ikke nødvendigvis følges på en lineær måte og vanligvis ikke krever betydelige tekniske ferdigheter for å utføres.<ref>Peng Cong, Zhang Xiaoyi. Research and Design of Interactive Data Transformation and Migration System for Heterogeneous Data Sources. Retrieved from: https://ieeexplore.ieee.org/document/5211525/</ref> Det finnes en rekke selskaper som tilbyr interaktive verktøy for datatransformasjon, eksempelvis oppstartsselskaper som Trifacta, Alteryx og Paxata. De tar sikte på å gi effektiv analyse, avbildning og transformasjon av store datamengder samtidig som de abstraherer bort noe av den tekniske kompleksiteten og prosessene som foregår under panseret. Løsninger for interaktiv datatransformasjon tilbyr et integrert visuelt grensesnitt som kombinerer eller gjør det lettere å hoppe mellom de tidligere adskilte stegene i dataanalyse, dataavbildning og kodegenerering/-kjøring og datainspeksjon.<ref name="The Value of Data Transformation">The Value of Data Transformation</ref> Altså, hvis det gjøres endringer på ett steg (som for eksempel endring av navn på en variabel) vil programmet automatisk oppdatere de andre foregående og påfølgende stegene tilsvarende. Grensesnitt for interaktiv datatransformasjon inkluderer visualisering for å vise brukeren mønstre og avvik i dataene slik at de visuelt kan identifisere [[Anomali|feilaktige]] eller [[Ekstremverdi|ekstreme verdier]].<ref name="digital.lib.washington.edu"/> Når brukeren er ferdig med å transformere dataene kan systemet generere kjørbar kode eller logikk som gjenbrukes på lignende datamengder. Ved å fjerne utvikleren fra prosessen kan interaktiv transformasjon bidra til å forkorte tiden som trengs på forberedelse og transformasjon av dataene, eliminere kostbare feil i tolkning av brukerkrav og gi forretningsbrukere og analytikere muligheten til å kontrollere dataene sine og samhandle med dem etter behov.<ref name="ReferenceA">McKinsey.com. Using Agile to Accelerate Data Transformation</ref> == Transformasjonsspråk == Det finnes mange programmeringsspråk som er egnet for å utføre datatransformasjoner.<ref>DMOZ. Extraction and Transformation. Retrieved from: https://dmoztools.net/Computers/Software/Databases/Data_Warehousing/Extraction_and_Transformation/ {{Wayback|url=https://dmoztools.net/Computers/Software/Databases/Data_Warehousing/Extraction_and_Transformation/ |date=20170829041136 }}</ref> Mange [[Transformasjon språk|transformasjonsspråk]] krever en formell [[grammatikk]]. I mange tilfeller er grammatikken strukturert etter et mønster som ligner [[Backus-Naur form|Backus-Naur-formen]] (BNF). Noen eksempler på transformasjonsspråk inkluderer: * [[Awk]], et av de eldste og mest populære tekstdatatransformasjonsspråkene * [[Perl]], et språk på høyt nivå med både prosedyre- og objektorientert syntaks som er i stand til kraftfulle operasjoner på binære eller tekstdata * [[Malsystem for internett|Malsystem-språk]], spesialisert for å transformere data til dokumenter (se også [[Template processor|malprosessor]]) * [[TXL (programmeringsspråk)|TXL]], språkbaserte beskrivelser for prototyping, brukt til kildekode eller datatransformasjoner * [[XSLT]], standardspråket for XML-transformasjoner (egnet med [[XQuery]] i mange applikasjoner) I tillegg har selskaper som Trifacta og Paxata utviklet domenespesifikke transformasjonsspråk (DSL-er) for vedlikehold og transformering av datamengder. Utviklingen av domenespesifikke språk har vært knyttet til økt produktivitet og tilgjengelighet for ikke-tekniske brukere.<ref>{{Kilde www|url=https://docs.trifacta.com/display/PE/Wrangle+Language|tittel=Wrangle Language - Trifacta Wrangler - Trifacta Documentation|besøksdato=2017-09-20|arkiv-dato=2017-09-21|arkiv-url=https://web.archive.org/web/20170921045735/https://docs.trifacta.com/display/PE/Wrangle+Language|url-status=yes}}</ref> Trifacta sin "Wrangle" er et eksempel på et slikt domenespesifikt språk.<ref name=":0">{{Kilde www|url=https://conferences.oreilly.com/strata/stratany2014/public/schedule/detail/36612|tittel=Advantages of a Domain-Specific Language Approach to Data Transformation - Strata + Hadoop World in New York 2014|besøksdato=2017-09-20|fornavn=Joe Hellerstein, Sean|etternavn=Kandel}}</ref> En annen fordel med trenden av domenespesifikke transformasjonsspråk er at de kan abstrahere den underliggende utførelsen av logikken som er definert av det domenespesifikke transformasjonsspråket. De kan også bruke den samme logikken med forskjellige prosesseringsmotorer som for eksempel [[SPARK (programmeringsspråk)|SPARK]], [[MapReduce]] og [[Microsoft Dataflow|Dataflow]]. Altså, med domenespesifikke transformasjonsspråk er ikke transformasjonsspråket knyttet til den underliggende motoren.<ref name=":0"/> Selv om transformasjonsspråk vanligvis er best egnet for transformasjon så kan noe så enkelt som vanlige [[Regulært uttrykk|regulære uttrykk]] brukes for å oppnå en nyttig transformasjon. [[Teksteditor|Tekstredigeringsprogrammer]] som [[vim]], [[emacs]] eller TextPad støtter bruk av regulære uttrykk med argumenter. Dette vil tillate at alle forekomster av et bestemt mønster erstattes med et annet mønster ved bruk av deler av det originale mønsteret. Eksempelvis kan uttrykkene: <pre> foo ("some string", 42, gCommon); bar (someObj, anotherObj); foo ("another string", 24, gCommon); bar (myObj, myOtherObj); </pre> Gjøres om til en mer kompakt form som: foobar("some string", 42, someObj, anotherObj); foobar("another string", 24, myObj, myOtherObj); Med andre ord vil alle forekomster av et funksjonskall av foo med tre argumenter etterfulgt av et funksjonskall med to argumenter bli erstattet med et enkelt funksjonskall ved hjelp av noen eller alle de opprinnelige argumentene. En annen fordel med å bruke regulære uttrykk er at de ikke vil feile "nulltransformasjonstesten". Testen vil si at man bruker et valgt transformasjonsspråk og kjører et prøveprogram gjennom en transformasjon som ikke utfører noen transformasjoner. Mange transformasjonsspråk vil feile denne testen. == Se også == * [[Dataavbildning]] * [[Dataavstemming]] * [[Dataintegrasjon]] * [[Datapreparering]] * [[Datavask]] * [[Informasjonsintegrasjon]] * [[Uttrekk, transformasjon og lasting]] (ETL) == Referanser == <references/> == Eksterne lenker == * [[wikiversity:Digital_Libraries/File_formats,_transformation,_migration|File Formats, Transformation, and Migration]], en relatert Wikiversity-artikkel {{Data}} {{Datavarehus}} {{Autoritetsdata}} [[Kategori:Datavarehusmetodikk]] [[Kategori:Dataadministrasjon]] [[Kategori:Metadata]]
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Maler som brukes på denne siden:
Mal:Autoritetsdata
(
vis kilde
) (beskyttet)
Mal:Data
(
rediger
)
Mal:Datavarehus
(
rediger
)
Mal:Hlist/styles.css
(
rediger
)
Mal:ISOtilNorskdato
(
rediger
)
Mal:Kilde avis
(
rediger
)
Mal:Kilde www
(
rediger
)
Mal:Navboks
(
rediger
)
Mal:Navbox
(
rediger
)
Mal:Wayback
(
rediger
)
Modul:Arguments
(
rediger
)
Modul:Citation/CS1
(
rediger
)
Modul:Citation/CS1/COinS
(
rediger
)
Modul:Citation/CS1/Configuration
(
rediger
)
Modul:Citation/CS1/Date validation
(
rediger
)
Modul:Citation/CS1/Identifiers
(
rediger
)
Modul:Citation/CS1/Utilities
(
rediger
)
Modul:Citation/CS1/Whitelist
(
rediger
)
Modul:External links
(
rediger
)
Modul:External links/conf
(
rediger
)
Modul:External links/conf/Autoritetsdata
(
rediger
)
Modul:Genitiv
(
rediger
)
Modul:ISOtilNorskdato
(
rediger
)
Modul:Navbar
(
rediger
)
Modul:Navbar/configuration
(
rediger
)
Modul:Navbar/styles.css
(
rediger
)
Modul:Navboks
(
rediger
)
Modul:Navbox
(
rediger
)
Modul:Navbox/configuration
(
rediger
)
Modul:Navbox/styles.css
(
rediger
)
Modul:TableTools
(
rediger
)
Modul:Wayback
(
rediger
)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Side
Diskusjon
norsk bokmål
Visninger
Les
Rediger
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon