beam.contains(). Membership changes via the Datasets API are reflected immediately in deployed pipelines — no redeploy needed.
Use datasets when your filter list is large, changes frequently, or is shared across multiple pipelines. For small, static allowlists, a set filter is simpler.
Using beam.contains() in a transform
Inside a JavaScript (v8) transform, call beam.contains() with the dataset name and the candidate values from the current record. It returns true if any of the values are in the dataset.
Example — filter transfers where either side is in a watchlist
Example — tag records that touch a known contract set
Typical workflow
1
Create the dataset
Call Create dataset with a unique name. You’ll get back a
dataset_id you can use for ID-based endpoints.2
Populate it
Bulk-load values with Add entries (by ID) or Add entries by name. Each request accepts up to 250,000 values; chunk larger uploads at up to 5 concurrent requests.
3
Reference it from a transform
In a JavaScript transform on your pipeline config, call
beam.contains("DATASET_NAME", [input.field1, input.field2]). Deploy the pipeline once via Deploy.4
Update membership live
Add or remove values via Add entries and Remove entries at any time. Lookups in the running pipeline pick up the change immediately — no redeploy.
Endpoints
Create dataset
Create a new dataset by name.
List datasets
List all datasets owned by the authenticated user.
Delete dataset
Permanently delete a dataset and all its entries.
Add entries
Add values to a dataset by
dataset_id.Add entries by name
Add values to a dataset by name — convenient when you only track names in your code.
List entries
Page through the values in a dataset.
Remove entries
Remove specific values from a dataset.
Check entry
Check whether a single value exists in a dataset.
Datasets vs. filter values
Both back fast set-membership lookups, but they’re wired in differently:
See Filter Values for the set-filter alternative.