2010-12-08 27 views
6

Je lis dans un fichier csv qui contient des champs avec des nombres comme ça: "3". Puis-je convertir ces champs de "3" à 3 avec PigLatin? J'en ai besoin pour utiliser la fonction SUM().Convertir "3" en 3 avec PigLatin

Merci pour votre aide!

+3

Areway ouyay utesay it'sway otnay "eethray"? (Je sais de quoi vous parlez réellement, je suis juste en train de déconner: P) – BoltClock

+0

ne sais pas ce que tu veux dire ?! – Christoph

+1

Je me demande si Pig Latin (le «langage», pas le sous-projet Hadoop) est principalement une chose américaine, ou principalement quelque chose que les anglophones connaissent? On dirait que Christoph est en Allemagne. Quoi qu'il en soit, Christoph, Pig Latin est une langue de jeu dans laquelle les mots anglais sont modifiés en déplaçant le son initial à la fin du mot et en ajoutant "ay". –

Répondre

6

La fonction TOKENIZE divise une chaîne sur divers caractères considérés comme des séparateurs de mots, dont l'un est un guillemet. Donc, si vous marquez "3" et prenez l'élément du milieu, il devrait être juste 3.

9

Qu'en est-il juste de retirer le " avec REPLACE?

Par exemple:

data = 
    LOAD 'data.txt' AS (num:CHARARRAY); 

numbers = 
    FOREACH data 
    GENERATE 
     (INT) REPLACE(num, '\\"', ''); 

Ensuite, vous pouvez GROUP et SUM. Un avantage est que vous pouvez convertir la chaîne renvoyée directement en un nombre (pas besoin de gérer les sacs). REGEX_EXTRACT pourrait être utilisé pour faire de même.

+0

Je devais faire un filtre où j'ai besoin de choisir toutes les valeurs qui étaient supérieures à 1, je l'ai fait: 'inputData = FILTER inputData BY (INT) REPLACE ((chararray) value # 'val', '\\ "', '')> 1;'. Ça vous va? – zengr