> hypequery

Definition

Create typed dataset definitions over ClickHouse tables and views.

A dataset is a typed semantic model over a source table or view.

import { dataset, dimension, measure } from '@hypequery/datasets';

const Orders = dataset('orders', {
  source: 'orders',
  tenantKey: 'tenant_id',
  timeKey: 'created_at',
  dimensions: {
    id: dimension.number(),
    createdAt: dimension.timestamp({ column: 'created_at' }),
  },
  measures: {
    revenue: measure.sum('amount'),
  },
});

source is the physical table or view name. The first dataset() argument is the logical dataset name. tenantKey and timeKey are physical column names used for runtime tenant isolation and time graining.

Module pattern

Define datasets at the module level and export them from dedicated files.

// datasets/orders.ts
export const Orders = dataset('orders', {
  source: 'orders',
  tenantKey: 'tenant_id',
  timeKey: 'created_at',
  dimensions: {
    id: dimension.number(),
    status: dimension.string(),
    createdAt: dimension.timestamp({ column: 'created_at' }),
  },
  measures: {
    revenue: measure.sum('amount'),
  },
});

Public shape

A dataset can include:

  • source
  • tenantKey
  • timeKey
  • dimensions
  • measures
  • filters
  • relationships
  • limits

See Dimensions, Measures, and Metrics for the main building blocks.

On this page