Skip to content

Max Partition Size Check Examples

Three real-world scenarios that show how the Max Partition Size check is typically used in production. All three report a Shape Anomaly, because the rule evaluates a partition's record count rather than individual rows.

The situation: Order lines land in one daily partition of roughly 300,000 records. A partition well above that means a replay ran twice or an upstream filter was dropped, and the downstream aggregation will double-count. A ceiling of 500,000 leaves room for a busy day while still catching a duplicate load.

Check configuration

Field Value
Rule Max Partition Size
Table / File order_lines
Maximum partition size 500000
Owner (check creator)
Anomaly Assignee (Ingestion team)
Description No daily partition may load more than 500,000 records.
Tags load-monitoring, ingestion
Additional Metadata jira: DATA-10300
Status Active

Payload

{
    "description": "No daily partition may load more than 500,000 records.",
    "rule": "maxPartitionSize",
    "fields": null,
    "container_id": 145,
    "properties": {
        "value": 500000
    },
    "tags": ["load-monitoring", "ingestion"],
    "additional_metadata": {"jira": "DATA-10300"},
    "template_id": null,
    "status": "Active",
    "owner_id": 7,
    "default_anomaly_assignee_id": 12
}

Sample Data (the partitions this Scan loaded)

Partition loaded Records
dt=2026-03-09 298,410
dt=2026-03-10 311,205
dt=2026-03-11 622,880

What gets flagged

The 11 March partition holds 622,880 records, more than double a normal day and above the 500,000 ceiling. A replay reprocessed the day without clearing the previous load. The two earlier partitions pass. Only the failing partition produces an anomaly.

Shape Anomaly

There are more than 500000 records present in dt=2026-03-11, Some(622880) were present

Flowchart

graph TD
    A["Scan loads a partition"] --> B["Count the records loaded"]
    B --> C{"Is the count at or below 500,000?"}
    C -->|Yes| D["Partition passes"]
    C -->|No| E["Shape Anomaly naming<br/>the partition and both counts"]
    D --> F["Next partition"]
    E --> F

Equivalent SQL

-- The partitions the check would flag.
SELECT dt AS partition_name,
       count(*) AS records
FROM order_lines
GROUP BY dt
HAVING count(*) > 500000;

The situation: A partner drops one CSV per store into a folder every night, each holding that store's transactions. Files run to a few thousand rows. A file an order of magnitude larger means the partner exported the whole chain into one store's file, which would attribute every transaction to the wrong store.

Check configuration

Field Value
Rule Max Partition Size
Table / File store_transactions/ (folder container)
Maximum partition size 20000
Owner (check creator)
Anomaly Assignee (Partner Data team)
Description No store file may contain more than 20,000 transactions.
Tags partner-feed, load-monitoring
Additional Metadata jira: DATA-10312
Status Active

Payload

{
    "description": "No store file may contain more than 20,000 transactions.",
    "rule": "maxPartitionSize",
    "fields": null,
    "container_id": 512,
    "properties": {
        "value": 20000
    },
    "tags": ["partner-feed", "load-monitoring"],
    "additional_metadata": {"jira": "DATA-10312"},
    "template_id": null,
    "status": "Active",
    "owner_id": 7,
    "default_anomaly_assignee_id": 47
}

Sample Data (each file in the folder is one partition)

Partition loaded Records
store_0142.csv 4,180
store_0143.csv 3,905
store_0144.csv 248,300

What gets flagged

store_0144.csv holds 248,300 rows against a normal few thousand: the partner exported the full chain into a single store's file. Because each file is its own partition, the two healthy files pass and only the oversized one is reported.

Shape Anomaly

There are more than 20000 records present in store_0144.csv, Some(248300) were present

Flowchart

graph TD
    A["Scan loads a partition"] --> B["Count the records loaded"]
    B --> C{"Is the count at or below 20,000?"}
    C -->|Yes| D["Partition passes"]
    C -->|No| E["Shape Anomaly naming<br/>the partition and both counts"]
    D --> F["Next partition"]
    E --> F

Equivalent SQL

-- The files the check would flag, if the folder were queried as one table
-- with a column identifying the source file.
SELECT source_file AS partition_name,
       count(*) AS records
FROM store_transactions
GROUP BY source_file
HAVING count(*) > 20000;

The situation: A tenant-partitioned table should stay balanced: no single tenant's partition may dominate, because the processing job allocates the same resources to each one. A ceiling of 1,000,000 records flags the tenant whose growth is about to make that job time out.

Check configuration

Field Value
Rule Max Partition Size
Table / File events_by_tenant
Maximum partition size 1000000
Owner (check creator)
Anomaly Assignee (Platform Data team)
Description No tenant partition may exceed 1,000,000 events.
Tags skew, capacity
Additional Metadata jira: DATA-10331
Status Active

Payload

{
    "description": "No tenant partition may exceed 1,000,000 events.",
    "rule": "maxPartitionSize",
    "fields": null,
    "container_id": 733,
    "properties": {
        "value": 1000000
    },
    "tags": ["skew", "capacity"],
    "additional_metadata": {"jira": "DATA-10331"},
    "template_id": null,
    "status": "Active",
    "owner_id": 7,
    "default_anomaly_assignee_id": 41
}

Sample Data (the partitions this Scan loaded)

Partition loaded Records
tenant=acme 412,900
tenant=globex 388,540
tenant=initech 1,845,020

What gets flagged

The initech partition has grown past 1.8 million events while the others sit near 400,000. The check reports it so the partition can be split or given more resources before the job starts failing. Skew is a shape problem, not a value problem, which is why no source records accompany the anomaly.

Shape Anomaly

There are more than 1000000 records present in tenant=initech, Some(1845020) were present

Flowchart

graph TD
    A["Scan loads a partition"] --> B["Count the records loaded"]
    B --> C{"Is the count at or below 1,000,000?"}
    C -->|Yes| D["Partition passes"]
    C -->|No| E["Shape Anomaly naming<br/>the partition and both counts"]
    D --> F["Next partition"]
    E --> F

Equivalent SQL

-- The partitions the check would flag.
SELECT tenant AS partition_name,
       count(*) AS records
FROM events_by_tenant
GROUP BY tenant
HAVING count(*) > 1000000;

See Also