LakeQL
Introduction
  • Overview
  • Why LakeQL
  • Key Concepts
Getting Started
  • Prerequisites
  • Quickstart
  • Environment
  • First Run
Architecture
  • System Overview
  • Data Flow
  • Request Lifecycle
Configuration
  • Config File
  • Runtime Lifecycle
  • Environment Variables
create-app
  • Usage
  • Template Structure
  • Post-Creation
Guides
  • Custom Resolvers
  • Extending the Schema
  • Mutations
  • Set Up a Trino Mutation
  • Deploying
Endpoints
  • Definition Format
  • Field Types
  • Nested Fields
  • Mutations
  • Glossary
Contributing
  • Local Development
  • Contribution Guide
  • Architecture
GitHub
LakeQL
  1. LakeQL
  2. Architecture
  3. Data Flow

Data Flow

How a GraphQL query becomes SQL and a typed response.

A read request flows down through the layers and back up:

GraphQL query API — schema + auth query-builder — build SQL intent Adapter — render dialect SQL Query engine (Trino / Fabric) Adapter — decode response response-transformer — typed records API — GraphQL response
Click to focus
← ↑ → ↓pan+ / −zoom0reset
1.00x
  1. Query arrives — the API server checks auth and permissions, then resolves the field.
  2. SQL intent — the query builder turns the selected fields, filter, sorting, and paging into a compiled, adapter-neutral query.
  3. Dialect — the adapter renders that into its engine's SQL and runs it.
  4. Decode — the adapter decodes the raw protocol response into keyed records.
  5. Transform — the response transformer applies the schema-aware mapping into typed objects.
  6. Respond — the API returns the typed rows plus pagination metadata.

The count and the page come back together. The query builder emits two CTEs, so a single round trip yields both the rows and the total used for PageInfo.

Previous page

System Overview

Next page

Request Lifecycle