Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

If the source contains different sized (in this case tab separeted entries) use line protocol handler to read the input and store each element in one tuple.

Code Block
languagepql
source := RETRIEVE({
              source='source',
              transport='File',
              protocol='Line',
              datahandler='Tuple',
              options=[
                ['filename', '${WORKSPACEPROJECT}/source.txt']
              ],
              schema = [['line','String']]                                                                                        
            }                    
          )      

After that splitt the input regarding some condition with the split operator, in this example if the line starts with I or starts with S:

Code Block
languagepql
#PARSER PQL
#ADDQUERY        
splitted = ROUTE({
                predicates = ['startsWith(line,"I")', 'startsWith(line,"S")']              
              },
              source
            )
i_pre_out = MAP({
                expressions = [['Split(line,"\t")','line']]              
              },
              0:splitted
            )
            
i_out = MAP({
            expressions = [
              ['line[0]','val1'],
              ['line[1]','val2'],
              ['line[2]','val3'],
              ['line[3]','val4'],
              ['line[4]','val5'],
              ['line[5]','val6'],
              ['line[6]','val7']
            ]          
          },
          i_pre_out
        )
      
s_pre_out = MAP({
                expressions = [['Split(line,"\t")','line']]              
              },
              1:splitted
            )
            
s_out = MAP({expressions = [
              ['line[0]','val1'],
              ['line[1]','val2'],
              ['line[2]','val3'],
              ['line[3]','val4'],
              ['toFloat(line[4])','val5'],
              ['line[5]','val6']
            ]          
          },
          s_pre_out
        )