Indicate Data Documentation

website·Indexed 32 days ago

https://docs.indicate-data.io

Documentation for Indicate, featuring the Data Query Language (DQL) and Data Scripting Language (DSL). Includes reference guides for the semantic layer, including expressions, functions (arithmetic, aggregation, numeric, text, and date/time), schema components, and data types, as well as guides for MCP server connection in VS Code.

Tokens
10.9K
Snippets
94
Records
118
Agent score
54%

What's inside Indicate

  1. Overview of DQL Basic Expressions

    Basic expressions in DQL are the fundamental building blocks that represent either direct references to data sources (columns, tables) or literal values (strings, numbers, booleans, nulls). They do not perform computation but serve as atomic elements within functions, predicates, and larger logic. They are typically used inside predicate fields ($left, $right), function operands ($operand, $operands), or containers like $list, $tuple, and $map.
  2. Understand DQL Expression basics

    Expressions are the core logical units of DQL used to describe how values are computed, compared, transformed, and combined. DQL queries are constructed by composing these typed expressions into nested JSON structures. Each expression defines a single value or operation.
  3. Understand text function behavior in Indicate DSL

    Text functions operate on string values and are used for combining, transforming, or evaluating textual data. They can be used in projections, filters, and computations. Key constraints include:

    • All inputs must be string-compatible.
    • If any operand evaluates to null, the entire result is null.
    • Evaluation proceeds from left to right.
  4. Understand DQL Schema components

    In DQL, a schema defines the structure of a dataset to validate queries, enable editor autocomplete, ensure correct filters and joins, and route queries to the appropriate backend. The core components include:

    • Fields: Names of individual attributes or columns.
    • Data types: Defined types for every field (e.g., integer, string, boolean, float).
    • Nullability: Indicates if a field is allowed to be empty (null).
    • Primary key(s): One or more fields that uniquely identify each row, used for joins and result de-duplication.
  5. Understand Aggregation Function basics

    Aggregation functions in the semantic layer compute summary values (totals, counts, averages) across multiple rows, either globally or per group. By default, null values are skipped. If all inputs are null, most aggregations return null, except for count, which returns 0. Arguments must be scalar-compatible (number, text, boolean), and explicit casting may be required for differing types.

    Every aggregation definition consists of:

    • $fn: The name of the aggregation (e.g., "avg", "count", "sum").
    • $operands: The expressions to aggregate over.

    Optional modifiers include:

    • distinct: Excludes duplicates before aggregation.
    • filter: Limits the input values considered.
    • orderBy: Controls ordering for position-based aggregates like first or last.
  6. Understand the role of the Data Scripting Language (DSL)

    The Data Scripting Language (DSL) is a high-level, declarative interface used to define, transform, and analyze datasets. It allows developers to express analytical logic, modeling structures, and query workflows in a reusable format. DSL is used to:

    • Describe dataset structures, including fields and data types.
    • Define shared logic for calculations, aggregations, and derived values.
    • Map abstract query definitions to specific data sources.
    • Implement row-level access control via visibility rules.
    • Maintain consistent logic across dashboards, exports, and other applications.
  7. Understand DQL date and time function basics

    Date and time functions in DQL operate on temporal values (dates, timestamps, or intervals) to extract information, compute durations, or align values to time units. Functions are expressed as structured JSON objects. Operands must evaluate to temporal types and can be column references ($identifier), scalar values (e.g., ISO date strings), or computed expressions. If using raw strings, you may need to use $cast or $shortCast. Validation errors occur if the number of operands provided does not match the function's requirement.
  8. Prerequisites for Indicate MCP Setup

    Before configuring the MCP server, ensure you have the following:

    • An Indicate Account with MCP API access.
    • Visual Studio Code installed.
    • A GitHub Account and an active GitHub Copilot subscription (Individual, Business, or Enterprise) for premium features.
    • An API Bearer token obtained from the Indicate platform.
  9. Install required extensions for MCP in VS Code

    Install the following extensions from the VS Code Extensions view (Ctrl+Shift+X / Cmd+Shift+X):

    • GitHub Copilot (Publisher: GitHub)
    • GitHub Copilot Chat (Publisher: GitHub)
    • VS Code Speech (Optional, Publisher: Microsoft) for voice support.

    After installation, sign in to GitHub via the Accounts icon in the bottom-left sidebar to activate Copilot.

  10. Connect VS Code to Indicate MCP Server

    To enable AI agents like GitHub Copilot to interact with the Indicate API, you must configure the Model Context Protocol (MCP) in VS Code. The connection uses HTTP streaming and Bearer token authentication.
  11. Understand Arithmetic Expression structure in Indicate DSL

    Arithmetic expressions in the Indicate Semantic Layer are defined within an Expression object. They are used for data transformation in projections and filters. All operands must be numeric, though specific functions (modulo, bitwise operations, shifts) require integer types.

    Key components of an arithmetic expression:

    • $fn: The name of the function (e.g., "add", "divide").
    • $operands: A list of expressions to compute. Operands can be scalar values, column references, or nested expressions.

    Depending on the function, the expression may be wrapped in a $variadic object (for functions accepting multiple operands like add, least, greatest) or a $binary object (for functions requiring exactly two operands, specifying $left and $right).