# TimescaleDB & PostgreSQL

Marple supports [**TimescaleDB**](https://www.timescale.com/) **and** [**PostgreSQL**](https://www.postgresql.org/)**,** making it ideal for structured and time-series data.

### Required credentials

To set up a connection, you need:

* Database URL
* Port (`5432` by default)
* Database name
* Username
* Password

### Queries

Queries are executed using SQL. Marple offers predefined queries for fetching datasets, signals, and time-series data. Below are some example queries:

* **dataset list**

```sql
select
    concat("carId", ' ', session) as display_name,
    "carId",
    event,
    session,
    min(time) as start,
    max(time) as stop,
    realtime
  from {{TABLE}}
  where time between {{TABLE}}.start and {{TABLE}}.stop
  group by "carId", event, session, realtime

```

* **signal list**

```sql
select 
  name,
  sum(count) as count,
  max(count):: double precision *(1e9) as frequency
from {{TABLE}}
where "carId" = '{{ dataset.carId }}'
group by name

```

* **time series**

```sql
select time / 1e9 as "timestamp", value
from {{TABLE}}
where "carId" = '{{ dataset.carId }}'
{%- if timestamp_start %}
and ({{timestamp_start}} * 1e9)::bigint <= time
{%- endif %}
{%- if timestamp_stop %}
and ({{timestamp_stop}} * 1e9)::bigint >= time
{%- endif %}
and name = '{{ signal.name }}'

```
