Skip to content

Template Hub — source × sink matrix

2 source templates × 4 sink templates. ✓ = every stream has a write mode the sink supports; ◐ = some streams do; — = none. Each source section below carries the copy-paste command for every compatible sink.

source \ sink faucet-hq/bigquery faucet-hq/jsonl faucet-hq/postgres faucet-hq/sqlite
faucet-hq/example-csv ✓ ✓ ✓ ✓
faucet-hq/example-rest-api ✓ ✓ ✓ ✓

Google BigQuery — one table per stream, atomic overwrite or keyed MERGE upsert

  • connector: bigquery · write modes: append, upsert, delete, overwrite
  • params:
    • bq_dataset (default "raw") — Dataset every stream’s table lands in
    • bq_project (required) — GCP project id that owns the dataset
    • bq_sa_key (required, secret) — Service-account key JSON, inline. Pass it with —param-env from a secret store; copy this template and switch auth to application_default to use ADC instead.

Local JSON Lines files, one per stream — the local validation destination

  • connector: file · write modes: append, overwrite
  • params:
    • out_dir (default "./out") — Directory to write /.jsonl under

PostgreSQL — one auto-mapped table per stream, transactional overwrite or ON CONFLICT upsert

  • connector: postgres · write modes: append, upsert, delete, overwrite
  • params:
    • pg_schema (default "public") — Schema every stream’s table is created in
    • pg_url (required, secret) — postgres://user:pass@host:5432/db connection URL

Local SQLite database — one auto-mapped table per stream, real overwrite/upsert semantics without infrastructure

  • connector: sqlite · write modes: append, upsert, delete, overwrite
  • params:
    • sqlite_path (default "./out/faucet.db") — Database file (created if missing)

Example — two CSV exports as two streams (runs offline, no credentials)

  • tags: example, file
  • connector: file · 2 stream(s)
  • params:
    • data_dir (default "./hub/examples/data") — Directory holding orders.csv and customers.csv
stream write (preference) primary keys
orders overwrite → upsert id
customers overwrite → upsert id

→ faucet-hq/bigquery

Terminal window
faucet run --source faucet-hq/example-csv --sink faucet-hq/bigquery \
--param bq_project=<bq_project> \
--param bq_sa_key

→ faucet-hq/jsonl

Terminal window
faucet run --source faucet-hq/example-csv --sink faucet-hq/jsonl

→ faucet-hq/postgres

Terminal window
faucet run --source faucet-hq/example-csv --sink faucet-hq/postgres \
--param pg_url

→ faucet-hq/sqlite

Terminal window
faucet run --source faucet-hq/example-csv --sink faucet-hq/sqlite

Example — a bearer-authenticated REST API with cursor pagination and one stream per endpoint

  • tags: example, rest
  • connector: rest · 2 stream(s)
  • params:
stream write (preference) primary keys
accounts overwrite → upsert id
events upsert → append id

→ faucet-hq/bigquery

Terminal window
faucet run --source faucet-hq/example-rest-api --sink faucet-hq/bigquery \
--param api_token \
--param base_url=<base_url> \
--param bq_project=<bq_project> \
--param bq_sa_key

→ faucet-hq/jsonl

Terminal window
faucet run --source faucet-hq/example-rest-api --sink faucet-hq/jsonl \
--param api_token \
--param base_url=<base_url>

→ faucet-hq/postgres

Terminal window
faucet run --source faucet-hq/example-rest-api --sink faucet-hq/postgres \
--param api_token \
--param base_url=<base_url> \
--param pg_url

→ faucet-hq/sqlite

Terminal window
faucet run --source faucet-hq/example-rest-api --sink faucet-hq/sqlite \
--param api_token \
--param base_url=<base_url>