marketing-analytics/predicting/ml-data-windowing-pipeline/model/Fact.java (70 lines of code) (raw):

// Copyright 2019 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package com.google.corp.gtech.ads.datacatalyst.components.mldatawindowingpipeline.model; import org.apache.avro.reflect.Nullable; import org.apache.beam.sdk.coders.AvroCoder; import org.apache.beam.sdk.coders.DefaultCoder; import org.joda.time.Instant; /** * A Fact records a variable name, value and fact timestamp for a userId. A Fact can represent * a Google Analytics data point (e.g. user device, geolocation, page hit etc), or CRM data from * another source. All Facts belong to a user Session. If the Fact is the fact being predicted * (e.g. account signup, purchase, account churn etc), then hasPositiveLabel is set to true. */ @DefaultCoder(AvroCoder.class) public class Fact { // Unique ID of the Session this Fact belongs to. private String sessionId; // Unique ID of the User. private String userId; // Time this fact occurred. private Instant time; // Name of the variable. private String name; // Value of the variable. private String value; // True if this fact represents the fact that is being predicted. @Nullable private Boolean hasPositiveLabel; public Fact() { this(null, null, null, null, null, null); } public Fact(String sessionId, String userId, Instant time, String name, String value) { this(sessionId, userId, time, name, value, null /* hasPositiveLabel */); } public Fact( String sessionId, String userId, Instant time, String name, String value, Boolean hasPositiveLabel) { this.sessionId = sessionId; this.userId = userId; this.time = time; this.name = name; this.value = value; this.hasPositiveLabel = hasPositiveLabel; } public String getSessionId() { return sessionId; } public String getUserId() { return userId; } public Instant getTime() { return time; } public String getName() { return name; } public String getValue() { return value; } public Boolean getHasPositiveLabel() { return hasPositiveLabel; } public void setSessionId(String sessionId) { this.sessionId = sessionId; } public void setUserId(String userId) { this.userId = userId; } public void setTime(Instant time) { this.time = time; } public void setName(String name) { this.name = name; } public void setValue(String value) { this.value = value; } public void setHasPositiveLabel(Boolean hasPositiveLabel) { this.hasPositiveLabel = hasPositiveLabel; } }