Declarative DataOps: Simplicity at scale
Stop juggling ingestion tools and preparation pipelines. With Tabsdata, data flows are fully declarative, so ingestion and preparation happen in one system that is easy to operate and manage. Every table is immutable and versioned, which makes complex data issues easy to trace and resolve.
import tabsdata as td
@td.publisher(
source=td.SalesforceReportSource(
report=SALESFORCE_REPORT,
find_report_by="name",
column_name_strategy="columnName",
credentials=td.SalesforceTokenCredentials(SALESFORCE_USER, SALESFORCE_PASSWORD, SALESFORCE_TOKEN)
),
tables="sf_snapshot",
)
def salesforce_publisher(tf: td.TableFrame):
return tf
import tabsdata as td
# Ingesting data from Salesforce
@td.publisher(
source=td.SalesforceReportSource(
report=SALESFORCE_REPORT,
find_report_by="name",
column_name_strategy="columnName",
credentials=td.SalesforceTokenCredentials(
SALESFORCE_USER,
SALESFORCE_PASSWORD,
SALESFORCE_TOKEN,
),
),
tables="sf_snapshot",
)
def salesforce_pub(
tf: td.TableFrame,
):
return tf