# h3TableSource

You can use **h3TableSource** to build layers and widgets using **tables** in your data warehouse that contain:

* **h3-based data:** a column containing an [h3 cell identifier](https://h3geo.org/docs/core-library/h3Indexing)
* **Point-based vector data**

{% hint style="success" %}
When you use point-based vector data in your h3TableSource, CARTO will dynamically aggregate it into h3 cells, using an aggregation expression of your choice.
{% endhint %}

## Usage

```typescript
import {h3TableSource} from '@carto/api-client';

const data = h3TableSource({
  accessToken: 'XXX',
  connectionName: 'carto_dw',
  tableName: 'carto-demo-data.demo_tables.h3_table',
  aggregationExp: 'SUM(population)'
});
```

## Options

```typescript
type H3TableSourceOptions = {
  tableName: string;
  aggregationExp: string;
  aggregationResLevel?: number;
  spatialDataColumn?: string;
  filters?: Filters;
  filtersLogicalOperator?: 'and' | 'or'; 
};
```

* **tableName**: The fully qualified name (FQN) of the table you want to retrieve from your data warehouse. For example, for a BigQuery connection, `carto-demo-data.demo_tables.h3_sample` would be a valid table name.
* **aggregationExp:** A valid SQL expression that will define how this source aggregates h3 cells starting from the base resolution into each parent h3 cell in lower zoom levels. For example, for an `aggregationExp` containing `AVG(income)` , each parent h3 cell will contain the average income from all its children.
  * For point-based, this defines the aggregation of the points for every zoom level.
* **aggregationResLevel** (optional): A number that expresses the resolution detail that will be used for each zoom level. By default this value is `4` .
  * Numbers lower than 4 will produce a less detailed visualization, with better performance.
  * Numbers higher than 4 will product a more detailed visualization, with worse performance.
* **spatialDataColumn** (optional): The name of the column that contains the geospatial information (geometries/geographies) that will be used for visualization and etc. By default, CARTO assumes this column is named `geom`.
* **filters** (optional): A valid [CARTO Filters](https://docs.carto.com/carto-for-developers/reference/filters/column-filters) object, used to perform server-side filtering of this data source with column-based filters.
* **filtersLogicalOperator** (optional): Indicates whether `filters` are applied following an `AND` logic or an `OR` logic.

## Response

The response of `h3TableSource` is a promise that can be resolved and used in [layers](https://github.com/CartoDB/gitbook-documentation/blob/master/carto-for-developers/key-concepts/carto-for-deck.gl) and [widgets](https://docs.carto.com/carto-for-developers/reference/carto-widgets-reference).

## Connection compatibility

| Connection Data Warehouse                                                                         | Compatible           |
| ------------------------------------------------------------------------------------------------- | -------------------- |
| [BigQuery](https://docs.carto.com/carto-user-manual/connections/bigquery)                         | :white\_check\_mark: |
| [Snowflake](https://docs.carto.com/carto-user-manual/connections/snowflake)                       | :white\_check\_mark: |
| [Redshift](https://docs.carto.com/carto-user-manual/connections/redshift)                         | :white\_check\_mark: |
| [Databricks](https://docs.carto.com/carto-user-manual/connections/databricks)                     | :white\_check\_mark: |
| [Oracle](https://docs.carto.com/carto-user-manual/connections/oracle)                             | :white\_check\_mark: |
| [PostgreSQL](https://docs.carto.com/carto-user-manual/connections/postgresql)                     | :white\_check\_mark: |
| [CARTO Data Warehouse](https://docs.carto.com/carto-user-manual/connections/carto-data-warehouse) | :white\_check\_mark: |

## Layer compatibility

`h3TableSource` is compatible with the following layers from the `@deck.gl/carto` module:

* [H3TileLayer](https://deck.gl/docs/api-reference/carto/h3-tile-layer)

## Widget model compatibility

`h3TableSource` is compatible with the following widget models:

* [getFormula](https://docs.carto.com/carto-for-developers/reference/carto-widgets-reference/models/getformula)
* [getCategories](https://docs.carto.com/carto-for-developers/reference/carto-widgets-reference/models/getcategories)
* [getHistogram](https://docs.carto.com/carto-for-developers/reference/carto-widgets-reference/models/gethistogram)
* [getRange](https://docs.carto.com/carto-for-developers/reference/carto-widgets-reference/models/getrange)
* [getScatter](https://docs.carto.com/carto-for-developers/reference/carto-widgets-reference/models/getscatter)
* [getTimeSeries](https://docs.carto.com/carto-for-developers/reference/carto-widgets-reference/models/gettimeseries)
* [getTable](https://docs.carto.com/carto-for-developers/reference/carto-widgets-reference/models/gettable)
