• Index
  •  » Talend Open Studio for Data Integration » Installation
  •  » syntax error

#1 2007-07-18 13:53:36

MatMAt
New member
Registered: 2007-07-06
Posts: 9

syntax error

Tags: [perl, routine, tmap]

Hi,

I import a datafile in a PostgreSql database. I use a Tmap and i need change a value like this  :
$Var[Var__Code_Deficience] = if ($row1[Libelle_Or_Deficience] = "INCONNUE")     { Code_Deficience = 0}
else if ($row1[Libelle_Or_Deficience] = "ACCIDENT DU TRAVAIL (TRAJET)")     { Code_Deficience =1}
else if ($row1[Libelle_Or_Deficience] = "ACCIDENT DU TRAVAIL (LIEU D'EMPLOI)")     { Code_Deficience = 2}
else if ($row1[Libelle_Or_Deficience] = "MALADIE PROFESSIONNELLE")     { Code_Deficience = 3}
else if ($row1[Libelle_Or_Deficience] = "ACCIDENT SUR LA VOIE PUBLIQUE")     { Code_Deficience = 4}
else if ($row1[Libelle_Or_Deficience] = "HANDICAP DE NAISSANCE")     { Code_Deficience = 5}
else if ($row1[Libelle_Or_Deficience] = "AUTRES ACCIDENTS")     { Code_Deficience = 6}
else if ($row1[Libelle_Or_Deficience] = "AUTRES MALADIES")     { Code_Deficience = 7}
When I run my job I have a syntax error at the first 'if'.

Thank you in advance

Offline

#2 2007-07-19 11:02:37

plegall
Member
Registered: 2006-09-19
Posts: 1586
Website

Re: syntax error

MatMAt wrote:

Hi,

I import a datafile in a PostgreSql database. I use a Tmap and i need change a value like this  :
$Var[Var__Code_Deficience] = if ($row1[Libelle_Or_Deficience] = "INCONNUE")     { Code_Deficience = 0}
else if ($row1[Libelle_Or_Deficience] = "ACCIDENT DU TRAVAIL (TRAJET)")     { Code_Deficience =1}
else if ($row1[Libelle_Or_Deficience] = "ACCIDENT DU TRAVAIL (LIEU D'EMPLOI)")     { Code_Deficience = 2}
else if ($row1[Libelle_Or_Deficience] = "MALADIE PROFESSIONNELLE")     { Code_Deficience = 3}
else if ($row1[Libelle_Or_Deficience] = "ACCIDENT SUR LA VOIE PUBLIQUE")     { Code_Deficience = 4}
else if ($row1[Libelle_Or_Deficience] = "HANDICAP DE NAISSANCE")     { Code_Deficience = 5}
else if ($row1[Libelle_Or_Deficience] = "AUTRES ACCIDENTS")     { Code_Deficience = 6}
else if ($row1[Libelle_Or_Deficience] = "AUTRES MALADIES")     { Code_Deficience = 7}
When I run my job I have a syntax error at the first 'if'.

Thank you in advance

In the "expression" of the variable "Code_Deficience", have the following code (use the expression editor in the bottom)

Code:

$row1[Libelle_Or_Deficience] eq "INCONNUE"
  ? 0
  : $row1[Libelle_Or_Deficience] eq "ACCIDENT DU TRAVAIL (TRAJET)"
    ? 1
    : $row1[Libelle_Or_Deficience] eq "ACCIDENT DU TRAVAIL (LIEU D'EMPLOI)"
      ? 2
      : $row1[Libelle_Or_Deficience] eq "MALADIE PROFESSIONNELLE"
        ? 3
        : $row1[Libelle_Or_Deficience] eq "ACCIDENT SUR LA VOIE PUBLIQUE"
          ? 4
          : $row1[Libelle_Or_Deficience] eq  "HANDICAP DE NAISSANCE"
            ? 5
            : $row1[Libelle_Or_Deficience] eq "AUTRES ACCIDENTS"
              ? 6
              :  $row1[Libelle_Or_Deficience] eq "AUTRES MALADIES"
                ? 7
                : -1

Or else another solution, that I personnaly like better, is to use a routine with a mapping, for this very "mapping-like" expression. In a routine file have the following content:

Code:

use Exporter;

use vars qw(@EXPORT @ISA);

@ISA = qw(Exporter);
@EXPORT = qw(
    getCodeDeficienceFromLabel
);

our %code_deficience_of = (
    "INCONNUE" => 0,
    "ACCIDENT DU TRAVAIL (TRAJET)" => 1,
    "ACCIDENT DU TRAVAIL (LIEU D'EMPLOI)" => 2,
    "MALADIE PROFESSIONNELLE" => 3,
    "ACCIDENT SUR LA VOIE PUBLIQUE" => 4,
    "HANDICAP DE NAISSANCE" => 5,
    "AUTRES ACCIDENTS" => 6,
    "AUTRES MALADIES" => 7,
);

sub getCodeDeficienceFromLabel {
    my ($label) = @_;
    
    return $code_deficience_of{$label};
}

1;

The output of my job is:

Code:

Starting job topic1086 at 10:57 19/07/2007.
.------------------------------------------------------.
|                       tLogRow_2                      |
+----+-------------------------------+-----------------+
| id | label_deficience              | code_deficience |
+----+-------------------------------+-----------------+
|  1 | AUTRES MALADIES               |               7 |
|  2 | INCONNUE                      |               0 |
|  3 | HANDICAP DE NAISSANCE         |               5 |
|  4 | MALADIE PROFESSIONNELLE       |               3 |
|  5 | AUTRES ACCIDENTS              |               6 |
|  6 | ACCIDENT SUR LA VOIE PUBLIQUE |               4 |
|  7 | AUTRES ACCIDENTS              |               6 |
|  8 | INCONNUE                      |               0 |
|  9 | INCONNUE                      |               0 |
| 10 | INCONNUE                      |               0 |
'----+-------------------------------+-----------------'
Job topic1086 ended at 10:57 19/07/2007. [exit code=0]

Uploaded Images

Offline

#3 2007-07-20 09:35:46

MatMAt
New member
Registered: 2007-07-06
Posts: 9

Re: syntax error

Thank you very much it's working well...

Offline

  • Index
  •  » Talend Open Studio for Data Integration » Installation
  •  » syntax error

Board footer

Powered by FluxBB