A semantic layer coupled with a human-centered interface.

A New Paradigm in Product Analytics Modeling

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.

Why a Hybrid Approach?

Event-only models fall short when dealing with complex, behavior-driven data. Here’s how our hybrid solution addresses their limitations:

Traditional models

Traditional models fall short when dealing with complex, behavior-driven data.

  • Event-Only Models

    As event volume grows, processing becomes cumbersome and unmanageable.

  • Visual SQL

    "No need for SQL", but you will actually write SQL with visual elements to get what you need

  • Star Schema Models

    They’re constrained by predefined concepts, limiting flexibility when new business questions arise.

Hybrid Semantic Layer

Our hybrid Semantic Layer is tailor-made for Product Analytics

  • Data model generation and maintenance

    Model generates automatically based on metric definitions, enables deep analysis.

  • KPI and dimension definition

    Define once, use everywhere.

  • Handling ad-hoc analysis requests

    Same process builds the model and expands it as needed.

Semantic Layer Structure

Our Semantic Layer consists of three distinct layers, each designed to simplify the complexities of behavior-driven data.

User Actions Layer

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: []

User Properties Layer

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

KPI Layer

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}

Data model auto-generation and Maintenance

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.

Seamless Integration with Your Data Warehouse

Integrating Asemic is straightforward, requiring just a few prerequisites.

1

A SQL data warehouse containing user events, whether stored in multiple tables or one consolidated table.

2

Events have a unique user ID, timestamp and date.

3

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.

Let's put these days behind us.

Unlock your data with Asemic.

Subscribe to follow new feature updates?

We've got you! Thanks for joining us.
Oops! Something went wrong while submitting the form.