ClickHouse/clickhouse-docs-embeddings huggingface dataset:
DataStore Query Building

```
from chdb.datastore import DataStore

ds = DataStore.from_file("sales.csv")

result = (ds
    .select('region', 'product', 'amount', 'date')
    .filter(ds['date'] >= '2024-01-01')
    .filter(ds['amount'] > 100)
    .groupby('region', 'product')
    .agg({
        'amount': ['sum', 'mean'],
        'date': 'count'
    })
    .having(ds['sum'] > 10000)
    .sort('sum', ascending=False)
    .limit(20)
)

# View SQL
print(result.to_sql())

# Execute
df = result.to_df()
```

---

## Aliasing[​](#aliasing "Direct link to Aliasing")

### `as_`[​](#as "Direct link to as")

Set an alias for a column or subquery.

```
as_(alias: str) -> DataStore
```

**Examples:**

```
# Column alias
result = ds.select(
    ds['name'].as_('employee_name'),
    (ds['salary'] * 12).as_('annual_salary')
)

# Subquery alias
subquery = ds.filter(ds['age'] > 30).as_('senior_employees')
```

- [Query Methods Overview](#overview)- [Selection](#selection)
    - [`select`](#select)- [Filtering](#filtering)
      - [`filter` / `where`](#filter)- [Pandas-Style Filtering](#pandas-filtering)- [Sorting](#sorting)
        - [`sort` / `orderby`](#sort)- [Limiting and Pagination](#limiting)
          - [`limit`](#limit)- [`offset`](#offset)- [Distinct](#distinct)
            - [`distinct`](#distinct-method)- [Grouping](#grouping)
              - [`groupby`](#groupby)- [`having`](#having)- [Joining](#joining)
                - [`join`](#join)- [`union`](#union)- [Conditional Expressions](#conditional)
                  - [`when`](#when)- [Raw SQL](#raw-sql)
                    - [`run_sql` / `sql`](#run-sql)- [`to_sql`](#to-sql)- [Method Chaining](#chaining)- [Aliasing](#aliasing)
                        - [`as_`](#as)

Was this page helpful?
DataStore Logging

# Production: minimal logging
config.set_log_level(logging.WARNING)
config.set_log_format("simple")
config.set_profiling_enabled(False)
```

### Log Rotation[​](#rotation "Direct link to Log Rotation")

```
import logging
from logging.handlers import RotatingFileHandler

# Create rotating file handler
handler = RotatingFileHandler(
    'datastore.log',
    maxBytes=10*1024*1024,  # 10MB
    backupCount=5
)
handler.setLevel(logging.WARNING)

# Add to DataStore logger
logging.getLogger('chdb.datastore').addHandler(handler)
```

---

## Environment Variables[​](#env-vars "Direct link to Environment Variables")

You can also configure logging via environment variables:

```
# Set log level
export CHDB_LOG_LEVEL=DEBUG

# Set log format
export CHDB_LOG_FORMAT=verbose
```

```
import os
import logging

# Read from environment
log_level = os.environ.get('CHDB_LOG_LEVEL', 'WARNING')
config.set_log_level(getattr(logging, log_level))
```

---

## Summary[​](#summary "Direct link to Summary")

|  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Task Command|  |  |  |  |  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | Enable debug `config.enable_debug()`| Set level `config.set_log_level(logging.DEBUG)`| Set format `config.set_log_format("verbose")`| Log to file Use Python logging handlers|  |  | | --- | --- | | Suppress logs `config.set_log_level(logging.CRITICAL)` | | | | | | | | | | | |

- [Quick Start](#quick-start)- [Log Levels](#levels)- [Setting Log Level](#setting-level)- [Log Format](#format)
        - [Simple Format (Default)](#simple)- [Verbose Format](#verbose)- [What Gets Logged](#what-logged)
          - [DEBUG Level](#debug-logged)- [INFO Level](#info-logged)- [WARNING Level](#warning-logged)- [ERROR Level](#error-logged)- [Custom Logging Configuration](#custom)
            - [Using Python Logging](#python-logging)- [Log to File](#log-file)- [Suppress Logging](#suppress)- [Debugging Scenarios](#scenarios)
              - [Debug SQL Generation](#debug-sql)- [Debug Engine Selection](#debug-engine)- [Debug Cache Operations](#debug-cache)- [Debug Performance Issues](#debug-performance)- [Production Configuration](#production)
                - [Recommended Settings](#recommended)- [Log Rotation](#rotation)- [Environment Variables](#env-vars)- [Summary](#summary)

Was this page helpful?
title_wip

Tip

For automatic optimal engine selection, use `config.set_execution_engine('auto')` (default).
For maximum throughput on aggregation workloads, use `config.use_performance_mode()`.
See [Execution Engine](/docs/chdb/configuration/execution-engine) and [Performance Mode](/docs/chdb/configuration/performance-mode) for details.

- [Why DataStore Is Faster](#why-faster)
  - [1. SQL Pushdown](#sql-pushdown)- [2. Column Pruning](#column-pruning)- [3. Lazy Evaluation](#lazy-evaluation)- [Benchmark: DataStore vs pandas](#benchmark)
    - [Test Environment](#test-environment)- [Results](#results)- [Key Insights](#insights)- [When DataStore Wins](#when-datastore-wins)
      - [Heavy Aggregations](#heavy-aggregations)- [Complex Pipelines](#complex-pipelines)- [Large File Processing](#large-file-processing)- [Multiple Column Operations](#multiple-column-operations)- [When pandas Is Comparable](#when-pandas-wins)
        - [Small Datasets (<1,000 rows)](#small-datasets)- [Simple Slice Operations](#simple-slice-operations)- [Custom Python Lambda Functions](#custom-python-functions)- [Zero-Copy DataFrame Integration](#zero-copy)- [Optimization Tips](#tips)
            - [1. Enable Performance Mode for Heavy Workloads](#use-performance-mode)- [2. Use Parquet Instead of CSV](#use-parquet)- [3. Filter Early](#filter-early)- [4. Select Only Needed Columns](#select-only-needed-columns)- [5. Leverage SQL Aggregations](#leverage-sql-aggregations)- [6. Use head() Instead of Full Queries](#use-head)- [7. Batch Operations](#batch-operations)- [8. Use explain() to Optimize](#use-explain)- [Profiling Your Workload](#profiling)
              - [Enable Profiling](#enable-profiling)- [Identify Bottlenecks](#identify-bottlenecks)- [Compare Approaches](#compare-approaches)- [Best Practices Summary](#summary)- [Quick Decision Guide](#decision)

Was this page helpful?
title_wip

[Edit this page](https://github.com/ClickHouse/clickhouse-docs/blob/main/docs/chdb/install/index.md)

Instructions for how to get setup with chDB are available below for the following languages and runtimes:

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Language API Reference|  |  |  |  |  |  |  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | [Python](/docs/chdb/install/python) [Python API](/docs/chdb/api/python)| [NodeJS](/docs/chdb/install/nodejs) |  |  |  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | --- | --- | | [Go](/docs/chdb/install/go) |  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | | [Rust](/docs/chdb/install/rust) |  |  |  |  | | --- | --- | --- | --- | | [Bun](/docs/chdb/install/bun) |  |  | | --- | --- | | [C and C++](/docs/chdb/install/c)  | | | | | | | | | | | | | |

Was this page helpful?
title_wip

## Error handling best practices[​](#error-handling "Direct link to Error handling best practices")

```
#include <stdio.h>
#include <chdb.h>

int safe_query_example() {
    chdb_connection* conn = NULL;
    chdb_result* result = NULL;
    int return_code = 0;
    
    // Create connection
    char* args[] = {"chdb"};
    conn = chdb_connect(1, args);
    if (!conn) {
        printf("Failed to create connection\n");
        return 1;
    }
    
    // Execute query
    result = chdb_query(*conn, "SELECT invalid_syntax", "CSV");
    if (!result) {
        printf("Query execution failed\n");
        return_code = 1;
        goto cleanup;
    }
    
    // Check for query errors
    const char* error = chdb_result_error(result);
    if (error) {
        printf("Query error: %s\n", error);
        return_code = 1;
        goto cleanup;
    }
    
    // Process successful result
    printf("Result: %.*s\n", 
           (int)chdb_result_length(result), 
           chdb_result_buffer(result));
    
cleanup:
    if (result) chdb_destroy_query_result(result);
    if (conn) chdb_close_conn(conn);
    return return_code;
}
```

## GitHub repository[​](#github-repository "Direct link to GitHub repository")

- **Main Repository**: [chdb-io/chdb](https://github.com/chdb-io/chdb)
- **Issues and Support**: Report issues on the [GitHub repository](https://github.com/chdb-io/chdb/issues)
- **C API Documentation**: [Bindings Documentation](https://github.com/chdb-io/chdb/blob/main/bindings.md)

- [Installation](#installation)
  - [Step 1: Install libchdb](#install-libchdb)- [Step 2: Include headers](#include-headers)- [Step 3: Link library](#link-library)- [C Examples](#c-examples)
    - [Basic connection and queries](#basic-connection-queries)- [Streaming queries](#streaming-queries)- [Working with different data formats](#data-formats)- [C++ example](#cpp-example)- [Error handling best practices](#error-handling)- [GitHub repository](#github-repository)

Was this page helpful?
title_wip

[Edit this page](https://github.com/ClickHouse/clickhouse-docs/blob/main/docs/chdb/reference/index.md)

|  |  |  |
| --- | --- | --- |
| Reference page|  |  | | --- | --- | | [Data Formats](/docs/chdb/reference/data-formats)| [SQL Reference](/docs/chdb/reference/sql-reference) | | |

Was this page helpful?
title_wip

[Edit this page](https://github.com/ClickHouse/clickhouse-docs/blob/main/docs/chdb/reference/data-formats.md)

When it comes to data formats, chDB is 100% feature compatible with ClickHouse.

Input formats are used to parse the data provided to `INSERT` and `SELECT` from a file-backed table such as `File`, `URL` or `S3`.
Output formats are used to arrange the results of a `SELECT`, and to perform `INSERT`s into a file-backed table.
As well as the data formats that ClickHouse supports, chDB also supports:

- `ArrowTable` as an output format, the type is Python `pyarrow.Table`
- `DataFrame` as an input and output format, the type is Python `pandas.DataFrame`. For examples, see [`test_joindf.py`](https://github.com/chdb-io/chdb/blob/main/tests/test_joindf.py)
- `Debug` as ab output (as an alias of `CSV`), but with enabled debug verbose output from ClickHouse.

The supported data formats from ClickHouse are:
title_wip

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
title_wip

| --- | --- | --- | --- | --- | --- | --- | --- | --- | | MsgPack ✔ ✔|  |  |  |  |  |  |  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | MySQLDump ✔ ✗|  |  |  |  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | DWARF ✔ ✗|  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | | Markdown ✗ ✔|  |  |  | | --- | --- | --- | | Form ✔ ✗ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
title_wip

[Edit this page](https://github.com/ClickHouse/clickhouse-docs/blob/main/docs/chdb/reference/sql-reference.md)

chdb supports the same SQL syntax, statements, engines and functions as ClickHouse:

|  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Topic|  |  |  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | --- | --- | | [SQL Syntax](/docs/sql-reference/syntax)| [Statements](/docs/sql-reference/statements)| [Table Engines](/docs/engines/table-engines)| [Database Engines](/docs/engines/database-engines)| [Regular Functions](/docs/sql-reference/functions)| [Aggregate Functions](/docs/sql-reference/aggregate-functions)| [Table Functions](/docs/sql-reference/table-functions)| [Window Functions](/docs/sql-reference/window-functions) | | | | | | | | |

For further information and examples, see the [ClickHouse SQL Reference](/docs/sql-reference).

Was this page helpful?
title_wip

[Edit this page](https://github.com/ClickHouse/clickhouse-docs/blob/main/docs/kubernetes-operator/02_install/helm.mdx)

This guide covers installing the ClickHouse Operator using Helm charts.

## Prerequisites[​](#prerequisites "Direct link to Prerequisites")

- Kubernetes cluster v1.33.0 or later
- Helm v3.0 or later
- kubectl configured to communicate with your cluster

## Install Helm[​](#install-helm "Direct link to Install Helm")

If you don't have Helm installed:

```
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
```

Verify installation:

```
helm version
```

## Install the Operator[​](#install-the-operator "Direct link to Install the Operator")

Note

By default Helm chart deploys ClickHouse Operator with webhooks enabled and requires cert-manager installed.

### From OCI Helm repository[​](#from-oci-helm-repository "Direct link to From OCI Helm repository")

Install the latest release

```
    helm install clickhouse-operator oci://ghcr.io/clickhouse/clickhouse-operator-helm \
       --create-namespace \
       -n clickhouse-operator-system
```

Install a specific operator version

```
    helm install clickhouse-operator oci://ghcr.io/clickhouse/clickhouse-operator-helm \
       --create-namespace \
       -n clickhouse-operator-system \
       --set-json="manager.container.tag=<operator version>
```

### From Local Chart[​](#from-local-chart "Direct link to From Local Chart")

Clone the repository and install from the local chart:

```
git clone https://github.com/ClickHouse/clickhouse-operator.git
cd clickhouse-operator
helm install clickhouse-operator ./dist/chart
```

### Configuration options[​](#configuration-options "Direct link to Configuration options")

For advanced configuration options, refer to the [values.yaml](https://github.com/ClickHouse/clickhouse-operator/blob/main/dist/chart/values.yaml) file in the Helm chart

- [Prerequisites](#prerequisites)- [Install Helm](#install-helm)- [Install the Operator](#install-the-operator)
      - [From OCI Helm repository](#from-oci-helm-repository)- [From Local Chart](#from-local-chart)- [Configuration options](#configuration-options)

Was this page helpful?
title_wip

[Edit this page](https://github.com/ClickHouse/clickhouse-docs/blob/main/docs/kubernetes-operator/01_overview.mdx)

The ClickHouse Operator is a Kubernetes operator that automates the deployment, configuration, and management of ClickHouse clusters and ClickHouse Keeper clusters on Kubernetes.
It provides declarative cluster management through custom resources, enabling users to easily create highly-available ClickHouse deployments.

The Operator handles the full lifecycle of ClickHouse clusters including scaling, upgrades, and configuration management.

## Features[​](#features "Direct link to Features")

- **ClickHouse Cluster Management**: Create and manage ClickHouse clusters
- **ClickHouse Keeper Integration**: Built-in support for ClickHouse Keeper clusters for distributed coordination
- **Storage Provisioning**: Customizable persistent volume claims with storage class selection
- **High Availability**: Fault tolerant installations for ClickHouse and Keeper clusters
- **Security**: Built-in security features TLS/SSL support for secure cluster communication
- **Monitoring**: Prometheus metrics integration for observability

## Installation[​](#installation "Direct link to Installation")

Choose your preferred installation method:

- [Manifests Installation](/docs/clickhouse-operator/install/kubectl) - Install using kubectl/kustomize
- [Helm Installation](/docs/clickhouse-operator/install/helm) - Install using Helm charts
- [Operator Lifecycle Manager (OLM) Installation](/docs/clickhouse-operator/install/olm) - Install using OLM

## Guides[​](#guides "Direct link to Guides")

- **[Introduction](/docs/clickhouse-operator/guides/introduction)** - General overview of ClickHouse Operator concepts
- **[Configuration Guide](/docs/clickhouse-operator/guides/configuration)** - Configure ClickHouse and Keeper clusters

## Reference[​](#reference "Direct link to Reference")

- **[API Reference](/docs/clickhouse-operator/reference/api-reference)** - Complete API documentation for custom resources

- [Features](#features)- [Installation](#installation)- [Guides](#guides)- [Reference](#reference)

Was this page helpful?
title_wip

### KeeperCluster conditions[​](#keepercluster-conditions "Direct link to KeeperCluster conditions")

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Type Description|  |  |  |  |  |  |  |  |  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | `SpecValid` Whether KeeperCluster CustomResource passes validation. Useful in deployments without webhooks|  |  |  |  |  |  |  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | `ReconcileSucceeded` The success of the last reconciliation cycle|  |  |  |  |  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | `ReplicaStartupSucceeded` Whether all replicas of the KeeperCluster are able to start.|  |  |  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | --- | --- | | `Healthy` Readiness of all requested replicas.|  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | | `ClusterSizeAligned` Cluster have the same amount of replicas as requested.|  |  |  |  | | --- | --- | --- | --- | | `ConfigurationInSync` Represents Configuration deployment state|  |  | | --- | --- | | `Ready` KeeperCluster is ready to serve client requests. Leader elected. | | | | | | | | | | | | | | | |

- [ClickHouseCluster](#clickhousecluster)
  - [API version and Kind](#api-version-and-kind)- [ClickHouseClusterSpec](#clickhouseclusterspec)- [ClickHouseConfig](#clickhouseconfig)- [ClickHouseClusterStatus](#clickhouseclusterstatus)- [KeeperCluster](#keepercluster)
    - [API Version and Kind](#keeper-api-version-and-kind)- [KeeperClusterSpec](#keeperclusterspec)- [KeeperConfig](#keeperconfig)- [KeeperClusterStatus](#keeperclusterstatus)- [Common Types](#common-types)
      - [PodTemplateSpec](#podtemplatespec)- [ContainerTemplateSpec](#containertemplatespec)- [ContainerImage](#containerimage)- [ClusterTLSSpec](#clustertlsspec)- [LoggerConfig](#loggerconfig)- [DefaultPasswordSelector](#defaultpasswordselector)- [Default Values](#default-values)
        - [ClickHouse Defaults](#clickhouse-defaults)- [Keeper Defaults](#keeper-defaults)- [Conditions](#conditions)
          - [ClickHouseCluster conditions](#clickhousecluster-conditions)- [KeeperCluster conditions](#keepercluster-conditions)

Was this page helpful?
Azure Marketplace Committed Contract

[Edit this page](https://github.com/ClickHouse/clickhouse-docs/blob/main/docs/cloud/reference/03_billing/02_marketplace/azure-marketplace-committed.md)

Get started with ClickHouse Cloud on the [Azure Marketplace](https://azuremarketplace.microsoft.com/en-us/marketplace/apps) via a committed contract. A committed contract, also known as a a Private Offer, allows customers to commit to spending a certain amount on ClickHouse Cloud over a period of time.

## Prerequisites[​](#prerequisites "Direct link to Prerequisites")

- A Private Offer from ClickHouse based on specific contract terms.

## Steps to sign up[​](#steps-to-sign-up "Direct link to Steps to sign up")

1. You should have received an email with a link to review and accept your private offer.

  
  

2. Click on the **Review Private Offer** link in the email. This should take you to your Azure Marketplace page with the private offer details.

  
  

3. Once you accept the offer, you will be taken to a **Private Offer Management** screen. Azure may take some time to prepare the offer for purchase.

  
  
  

4. After a few minutes, refresh the page. The offer should be ready for **Purchase**.

  
  

5. Click on **Purchase** - you will see a flyout open. Complete the following:

  

- Subscription and resource group
- Provide a name for the SaaS subscription
- Choose the billing plan that you have a private offer for. Only the term that the private offer was created (for example, 1 year) will have an amount against it. Other billing term options will be for $0 amounts.
- Choose whether you want recurring billing or not. If recurring billing isn't selected, the contract will end at the end of the billing period and the resources will be set to decommissioned.
- Click on **Review + subscribe**.

  
  

6. On the next screen, review all the details and hit **Subscribe**.

  
  

7. On the next screen, you will see **Your SaaS subscription in progress**.

  
  

8. Once ready, you can click on **Configure account now**. Note that is a critical step that binds the Azure subscription to a ClickHouse Cloud organization for your account. Without this step, your Marketplace subscription isn't complete.

  
  

9. You will be redirected to the ClickHouse Cloud sign up or sign in page. You can either sign up using a new account or sign in using an existing account. Once you're signed in, a new organization will be created that is ready to be used and billed via the Azure Marketplace.
10. You will need to answer a few questions - address and company details - before you can proceed.

  
  
  

11. Once you hit **Complete sign up**, you will be taken to your organization within ClickHouse Cloud where you can view the billing screen to ensure you're being billed via the Azure Marketplace and can create services.

  
  
  
  
  

If you run into any issues, please don't hesitate to contact [our support team](https://clickhouse.com/support/program).

- [Prerequisites](#prerequisites)- [Steps to sign up](#steps-to-sign-up)

Was this page helpful?