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!
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!
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.
Vous pourriez écrire un UDF qui dépouille les guillemets autour de lui ou utiliser l'approche de JacobM.
Cependant, après, vous devez convertir chararray '3'
en int
: (int)$1
ou (int)myvalue
. De cette façon, vous pouvez utiliser sum
.
http://pig.apache.org/docs/r0.5.0/piglatin_reference.html#Cast+Operators
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.
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
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
ne sais pas ce que tu veux dire ?! – Christoph
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". –