SAP Data Services alternative — SAP Data Services vs Skippr
SAP Data Services is on-prem ETL for SAP estates. Current docs are 4.3. You draw jobs, work flows, and data flows in Designer. A local repository holds the objects. A Job Server starts the engine: extract, transform, load, in batch. An Access Server sits in front of real-time services and queues messages across Job Servers. The Central Management Console from BI or IPS is the admin plane. The engine can push SQL down. CDC is a chapter, not a product: source-based or target-based, Oracle CDC tables, SQL Server CDC or Change Tracking, timestamp columns, Attunity on mainframe, or SAP Replication Server / SLT. BW Source and BW Target datastores are first-class. Enterprise Edition on many contracts also includes Information Steward and meters cores across that bundle. SAP does not publish a list price. Private-cloud reseller cards exist; they are quote. This is not SAP Integration Suite (iPaaS messages) and it is not Datasphere.
Skippr is an open Streamhouse you run as one Rust binary. Write skippr.yml (or the same thing in Python), discover, sync. You query live state over Iceberg ∪ WAL, and the history is ordinary Iceberg in your bucket. No Job Server. ELT into a warehouse is one path, not the product.
| Feature | Skippr | SAP Data Services |
|---|---|---|
| Deploy | Single Rust binary, your VPC or on-prem | Designer, repository, Job Server, Access Server, CMC |
| Schema | In-stream evolution, sibling columns | Datastore metadata plus data-flow mapping |
| Storage | Open Iceberg on Parquet you own | Target datastore. No Iceberg destination in 4.3 |
| CDC | Log-based; fails closed if the dest cannot honour | Source- or target-based. Oracle, SQL Server, timestamp, SLT, Attunity |
| Query | skipprd query on Iceberg ∪ WAL; history in any Iceberg engine | Target after the job. No lake SQL in Data Services |
| Pricing | Free self-hosted engine | Quote. Enterprise Edition cores, often with Information Steward. |
What SAP Data Services is good at
SAP extractors without a third-party RFC shim. BW Source, ECC tables, and a push-down that stays in the database are why BW teams still run weekend loads here. Data quality transforms and Information Steward sit next to the job. If the job is "IDocs and BW into a warehouse we already own," that is a real product.
Where the job is wider
Data Services is a job studio. It is not a Streamhouse. There is no Iceberg ∪ WAL. There is no skipprd query on in-flight rows. The job ends; then you query the target.
CDC is several mechanisms. Timestamp CDC is a watermark. Oracle CDC is Oracle's tables. SLT is another SAP license. Attunity on mainframe is a third stack. Pick the wrong one and you still have a full extract.
Cores are the meter. Enterprise Edition shares them with Information Steward. A Job Server group licenses the hosts you stood up, not the rows you moved. Integration Suite is a different SKU and a different job (messages, 250 KB chunks). Datasphere is SAP's newer cloud warehouse path, not a Data Services rename.
Skippr will not call ODP, IDoc, or BW. Skippr also will not run a Data Services job. If the job is "SAP extractor into a warehouse," Data Services is the narrower tool. If the job is live SQL on Iceberg you run, Data Services was never that.
Getting started
Install skipprd from the install guide, or pip install skippr. The three tabs write the same skippr.yml. Then discover, sync, and query.
skippr:
workspace: analytics
skipprd_el_storage_mode: local
pipelines:
orders:
data_source: data_sources.app_db
data_sink: data_sinks.lake
data_sources:
app_db:
Postgres:
host: db.internal
user: skippr_reader
password: ${APP_DB_PASSWORD}
database: app
tables: [orders, customers]
cdc_mode: snapshot_then_cdc
data_sinks:
lake:
AthenaIceberg:
warehouse: s3://my-iceberg-warehouse/
glue_database_name: analytics
athena_workgroup_name: primary
athena_results_s3_bucket: my-athena-results
region: us-east-1
schema_sink: schema_sinks.lake_schema
schema_sinks:
lake_schema:
AthenaIceberg:
warehouse: s3://my-iceberg-warehouse/
glue_database_name: analytics
athena_workgroup_name: primary
athena_results_s3_bucket: my-athena-results
region: us-east-1skipprd --workspace analytics --storage-mode local connect data-source postgres \
--pipeline orders \
--name app_db \
--host db.internal \
--user skippr_reader \
--password '${APP_DB_PASSWORD}' \
--database app \
--tables orders \
--tables customers \
--cdc-mode snapshot_then_cdc
skipprd connect data-sink athenaiceberg \
--pipeline orders \
--name lake \
--warehouse s3://my-iceberg-warehouse/ \
--glue-database-name analytics \
--athena-workgroup-name primary \
--athena-results-s3-bucket my-athena-results \
--region us-east-1
skipprd connect schema-sink athenaiceberg \
--pipeline orders \
--name lake_schemafrom skippr import (
Config,
DataSinkAthenaIceberg,
DataSourcePostgres,
DataSourcePostgresSourceCdcMode,
EnvRef,
LocalStorage,
Pipeline,
)
cfg = Config().workspace("analytics").storage(LocalStorage())
app_db = cfg.data_source(
"app_db",
DataSourcePostgres(
host="db.internal",
user="skippr_reader",
password=EnvRef("APP_DB_PASSWORD"),
database="app",
tables=["orders", "customers"],
cdc_mode=DataSourcePostgresSourceCdcMode.SNAPSHOTTHENCDC,
),
)
lake = cfg.data_sink(
"lake",
DataSinkAthenaIceberg(
warehouse="s3://my-iceberg-warehouse/",
glue_database_name="analytics",
athena_workgroup_name="primary",
athena_results_s3_bucket="my-athena-results",
region="us-east-1",
),
schema_sink="lake_schema",
)
cfg.pipeline("orders", Pipeline(data_source=app_db, data_sink=lake))
cfg.save("skippr.yml")export APP_DB_PASSWORD='your-postgres-password'
skipprd discover --pipeline orders
skipprd sync --pipeline orders --once
skipprd query "SELECT count(*) FROM analytics.orders"Which to choose
Choose SAP Data Services if you need BW or ECC extractors into a warehouse, and a job after Designer is enough.
Choose Skippr if you want one binary, live SQL, and Iceberg files that stay yours. Skippr will not call ODP or IDoc.
Install from Install. Connector and query reference live in Developer Docs. For optional onboarding in your VPC, Enterprise Jumpstart or Contact.
