IP Library Granted Patent US 12,670,171
Granted Patent B2
US 12,670,171 · App. 18/233,418 · Granted Jun 30, 2026

Back-calculation of aggregates

Inventors: Joel Gould (Arlington, MA); Benjamin James Robbie Roche (London, GB)
Assignee: Ab Initio Technology LLC
G06F16/2474G06F16/244
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,670,171
App. No.
18/233,418
Granted
Jun 30, 2026
Kind
B2
Abstract

Described are techniques for back-calculating one or more values of a new, real-time aggregate before sufficient data to calculate the new, real-time aggregate has been collected, wherein the back-calculating is based on data collected for one or more aggregates that have been executing prior to start of execution of the new, real-time aggregate.

Claims (75)

1 . A method implemented by a data processing system for back-calculating one or more values of a near real-time aggregate over a period of time, with the back-calculating being before sufficient new data items are received to determine a value of the near real-time aggregate using the new data items, the method including:

starting execution by the data processing system of one or more instructions for generating a near real-time aggregate over a period of time that begins when the one or more instructions start execution, with the near real-time aggregate being based on one or more events;

retrieving, from a data storage system, historical data collected from one or more previously executing instructions;

storing, in a data store, one or more items of the historical data representing the one or more events occurring over the period of time;

from time to time, receiving new data items by the data processing system, with a new data item being a data item received once execution of the one or more instructions starts;

storing, in the data store, one or more of the new data items identified as representing the one or more events; and

until the data processing system is able to generate a value of the near real-time aggregate over the period of time that begins when the one or more instructions start execution using the new data items and not using the historical data,

based on the one or more of the new data items and on the one or more items of the historical data, storing, in the data store, one or more values of the near real-time aggregate, with the or more values being accessible from the data store for retrieval as the execution of the one or more instructions continues;

wherein the one or more stored values provide for one or more values of the near real-time aggregate over the period of time that begins when the one or more instructions start execution and before the data processing system is able to generate a value of the near real-time aggregate over the period of time using the new data items and not using the historical data,

whereby the one or more values that are based on the one or more of the new data items and on the one or more items of the historical data reduces an amount of time from when execution of the one or more instructions starts to when the one or more values of the near real-time aggregate are stored in the data store,

wherein starting the execution of the one or more instructions for generating the near real-time aggregate over the period of time includes:

receiving, at a controller, a definition of the near real-time aggregate that newly defines the near real-time aggregate;

generating, by the controller, a signal for sending to a query generator to cause the query generator to query the data storage system; and

causing, by the query generator based on the signal, the retrieving, from the data storage system, of the historical data collected from one or more previously executing instructions, the historical data representing the one or more events occurring over the period of time for generation of the near real-time aggregate,

wherein generating, by the controller, the signal for the query generator to cause the query generator to query the data storage system includes:

specifying, in the signal, one or more event types for accessing from the data storage system, wherein causing the retrieving includes retrieving only events having the one or more event types from the data storage system, and wherein the events include the one or more events occurring over the period of time for generation of the near real-time aggregate.

2 . The method of claim 1 , further including:

generating a query to retrieve from an archive the historical data.

3 . The method of claim 2 , further including:

sending the historical data to a batch processing module.

4 . The method of claim 3 , further including:

sending the occurrences of one or more events to a real-time processing module.

5 . The method of claim 4 wherein as the one or more instructions execute for a given day, decrementing one day's worth of historical data, and incrementing one day's worth of the occurrences of one or more events.

6 . The method of claim 2 wherein the query includes a search key.

7 . The method of claim 6 wherein the search key is a customer identifier.

8 . The method of claim 2 wherein a collect module outputs to a batch module of an aggregate that is based on a given number of days of archived events and the batch module.

9 . The method of claim 8 wherein the batch module executes a computation graph that accesses the archived events, sorts the archived events according to a key, filters the sorted archived events according to the given number of days of events, and stores the given number of days of events and updates the near real-time aggregate stored in memory.

10 . The method of claim 1 , wherein the retrieving, from the data storage system, of the historical data is performed by performing, once for generating the near real-time aggregate, batch retrieval of the historic data.

11 . The method of claim 1 , wherein the data storage system is a non-volatile data storage system.

12 . The method of claim 1 , wherein the one or more values of the near real-time aggregate are stored in a memory that is volatile memory.

13 . The method of claim 1 ,

wherein the aggregate is generated by executing the one or more instructions on one or more inputs;

wherein identifying the one or more occurrences in the historical data includes identifying, in the historical data, one or more items of the historical data representing one or more historical occurrences of the one or more events, with the one or more historical occurrences occurring over a historical period of time, with an amount of time specified by the historical period of time corresponding to an amount of time specified by the period of time;

wherein the method further includes:

inputting the identified one or more items of the historical data as the one or more inputs.

14 . A data processing system for back-calculating one or more values of a near real-time aggregate over a period of time, with the back-calculating being before sufficient new data items are received to determine a value of the near real-time aggregate using the new data items, the data processing system including one or more processor devices and memory, with the data processing system including one or more processors configured to perform actions including:

