Hello!
I´m trying to do a mapping transform so when my cell value "0" it appears empty instead.
The orinal data comes from a Named Query.
But I getting this error when I do the mapping

I´m not sure this is the way to do things or would be better to apply a Transform Script.
Cheers.
Map tranforms can only transform a single value - not a list or table of values.
That means that it can only be used for a named query giving a scalor return value (just a single number, string or date).
You have three options (at least):
- Modify your SQL to return the string. (Not the best idea.)
- Use a script transform.
- Create a lookup table with id and string columns and return those with a JOIN statement on the original named query.
2 Likes
def transform(self, value, quality, timestamp):
value_mapping = {
1: "Adecuado",
2: "Trivial",
3: "Tolerable",
4: "Moderado",
5: "Importante",
6: "Intolerable"
}
def transform_dataset(dataset):
py_data = system.dataset.toPyDataSet(dataset)
new_data = []
for row in py_data:
new_row = []
for value in row:
if isinstance(value, (int, float)) and value in value_mapping:
new_row.append(value_mapping[value])
else:
new_row.append(value)
new_data.append(new_row)
headers = list(py_data.getColumnNames())
return system.dataset.toDataSet(headers, new_data)
transformed_data = transform_dataset(value)
return transformed_data
You could simplify that a bit if the query returns JSON.
def transform(self, value, quality, timestamp):
statusCodes = {
1: "Adecuado",
2: "Trivial",
3: "Tolerable",
4: "Moderado",
5: "Importante",
6: "Intolerable"
}
output = []
for row in value:
if row['HAZARDVALUE'] in statusCodes:
status = row['HAZARDVALUE']
else:
status = '????'
output.append({
"HAZARDVALUE": row['HAZARDVALUE'],
"status" : status,
"HAZARD" : row['HAZARD']
})
return output
1 Like
Thanks Transistor!
the code I posted was for another table and named query, for the one in the image I´m using
def transform(self, value, quality, timestamp):
new_headers = [
u"Equipos de PCI",
u"Instalacion electrica",
u"Señalización PCI",
u"Iluminación emergencia",
u"Salidas y vías evac.",
u"Señalización evacuación y",
u"Señalización riesgo elect.",
u"Caída de personas mismo nivel",
u"Escalas fijas",
u"Escaleras portátiles de mano",
u"Iluminación PVD",
u"Iluminación resto (no emerg.)",
u"Climatiz. (Temp.)",
u"Climatiz. (Hr)",
u"Climatiz. (CO2)",
u"Caída de objetos desprendidos",
u"Atropellos",
u"Tránsito por cubierta",
u"Otros riesgos detallar)"
]
def transform_dataset(dataset):
py_data = system.dataset.toPyDataSet(dataset)
new_data = []
for row in py_data:
new_row = list(row)
new_data.append(new_row)
original_headers = list(py_data.getColumnNames())
modified_headers = original_headers[:2] + new_headers[:len(original_headers)-2]
return system.dataset.toDataSet(modified_headers, new_data)
transformed_data = transform_dataset(value)
return transformed_data