diff --git a/src/main/java/eu/hbp/mip/utils/DataUtil.java b/src/main/java/eu/hbp/mip/utils/DataUtil.java
index 87ff932f885c5fde24d7b40773b44f16130f1602..4ce7416bcff58acd7a71e631db0a76e6465489ff 100644
--- a/src/main/java/eu/hbp/mip/utils/DataUtil.java
+++ b/src/main/java/eu/hbp/mip/utils/DataUtil.java
@@ -33,25 +33,41 @@ public class DataUtil {
         for (String var : vars) {
             JsonArray currentVarData = new JsonArray();
 
-            int nbRows = (int) countDatasetRows();
-            if (nbRows < 1) { return data; }
-
-            int nb_samples = Math.min(nbRows, MAX_NB_SAMPLES);
-            int samplingPercentage = 100 * nb_samples / nbRows;
-            List<Object> queryResult = jdbcTemplate.queryForList(
-                    "SELECT " + var + " FROM "+featuresMainTable+" " +
-                            "TABLESAMPLE SYSTEM ("+ samplingPercentage +") REPEATABLE ( "+ TABLESAMPLE_SEED +" )", Object.class);
-            for (Object value : queryResult)
-            {
-                String strValue = String.valueOf(value);
-                try {
-                    double numValue = Double.parseDouble(strValue);
-                    currentVarData.add(numValue);
-                } catch (NumberFormatException e2) {
-                    currentVarData.add(strValue);
+            long nbRows = countDatasetRows();
+
+            if (nbRows >= 1) {
+
+                long nb_samples = Math.min(nbRows, MAX_NB_SAMPLES);
+                int samplingPercentage = (int) (100 * nb_samples / nbRows);
+                List<Object> queryResult = jdbcTemplate.queryForList(
+                        String.format("SELECT %s FROM %s TABLESAMPLE SYSTEM (%d) REPEATABLE (%d)",
+                                var, featuresMainTable, samplingPercentage, TABLESAMPLE_SEED),
+                        Object.class);
+                for (Object value : queryResult) {
+                    if (value == null) {
+                        currentVarData.add((String) null);
+                    } else {
+                        if (value instanceof Double) {
+                            currentVarData.add((Double) value);
+                        } else if (value instanceof Float) {
+                            currentVarData.add((Float) value);
+                        } else if (value instanceof Integer) {
+                            currentVarData.add((Integer) value);
+                        } else if (value instanceof Long) {
+                            currentVarData.add((Long) value);
+                        } else {
+                            String strValue = String.valueOf(value);
+                            try {
+                                double numValue = Double.parseDouble(strValue);
+                                currentVarData.add(numValue);
+                            } catch (NumberFormatException e2) {
+                                currentVarData.add(strValue);
+                            }
+                        }
+                    }
                 }
+                data.add(var, currentVarData);
             }
-            data.add(var, currentVarData);
         }
 
         return data;