starting execution by the data processing system of one or more instructions for generating a near real-time aggregate over a period of time that begins when the one or more instructions start execution, with the near real-time aggregate being based on one or more events;

retrieving, from a data storage system, historical data collected from one or more previously executing instructions;

storing, in a data store, one or more items of the historical data representing the one or more events occurring over the period of time;

from time to time, receiving new data items by the data processing system, with a new data item being a data item received once execution of the one or more instructions starts;

storing, in the data store, one or more of the new data items identified as representing the one or more events; and

until the data processing system is able to generate a value of the near real-time aggregate over the period of time that begins when the one or more instructions start execution using the new data items and not using the historical data,

based on the one or more of the new data items and on the one or more items of the historical data, storing, in the data store, one or more values of the near real-time aggregate, with the or more values being accessible from the data store for retrieval as the execution of the one or more instructions continues;

wherein the one or more stored values provide for one or more values of the near real-time aggregate over the period of time that begins when the one or more instructions start execution and before the data processing system is able to generate a value of the near real-time aggregate over the period of time using the new data items and not using the historical data,

whereby the one or more values being based on the one or more of the new data items and on the one or more items of the historical data reduces an amount of time from when execution of the one or more instructions starts to when the one or more values of the near real-time aggregate are stored in the data store;

wherein starting the execution of the one or more instructions for generating the near real-time aggregate over the period of time includes:

receiving, at a controller, a definition of the near real-time aggregate that newly defines the near real-time aggregate;

generating, by the controller, a signal for sending to a query generator to cause the query generator to query the data storage system; and

causing, by the query generator based on the signal, the retrieving, from the data storage system, of the historical data collected from one or more previously executing instructions, the historical data representing the one or more events occurring over the period of time for generation of the near real-time aggregate,

wherein generating, by the controller, the signal for the query generator to cause the query generator to query the data storage system includes:

specifying, in the signal, one or more event types for accessing from the data storage system, wherein causing the retrieving includes retrieving only events having the one or more event types from the data storage system, and wherein the events include the one or more events occurring over the period of time for generation of the near real-time aggregate.

15 . The data processing system of claim 14 , further including:

generating a query to retrieve from an archive the historical data.

16 . The data processing system of claim 15 , further including:

sending the historical data to a batch processing module.

17 . The data processing system of claim 16 , further including:

sending the occurrences of one or more events to a real-time processing module.

18 . The data processing system of claim 17 wherein as the one or more instructions execute for a given day, decrementing one day's worth of historical data, and incrementing one day's worth of the occurrences of one or more events.

19 . The data processing system of claim 15 wherein the query includes a search key.

20 . One or more non-transitory computer readable storage devices including instructions for back-calculating one or more values of a near real-time aggregate over a period of time, with the back-calculating being before sufficient new data items are received to determine a value of the near real-time aggregate using the new data items, the instructions causing a data processing system to perform actions including:

starting execution by the data processing system of one or more instructions for generating a near real-time aggregate over a period of time that begins when the one or more instructions start execution, with the near real-time aggregate being based on one or more events;

retrieving, from a data storage system, historical data collected from one or more previously executing instructions;

storing, in a data store, one or more items of the historical data representing the one or more events occurring over the period of time;

from time to time, receiving new data items by the data processing system, with a new data item being a data item received once execution of the one or more instructions starts;

storing, in the data store, one or more of the new data items identified as representing the one or more events; and

until the data processing system is able to generate a value of the near real-time aggregate over the period of time that begins when the one or more instructions start execution using the new data items and not using the historical data,

based on the one or more of the new data items and on the one or more items of the historical data, storing, in the data store, one or more values of the near real-time aggregate, with the or more values being accessible from the data store for retrieval as the execution of the one or more instructions continues;

wherein the one or more stored values provide for one or more values of the near real-time aggregate over the period of time that begins when the one or more instructions start execution and before the data processing system is able to generate a value of the near real-time aggregate over the period of time using the new data items and not using the historical data,

whereby the one or more values being based on the one or more of the new data items and on the one or more items of the historical data reduces an amount of time from when execution of the one or more instructions starts to when the one or more values of the near real-time aggregate are stored in the data store,

wherein starting the execution of the one or more instructions for generating the near real-time aggregate over the period of time includes:

receiving, at a controller, a definition of the near real-time aggregate that newly defines the near real-time aggregate;

generating, by the controller, a signal for sending to a query generator to cause the query generator to query the data storage system; and

causing, by the query generator based on the signal, the retrieving, from the data storage system, of the historical data collected from one or more previously executing instructions, the historical data representing the one or more events occurring over the period of time for generation of the near real-time aggregate,

wherein generating, by the controller, the signal for the query generator to cause the query generator to query the data storage system includes:

