Every
record has a required top-level externalId property, which you can use in some queries to retrieve or aggregate records.- Mutable records: The
externalIdandspaceproperties uniquely identify records for write operations (create/upsert/delete). - Immutable records: The uniqueness of the
space+externalIdpair is not enforced, allowing multiple records with the same identifier to exist.
Rate and concurrency limits
For Records rate and concurrency limits, including mutable vs immutable stream budgets, see API rate limits.Ingest records
Create the spaces, containers, views, and properties in data modeling before you ingest records. You need read access to those containers or views, and write access to the record space. Each entry insources writes one container or one view. When the source is a view, properties are keyed by the view property names, and that one source writes every container the view maps.
A view can be a record source when usedFor is record and streamId is the stream you are writing. Create and manage those views with the data modeling views operations.
Upsert records
Upsert is available only on mutable streams. Each upsert replaces the whole record. Send every property you want to keep. Properties you omit are not kept from the previous version. See Records.Delete records
Delete is available only on mutable streams. Identifiers that do not exist are ignored. Deletes are eventually consistent. Other operations usually stop returning the record within a few seconds. Sync returns a tombstone, with the top-level fields and a deleted status, for at least 3 days after the delete.Aggregates
Record aggregates fall into three groups:- Metric aggregates, such as
sum,min,max, andcount, compute one value. - Bucket aggregates, such as
uniqueValues,timeHistogram, andfilters, group records. This matchesgroupByon data modeling instances. - Pipeline aggregates, such as
movingFunction, run on the metrics of a parent histogram. They do not run on the records inside those buckets.
space, createdTime, and lastUpdatedTime are not property sources. The request filter and targetUnits are not limited that way.