in marketing-analytics/predicting/ml-data-windowing-pipeline/transform/MapGATableRowToSession.java [75:119]
public void addFactsToSession(
Session session, Instant time, String factNamePrefix, Object object) {
if (object instanceof TableRow) {
TableRow tablerow = (TableRow) object;
Instant childTime = time;
if (factNamePrefix.equals("hits")) {
childTime = childTime.plus(
Duration.millis(Long.parseLong(tablerow.get("time").toString()) / 1000));
DateTime dateTime = childTime.toDateTime();
addFactToSession(
"dayOfWeekOfHit", String.valueOf(dateTime.getDayOfWeek()), childTime, session);
addFactToSession("hourOfHit", String.valueOf(dateTime.getHourOfDay()), childTime, session);
}
if (factNamePrefix.contains(CUSTOM_DIMENSIONS)) {
addFactsToSession(
session,
childTime,
factNamePrefix + ".index." + tablerow.get(CUSTOM_DIMENSION_INDEX),
tablerow.get(CUSTOM_DIMENSION_VALUE));
return;
}
for (Map.Entry<String, Object> entry : tablerow.entrySet()) {
String childFactNamePrefix = factNamePrefix;
if (!factNamePrefix.isEmpty()) {
childFactNamePrefix += ".";
}
childFactNamePrefix += entry.getKey();
if (entry.getValue() instanceof List) {
for (Object childObject : (List) entry.getValue()) {
addFactsToSession(session, childTime, childFactNamePrefix, childObject);
}
} else {
addFactsToSession(session, childTime, childFactNamePrefix, entry.getValue());
}
}
} else {
String factValue = object.toString();
if (factNamePrefix.contains("Path")) {
factValue = normalizeURL(factValue);
}
addFactToSession(factNamePrefix, factValue, time, session);
}
}