Our Semantic Layer has been completely reimagined to align with our vision of delivering powerful, flexible product analytics.
asemic’s hybrid approach blends User Events with an integrated data model to create a User-Action Entity Model, focused around the concept of tracking User states over time. This ensures you have a clear, organized, and scalable framework for extracting the insights that matter most.
Event-only models fall short when dealing with complex, behavior-driven data. Here’s how our hybrid solution addresses their limitations:
Traditional models fall short when dealing with complex, behavior-driven data.
As event volume grows, processing becomes cumbersome and unmanageable.
"No need for SQL", but you will actually write SQL with visual elements to get what you need
They’re constrained by predefined concepts, limiting flexibility when new business questions arise.
Our hybrid Semantic Layer is tailor-made for Product Analytics
Model generates automatically based on metric definitions, enables deep analysis.
Define once, use everywhere.
Same process builds the model and expands it as needed.
Our Semantic Layer consists of three distinct layers, each designed to simplify the complexities of behavior-driven data.
Defines available User Actions. These actions can be events or event-like tables.
It's like a table definition, with added semantic tags.
table_name: gendemo.ua_login
tags: [registration_event, activity_event]
columns:
user_id:
data_type: INTEGER
tags: [entity_id_column]
time:
data_type: DATETIME
tags: [event_timestamp_column]
session_id: {data_type: STRING}
platform: {data_type: STRING}
application_version: {data_type: INTEGER}
build_version: {data_type: STRING}
country: {data_type: STRING}
manufacturer: {data_type: STRING}
model: {data_type: STRING}
os_version: {data_type: STRING}
date:
data_type: DATE
tags: [date_column]
enrichments: []
Aggregates actions on a per User per day basis. These properties serve as the building blocks for defining KPIs and for easily defining segments.
properties:
dau_active:
data_type: INTEGER
can_filter: false
can_group_by: false
event_property: {
source_event: entity_activity, # this is everything tagged as activity
select: 1,
aggregate_function: none, default_value: 0}
payment_segment:
data_type: STRING
can_filter: true
can_group_by: true
computed_property:
select: '{revenue_lifetime}'
value_mappings:
- range: {to: 0}
new_value: Non Payer
- range: {from: 0, to: 20}
new_value: Minnow
- range: {from: 20, to: 100}
new_value: Dolphin
- range: {from: 100}
new_value: Whale
Constructs KPIs with awareness of axes and supports different functions for calculating rollups or totals along various dimensions.
kpis:
mdau:
label: mDAU
select: '{kpi.dau}'
where: '{property.payers_lifetime} > 0'
x_axis:
date: {total_function: avg} # use average when aggregating over days
cohort_day: {} # show it as a cohort metric
arpdau:
label: ARPDAU
select: SAFE_DIVIDE({kpi.revenue}, {kpi.dau})
unit: {symbol: $, is_prefix: true}
Asemic automatically generates and maintains your data model using the definitions in the User Properties Layer and semantic tags in the User Actions Layer.
Our proprietary Query Engine (QE) dynamically selects the optimal tables, ensuring peak performance. The resulting User Entity model behaves like a wide table, containing data for each user on each day—but it’s not physically stored in this format.
Integrating Asemic is straightforward, requiring just a few prerequisites.
A SQL data warehouse containing user events, whether stored in multiple tables or one consolidated table.
Events have a unique user ID, timestamp and date.
Ability to setup a dataset for Asemic model with permission to write there and read events.
If these conditions are met, connecting Asemic and setting up the Semantic Layer takes less than a day.