diff --git a/api/src/engine/connectors/exareme/transformations.ts b/api/src/engine/connectors/exareme/transformations.ts
index 554bfda10c5e733cb7f533e1cda87ba461e605e8..7e9af19bbcb7bc2a7a00584954b92892c9c8873e 100644
--- a/api/src/engine/connectors/exareme/transformations.ts
+++ b/api/src/engine/connectors/exareme/transformations.ts
@@ -1,42 +1,45 @@
 // This file contains all transformation queries for JSONata
 // see : https://docs.jsonata.org/
 
-import * as jsonata from 'jsonata'; // old import style needed because of 'export = jsonata'
+import * as jsonata from 'jsonata'; // old import style needed due to 'export = jsonata'
 
 export const transientToTable = jsonata(`
 ( 
-  $e := function($x) {($x != null) ? $x : ''};
+    $e := function($x, $r) {($x != null) ? $x : ($r ? $r : '')};
 
-  $fn := function($o, $prefix) { 
-      $each($o, function($v, $k) {(
-          $name := $join([$prefix,$k], '/');
-          $type($v) = 'object' ? $fn($v, $name): {
-              $name: $v
-          }
-      )}) ~> $merge()
-  };
+    $fn := function($o, $prefix) {
+        $type($o) = 'object' ? 
+        $each($o, function($v, $k) {(
+            $type($v) = 'object' ? { $k: $v.count & ' (' & $v.percentage & '%)' } : {
+                $k: $v
+            }
+        )}) ~> $merge()
+        : {}
+    };
 
-  result.data.[
-      $.single.*@$p#$i.{
-          'groupBy' : 'single',
-          'name': $keys(%)[$i],
-          'metadatas': $append("", $keys(*)).{
-              'name': $,
-              'type': 'string'
-          },
-          'data' : [
-              [$keys(%)[$i], $p.*.($e(num_total))],
-              ['Datapoints', $p.*.($e(num_datapoints))],
-              ['Nulls', $p.*.($e(num_nulls))],
-              $p.*.data.($fn($)) ~> $reduce(function($a, $b) {
-                  $each($a, function($v, $k) {(
-                      {
-                          $k : [$v, $e($lookup($b,$k))]
-                      }
-                  )}) ~> $merge()
-              }) ~> $each(function($v, $k) {$append($k,$v)}) 
-          ]
-      }
-  ]
+    result.data.[
+        $.single.*@$p#$i.(
+            $ks := $keys($p.*.data[$type($) = 'object']);
+            {
+            'groupBy' : 'single',
+            'name': $keys(%)[$i],
+            'headers': $append("", $keys(*)).{
+                'name': $,
+                'type': 'string'
+            },
+            'data' : [
+                [$keys(%)[$i], $p.*.($e(num_total))],
+                ['Datapoints', $p.*.($e(num_datapoints))],
+                ['Nulls', $p.*.($e(num_nulls))],
+                $p.*.data.($fn($)) ~> $reduce(function($a, $b) {
+                    $map($ks, function($k) {(
+                        {
+                            $k : [$e($lookup($a,$k), "No data"), $e($lookup($b,$k), "No data")]
+                        }
+                    )}) ~> $merge()
+                }) ~> $each(function($v, $k) {$append($k,$v)})
+            ]
+        })
+    ]
 )
 `);
diff --git a/api/src/engine/models/experiment/experiment.model.ts b/api/src/engine/models/experiment/experiment.model.ts
index bf0881247afdf3b13f8e9e29e9a3653b1cb2d69d..4e7abaeb1ef440bd449b548069e2187a14057000 100644
--- a/api/src/engine/models/experiment/experiment.model.ts
+++ b/api/src/engine/models/experiment/experiment.model.ts
@@ -11,7 +11,7 @@ export const ResultUnion = createUnionType({
   name: 'ResultUnion',
   types: () => [TableResult, DummyResult],
   resolveType(value) {
-    if (value.metadatas) {
+    if (value.headers) {
       return TableResult;
     }
     if (value.listMax) {
diff --git a/api/src/engine/models/result/common/metadata.model.ts b/api/src/engine/models/result/common/header.model.ts
similarity index 83%
rename from api/src/engine/models/result/common/metadata.model.ts
rename to api/src/engine/models/result/common/header.model.ts
index 9cbeaf8b5967d42f6a01a8e4f5a55b262c305f4a..27844983c4724df06cd8d8d79caf83ae4e00a6de 100644
--- a/api/src/engine/models/result/common/metadata.model.ts
+++ b/api/src/engine/models/result/common/header.model.ts
@@ -1,7 +1,7 @@
 import { Field, ObjectType } from '@nestjs/graphql';
 
 @ObjectType()
-export class Metadata {
+export class Header {
   @Field()
   name: string;
 
diff --git a/api/src/engine/models/result/table-result.model.ts b/api/src/engine/models/result/table-result.model.ts
index 1ebb6a1726aa51c7eeb3e566fbbdc09170bed95b..002d59c5b15ce974e56bc9a9b0d9272212961c31 100644
--- a/api/src/engine/models/result/table-result.model.ts
+++ b/api/src/engine/models/result/table-result.model.ts
@@ -1,5 +1,5 @@
 import { Field, ObjectType } from '@nestjs/graphql';
-import { Metadata } from './common/metadata.model';
+import { Header } from './common/header.model';
 import { Result } from './common/result.model';
 
 @ObjectType()
@@ -10,6 +10,6 @@ export class TableResult extends Result {
   @Field(() => [[String]])
   data: string[][];
 
-  @Field(() => [Metadata])
-  metadatas: Metadata[];
+  @Field(() => [Header])
+  headers: Header[];
 }
diff --git a/api/src/schema.gql b/api/src/schema.gql
index a06bcf8e66d027c1c899668254b1459bc797c2ee..c2ebe062948d88d817911b41942288f96c926b25 100644
--- a/api/src/schema.gql
+++ b/api/src/schema.gql
@@ -34,7 +34,7 @@ type Domain {
   rootGroup: Group!
 }
 
-type Metadata {
+type Header {
   name: String!
   type: String!
 }
@@ -59,7 +59,7 @@ type TableResult {
   groupBy: String
   name: String!
   data: [[String!]!]!
-  metadatas: [Metadata!]!
+  headers: [Header!]!
 }
 
 type DummyResult {