#Techtips: Tekst als Data in Alteryx – REGEX
Wekelijks delen wij tips die jou helpen om het gebruik van Tableau, Alteryx, Snowflake, Matillion en DataRobot nog makkelijker te maken. Deze tips zijn afkomstig van onze gecertificeerde consultants die dagelijks met deze tools werken. Heb jij een handige tip voor iedereen? Laat het ons van vooral weten.
Deze week is het de beurt aan onze collega Hannah: Je ziet het overal gebeuren; het gebruik van online vragenlijsten voor het verzamelen van data. Maar hoe laat je de computer een distinctie maken tussen een komma in tekst en een komma als separator van datavelden?
Het verzamelen van data over een groep personen
Je ziet het overal gebeuren: het gebruik van online vragenlijsten voor het verzamelen van data over een groep personen. Denk aan feedback formulieren na een geleverde service, een “Google Forms” of de Social Media quizzen zoals “Welke Disney prinses ben jij?”.
Wat het doel van de verzamelde data ook is, bij het verwerken kun je tegen het volgende probleem aanlopen:
Hoe laat je de computer een distinctie maken tussen een komma in tekst en een komma als separator van datavelden?
Bijvoorbeeld, je neemt een enquête af van 3 vragen. Een van de vragen die je stelt is:
Heb je ooit les gehad in statistiek?
De antwoorden waar het publiek uit kan kiezen zijn:
- Ja
- Ja, maar ik ben alles vergeten
- Nee
Na het afnemen van de enquête ontvang je een dataset in de vorm van een .csv (comma-separated values). We verwachten bij het inladen van de dataset in Alteryx het volgende resultaat:
Helaas geeft Alteryx een error:
Waarom “Too many fields in record #3” ? De reden is dat er op één regel meer scheidingstekens voorkomen (komma) dan in de overige regels.
Hoe los je deze error op?
Optie 1: Data aanpassen
De Input Data tool van Alteryx heeft de optie om delimiters te negeren wanneer ze zich tussen twee andere tekens bevinden. In ons voorbeeld is het verschil snel gemaakt:
Door dubbele (of enkele) quotes toe te voegen om het gedeelte wat je als één dataveld wil beschouwen, is de Input Data tool in staat het de data te lezen en in kolommen onder te verdelen.
Is deze optie goed toepasbaar voor grotere datasets van het voorbeeld? Nee. Je zult elke error moeten aanpakken door handmatige bewerkingen aan de data uit te voeren. Hoe kunnen we dit robuuster oplossen? Door gebruik te maken van “Regular Expressions” (REGEX).
Optie 2: REGEX
REGEX is een manier om patronen te beschrijven waardoor een computer softwarematig tekst kan herkennen en wordt daarom veel bij tekstverwerking gebruikt. Om onze enquête data uit het voorbeeld te kunnen verwerken zonder de data direct aan te passen is het volgende mogelijk:
Stap 1
Laad de data in via de Input Data tool zonder delimiter, d.w.z. in regel 5 van de configuratie, typ \0 (backslash nul).
Stap 2
Connect een RegEx tool, gebruik Output Method Tokenize en split naar 3 kolommen aangezien ons voorbeeld 3 vragen met bijbehorende antwoorden bevat.
De reguliere expressie die we gebruiken is \w+\,\s[\w\s]+|[\w\s]+
Wat beschrijft deze reguliere expressie? Er wordt een onderscheid gemaakt tussen de zin ‘Ja, maar ik ben alles vergeten’ en de andere mogelijke antwoorden. Hierbij gaat het er niet om uit hoeveel woorden elke reeks bestaat, maar om het soort karakters wat er in de reeks voorkomt.
Met deze instellingen is onze output van de RegEx tool als volgt:
Hiermee is het ons gelukt om de geleverde enquête data te verwerken tot een simpel dataframe, zonder de databron direct te hebben aangepast.
Tot slot
Let wel op, er zijn ongelofelijk veel combinaties in RegEx te maken die hetzelfde kunnen bereiken. Zoals met veel oplossingen geldt: houd het simpel en begrijpelijk.
Intrigeert het onderwerp je? Zie jij waarde in deze oplossing toepassen op jouw vraagstuk en wil je daar hulp bij? Neem dan contact op met salesdesk@infotopics.nl of bel 088-8225328.