From a more technical perspective, a profile is predefined set of named keys to which devices will eventually store matching data against each of these keys. Each element within the profile has a datatype definition. Some can contain limits to check if data to be added against this profile element is valid or not. Each key can also contain an “extra” attribute for the value to be inserted, typically to represent the unit of the value.
When a user adds the value for the key, a timestamp of the insertion time will be added together with the value automatically into system. Values for each key can only be one value for any given key; meaning the new value for this key from this user will overwrite the old value. If the profile element is defined as incremental, each key can contain multiple entries for this user and old values will remain for upcoming profiling purposes. Typically this incremental type of profile element is used when the profile is expected to gather all the events of a specified type, such as “User has finalised the payment on our online store”. Using these incremental profile elements enables the functionality to define more detailed target groups as an audience, while defining rules for the Beems and/or requesting analytics of a system.
Entries of the profile elements can be added from the host application, also by providing suitable fields for the user to add values for each defined profile element.
The profiles and the containers can be created and stored using Dashboard. An administrator inputs the required contents and data types in the user interface. The host application can access and update those profiles, providing the user with the necessary UI elements to fill their profile data.
Supported datatypes for profile elements
- Boolean (true/false)
- Numeric range (from-to validity for upcoming values)
- Timestamp range (from-to validity for upcoming values)
- Option list (single- or multiselect)
- Do you have a pet?
- What is your favourite movie?
- How old are you?
- Have a guess; which day of the upcoming christmas will be the most profitable?
- Did you buy a pizza?
Do you have a pet?
User has a pet or not. This is a boolean value (true/false) which will be set as true or false by an user.
What is your favourite movie?
Favourite movie of the user is text because you never can generate list of all available options of the movies available. Type for this key is text, where the user can enter the name of his/her favourite movie.
What is the age of the user?
Age is numeric representation (Number) of a user’s age which will be defined as “Number”. The “extra” field for this profile element could be defined as “years”, expecting that age is always defined as years.
Which day of the upcoming christmas will be the most profitable?
Best representation of the date is timestamp. To be more precise with this upcoming christmas the valid timestamp range should be defined by using the type for this key as TimestampRange with proper from and to values. “From” value could be defined as 2014-12-15 and “to” value of this could be set to 2014-12-26. When user is adding value for this profile element it will only allow values between the given timestamp range. Any other given value will be invalid and cannot be set.
Did you buy a pizza?
When something has occured – in this case a pizza has been bought by the user – the host application will send the message to Beemray SDK’s profiling for this. It is just a Boolean element on this profile because the question was all about when a pizza was bought. Occurence of each entry on profile will always contain also the timestamp which in this case enables analytics to combine query against the profile data about the pizza payments over time.