Semantic Layer

Every Enrerprise
Needs a Semantic Layer

Synmetrix's semantic layer acts as a user-friendly, API-first bridge between data sources and applications. It ensures data consistency, security, speed, and accessibility, empowering data professionals for seamless application integration.

What is a
Semantic Layer?

A mediator translating raw data for users, the Semantic Layer simplifies communication
between sources and applications.

The Problem
Data chaos due to scattered
models and decentralized control
The Solution
Centralize control with a semantic
layer
for trust and consistency
Key Benefits
Made for enterprises
Single sourse
of truth
On-premise Deployment
Improve data governance
Acceleration in BI Query Speed
Reduced Time to Insight
Reduction in Compute Consumption
Improved Resource Productivity
Usage Examples
cubes:
  - name: users
    sql_table: users
 
    measures:
      - name: count
        sql: id
        type: count
 
    dimensions:
      - name: city
        sql: city
        type: string
 
      - name: company_name
        sql: company_name
        type: string
    
cube(`users`, {
  sql_table: `users`,
 
  measures: {
    count: {
      sql: `id`,
      type: `count`,
    },
  },
 
  dimensions: {
    city: {
      sql: `city`,
      type: `string`,
    },
 
    company_name: {
      sql: `company_name`,
      type: `string`,
    },
  },
});
    
cubes:
  - name: users
    sql_table: users
 
    measures:
      - name: count
        sql: id
        type: count
 
    dimensions:
      - name: city
        sql: city
        type: string
 
      - name: company_name
        sql: company_name
        type: string
    
cube(`users`, {
  sql_table: `users`,
 
  measures: {
    count: {
      sql: `id`,
      type: `count`,
    },
  },
 
  dimensions: {
    city: {
      sql: `city`,
      type: `string`,
    },
 
    company_name: {
      sql: `company_name`,
      type: `string`,
    },
  },
});
    
cubes:
  - name: users
 
    measures:
      - name: count
        sql: id
        type: count
 
      - name: paying_count
        sql: id
        type: count
        filters:
          - sql: "{CUBE}.paying = 'true'"
 
      - name: paying_percentage
        sql: "100.0 * {paying_count} / {count}"
        type: number
        format: percent
 
    # ...
    
cube(`users`, {
  measures: {
    count: {
      sql: `id`,
      type: `count`,
    },
 
    paying_count: {
      sql: `id`,
      type: `count`,
      filters: [{ sql: `${CUBE}.paying = 'true'` }],
    },
 
    paying_percentage: {
      sql: `100.0 * ${paying_count} / ${count}`,
      type: `number`,
      format: `percent`,
    },
  },
 
  // ...
});
    
cubes:
  - name: orders
    sql_table: orders
 
    measures:
      - name: count
        type: count
 
    dimensions:
      - name: id
        sql: id
        type: number
        primary_key: true
 
      - name: status
        sql: status
        type: string
 
      - name: completed_at
        sql: completed_at
        type: time
    
cube(`orders`, {
  sql_table: `orders`,
 
  measures: {
    count: {
      type: `count`,
    },
  },
 
  dimensions: {
    id: {
      sql: `id`,
      type: `number`,
      primary_key: true,
    },
 
    status: {
      sql: `status`,
      type: `string`,
    },
 
    completed_at: {
      sql: `completed_at`,
      type: `time`,
    },
  },
});
    
cubes:
  - name: orders
    sql_table: orders
 
    measures:
      - name: count
        type: count
 
    dimensions:
      - name: status
        type: string
        sql: status
 
      - name: created_at
        type: time
        sql: created_at
    
cube(`orders`, {
  sql_table: `orders`,
 
  measures: {
    count: {
      type: `count`,
    },
  },
 
  dimensions: {
    status: {
      sql: `status`,
      type: `string`,
    },
 
    created_at: {
      sql: `created_at`,
      type: `time`,
    },
  },
});
    

It would be represented as table in SQL API with count, status, created columns.
To get the count of orders grouped by status we can run the following query.

cube=> SELECT count, status FROM orders;
 count |   status
-------+------------
 15513 | completed
 14652 | processing
 13829 | shipped
(3 rows)
    
Rated 4.8/5 by over 1000 users
Glowing Testimonials that Speak Volumes
Power of Data Modeling
Synmetrix's data modeling capabilities have redefined our analysis process.
Sofia Miller
Data Analyst
Streamlined Data Management
Synmetrix simplifies data handling, making my job more efficient.
Mark Johnson
Data Scientist
Seamless Collaboration
We love Synmetrix's versatile interfaces, facilitating seamless teamwork.
Michael Carter
Project Manager
Timely Alerts
Synmetrix's alerting system keeps us ahead with real-time notifications.
Ryan Scott
Operations Manager
Alerting Made Easy
Thanks to Synmetrix, alerting has never been smoother. Impressive!
Alex Turner
DevOps Engineer
Insightful Reporting
The integrated reporting system ensures everyone gets the insights they need.
John Smith
Business Analyst
Customizable Alerts
Synmetrix's customizable alerts empower us to stay proactive in data-driven decisions.
Rachel Miller
Data Manager
High-Performance Data Processing
Synmetrix's caching and pre-aggregation systems have transformed our data handling.
Daniel Clark
IT Manager