Platform Integrations
The TitanRDM SDK provides platform-specific sync classes for BigQuery and Snowflake, in addition to the Spark/Databricks integration. Each extends the same ConventionSync base class and follows the same naming conventions.
BigQuery — BigQuerySync
Convention-based sync between Google BigQuery and TitanRDM.
Naming Convention
{project}.{dataset}.{domain_abbreviation}_{database_table_name}
Setup
from titan_rdm_sdk import TitanRDMClient, BigQuerySync
client = TitanRDMClient(url=URL, client_id=ID, client_secret=SECRET)
# Option A: Use application default credentials
sync = BigQuerySync(client=client, project="my-gcp-project")
# Option B: Pass an existing BigQuery client
from google.cloud import bigquery
bq_client = bigquery.Client(project="my-gcp-project")
sync = BigQuerySync(client=client, bq_client=bq_client)
Requirements: google-cloud-bigquery and pandas-gbq packages.
Upload: BigQuery → TitanRDM
branch = client.get_branch_by_name("prod")
results = sync.upload_sync_by_convention(
branch_id=branch.id,
source_dataset="rdmout",
target_domain_name="Clinics",
)
Upload Parameters
| Parameter | Type | Required | Description |
branch_id | int | Yes | Target branch ID |
source_dataset | str | Yes | Source BigQuery dataset (e.g. 'rdmout') |
target_domain_name | str | Yes | Exact domain name in TitanRDM |
target_table_names | list[str] | No | Filter to specific tables |
source_project | str | No | GCP project (defaults to init project) |
description | str | No | Import batch description |
correlation_code | str | No | Tracking identifier |
Download: TitanRDM → BigQuery
results = sync.download_sync_by_convention(
branch_id=branch.id,
target_dataset="rdmin",
source_domain_name="Clinics",
)
Download Parameters
| Parameter | Type | Required | Description |
branch_id | int | Yes | Target branch ID |
target_dataset | str | Yes | Destination BigQuery dataset (e.g. 'rdmin') |
source_domain_name | str | Yes | Exact domain name in TitanRDM |
source_table_names | list[str] | No | Filter to specific tables |
target_project | str | No | GCP project (defaults to init project) |
correlation_code | str | No | Tracking identifier prefix |
poll_interval | float | No | Seconds between checks (default: 2.0) |
max_wait | float | No | Max wait per export (default: 300.0) |
BigQuery Prerequisites
Create datasets for sync:
sql CREATE SCHEMA IF NOT EXISTS `my-project.rdmin`; CREATE SCHEMA IF NOT EXISTS `my-project.rdmout`;Ensure your service account has BigQuery Data Editor permissions on the target datasets.
Snowflake — SnowparkSync
Convention-based sync between Snowflake and TitanRDM via Snowpark.
Naming Convention
{database}.{schema}.{domain_abbreviation}_{database_table_name}
Setup
from titan_rdm_sdk import TitanRDMClient, SnowparkSync
client = TitanRDMClient(url=URL, client_id=ID, client_secret=SECRET)
# Option A: In a Snowflake notebook (session auto-detected)
sync = SnowparkSync(client=client)
# Option B: Pass an existing Snowpark session
from snowflake.snowpark import Session
session = Session.builder.configs(connection_params).create()
sync = SnowparkSync(client=client, session=session)
Requirements: snowflake-snowpark-python package.
Upload: Snowflake → TitanRDM
branch = client.get_branch_by_name("prod")
results = sync.upload_sync_by_convention(
branch_id=branch.id,
source_database="ANALYTICS",
source_schema="RDMOUT",
target_domain_name="Clinics",
)
Upload Parameters
| Parameter | Type | Required | Description |
branch_id | int | Yes | Target branch ID |
source_database | str | Yes | Source Snowflake database |
source_schema | str | Yes | Source schema (e.g. 'RDMOUT') |
target_domain_name | str | Yes | Exact domain name in TitanRDM |
target_table_names | list[str] | No | Filter to specific tables |
description | str | No | Import batch description |
correlation_code | str | No | Tracking identifier |
Download: TitanRDM → Snowflake
results = sync.download_sync_by_convention(
branch_id=branch.id,
target_database="ANALYTICS",
target_schema="RDMIN",
source_domain_name="Clinics",
)
Download Parameters
| Parameter | Type | Required | Description |
branch_id | int | Yes | Target branch ID |
target_database | str | Yes | Destination Snowflake database |
target_schema | str | Yes | Destination schema (e.g. 'RDMIN') |
source_domain_name | str | Yes | Exact domain name in TitanRDM |
source_table_names | list[str] | No | Filter to specific tables |
correlation_code | str | No | Tracking identifier prefix |
poll_interval | float | No | Seconds between checks (default: 2.0) |
max_wait | float | No | Max wait per export (default: 300.0) |
Snowflake Prerequisites
Create schemas for sync:
sql CREATE SCHEMA IF NOT EXISTS ANALYTICS.RDMIN; CREATE SCHEMA IF NOT EXISTS ANALYTICS.RDMOUT;Ensure your Snowflake role has
USAGEon the database andCREATE TABLE/INSERTon the target schemas.
Platform Comparison
| Feature | SparkSync | BigQuerySync | SnowparkSync |
| Platform | Databricks / Spark | Google BigQuery | Snowflake |
| Convention | catalog.schema.key | project.dataset.key | database.schema.key |
| Session | SparkSession | BigQuery Client | Snowpark Session |
| Write mode | overwrite + overwriteSchema | WRITE_TRUNCATE | overwrite |
| Package | pyspark | google-cloud-bigquery | snowflake-snowpark-python |
Next Steps
- Spark Sync — Databricks-specific details
- Convention Sync — Base class and pure-pandas usage
- Example Notebooks — Downloadable end-to-end examples