specifying, in the signal, one or more event types for accessing from the data storage system, wherein causing the retrieving includes retrieving only events having the one or more event types from the data storage system, and wherein the events include the one or more events occurring over the period of time for generation of the near real-time aggregate.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 18, 2023
From: GOULD, JOEL; ROCHE, BENJAMIN JAMES ROBBIE
To: AB INITIO SOFTWARE LLC
Reel/Frame 064931/0927 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 18, 2023
From: AB INITIO SOFTWARE LLC
To: AB INITIO ORIGINAL WORKS LLC
Reel/Frame 064931/0953 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 18, 2023
From: AB INITIO ORIGINAL WORKS LLC
To: AB INITIO TECHNOLOGY LLC
Reel/Frame 064931/0988 →
Continuity (2)
Provisional Application 63443515 · Feb 6, 2023
Related Publication 20240265023A1 · Aug 8, 2024
References Cited (32)
US 5966072A · Stanfill et al. · 1999 [cited by applicant]
US 7908076B2 · Downs et al. · 2011 [cited by applicant]
US 9454578B2 · Anzalone et al. · 2016 [cited by applicant]
US 9817561B2 · Mital et al. · 2017 [cited by applicant]
US 9892020B1 · Ophir · 2018 [cited by examiner]
US 9959267B2 · Folting et al. · 2018 [cited by applicant]
US 10122783B2 · Qiao et al. · 2018 [cited by applicant]
US 10831509B2 · Ravid et al. · 2020 [cited by applicant]
US 11210285B2 · Egenolf et al. · 2021 [cited by applicant]
US 11281673B2 · Nanda et al. · 2022 [cited by applicant]
US 20080082959A1 · Fowler · 2008 [cited by applicant]
US 20100185618A1 · Peterson · 2010 [cited by applicant]
US 20170177446A1 · MacLean et al. · 2017 [cited by applicant]
US 20170371926A1 · Shiran et al. · 2017 [cited by applicant]
US 20190130048A1 · Egenolf et al. · 2019 [cited by applicant]
US 20210004244A1 · Ravid et al. · 2021 [cited by applicant]
US 20210365324A1 · Wang et al. · 2021 [cited by applicant]
US 20210374109A1 · Shimanovsky et al. · 2021 [cited by applicant]
US 20220004561A1 · Sherman · 2022 [cited by applicant]
Broadcom.com [online], “Adding/Modifying Virtual Fields,” Sep. 26, 2023, retrieved from URL<https://techdocs.broadcom.com/us/en/ca-enterprise-software/it-operations-management/ca-2e/8-7/defining-ca-2e-data-models/mainta… [cited by applicant]
Dreamio.awsworkshop.io [online], “Amazon—Editing a Virtual Dataset,” retrieved on or before May 26, 2022, retrieved from URL<https://dremio.awsworkshop.io/50-create-virtual-datasets/504-edit-vitual-dataset.html>, 3 page… [cited by applicant]
Infocepts [online], “Achieve Real-Time Data Analysis with a Virtual Data Warehouse,” Jan. 19, 2016, retrieved from URL<https://www.infocepts.com/blog/achieve-real-time-data-analysis-with-avirtual-data-warehouse/>, 6 pag… [cited by applicant]
Informatica.com [online], “Creating an External Resource for the Aggregate View,” Jan. 2023, retrieved from URL<https://docs.informatica.com/master-data-management/customer-360/10-3/installation-and-configuration-guide/… [cited by applicant]
International Search Report and Written Opinion in International Appln. No. PCT/US2024/014447, mailed on Jun. 5, 2024, 15 pages. [cited by applicant]
Rockset.com [online], “Real-Time Analytics in the World of Virtual Reality and Live Streaming,” Sep. 6, 2019, retrieved from URL<https://rockset.com/blog/real-time-analytics-virtual-reality-live-streaming/>, 10 pages. [cited by applicant]
Segment.com [online], “Create real-time audiences (campaigns, lookalikes, ad suppression, etc.),” retrieved on Aug. 22, 2023, retrieved from URL<https://segment.com/use-cases/create-real-time-audiences/>, 7 pages. [cited by applicant]
Setiadji et al., “Development of Back-calculation Model for Aggregate Gradation Determination Using Fractal Theory,” MATEC Web of Conferences, Mar. 30, 2018, 159(01006):1-6. [cited by applicant]
Splunk.com [online], “Stream Processor Service: Function Reference,” retrieved on Jun. 9, 2022, retrieved from URL<www.splunk.com>, 5 pages. [cited by applicant]
Tibco.com [online], “Aggregating Data,” retrieved on May 25, 2022, retrieved from URL<https://docs.tibco.com/pub/spotfire_server/10.6.1/doc/html/en-US/TIB_sfire_bauthorconsumer_usersguide/GUID-B8AB864D-7472-4B92-BD4E-00… [cited by applicant]
Tibco.com online, “Anything 360,” retrieved on Aug. 22, 2023, retrieved from URL<https://www.tibco.com/solutions/anything-360>, 6 pages. [cited by applicant]
TowardsDataScience.com online, “The Anatomy of an Active Metadata Platform,” Aug. 12, 2021, retrieved on Aug. 22, 2023, retrieved from URL<https://towardsdatascience.com/the-anatomy-of-an-active-metadata-platform-134730… [cited by applicant]
International Preliminary Report on Patentability in International Appln. No. PCT/US2024/014447, mailed on Aug. 21, 2025, 10 pages. [cited by applicant]