Getting started on Snowplow Open Source

  1. Home
  2. Docs
  3. Getting started on Snowplow Open Source
  4. Setup Snowplow Open Source on GCP
  5. Setup Validation and Enrich (GCP)
  6. Add additional enrichments
  7. YAUAA enrichment

YAUAA enrichment

Compatibility

JSON schema for config: iglu:com.snowplowanalytics.snowplow.enrichments/yauaa_enrichment_config/jsonschema/1-0-0
Compatibility: R114+
Data provider: yauaa.basjes.nl

Overview

This enrichment uses YAUAA API to parse and analyze the user agent string of an event and extract as many relevant attributes as possible, like for example the device class (Phone, Tablet, etc.).

Example

Only one parameter can be set in the configuration : cacheSize. This field determines the number of already parsed user agents that are kept in memory for faster processing.
If set to 0, caching is disabled.
If not set, a default size is used for the cache (10000).

An example of configuration can be found here.

Data sources

The only input needed for this enrichment is the user agent string of the input event.

Algorithm

YAUAA parsing relies heavily on HashMaps to quickly find the rules that need to be fired. There is no interaction with an external system, all the data required for this enrichment is contained in-memory.

Data generated

The context generated by this enrichment conforms to iglu:nl.basjes/yauaa_context/jsonschema/1-0-0.

The only field that will always be present is deviceClass.

If a field can’t be figured out by the algorithm, it won’t be in the output. But some fields can have value UNKNOWN.

More information about the output values can be found here.

Here is an example of derived context attached to an enriched event by this enrichment for a page visited with a Samsung Galaxy S9:

{
    "schema":"iglu:com.snowplowanalytics.snowplow/yauaa_context/jsonschema/1-0-0",
    "data": {
        "deviceClass":"Phone",
        "deviceName":"Samsung SM-G960F",
        "deviceBrand":"Samsung",
        "operatingSystemClass":"Mobile",
        "operatingSystemName":"Android",
        "operatingSystemVersion":"8.0.0",
        "operatingSystemNameVersion":"Android 8.0.0",
        "operatingSystemVersionBuild":"R16NW",
        "layoutEngineClass":"Browser",
        "layoutEngineName":"Blink",
        "layoutEngineVersion":"62.0",
        "layoutEngineVersionMajor":"62",
        "layoutEngineNameVersion":"Blink 62.0",
        "layoutEngineNameVersionMajor":"Blink 62",
        "agentClass":"Browser",
        "agentName":"Chrome",
        "agentVersion":"62.0.3202.84",
        "agentVersionMajor":"62",
        "agentNameVersion":"Chrome 62.0.3202.84",
        "agentNameVersionMajor":"Chrome 62"
   }
}