IP Library Granted Patent US 7,584,205
Granted Patent B2
US 7,584,205 · App. 11/169,073 · Granted Sep 1, 2009

Aggregating data with complex operations

Assignee: Ab Initio Technology LLC
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 7,584,205
App. No.
11/169,073
Granted
Sep 1, 2009
Kind
B2
Abstract

Aggregating data includes accepting a first data set that includes records, each record holding a value for each of a plurality of fields. A second data set is generated from the first data set. The second data set includes one or more aggregated records each corresponding to one or more records from the first data set that match values in a subset of fields. A third data set is generated from the second data set. The third data set includes one or more aggregated records each corresponding to one or more aggregated records of the first data set that match values in a subset of fields. An aggregate value associated with an aggregated record in the third data set represents a result of performing a non-cascadable operation on values associated with a plurality of records from the first data set.

Claims (44)

1. A method for aggregating data, including:

accepting a first data set, the first data set including records, each record holding a value for each of a plurality of fields;

generating a second data set from the first data set, the second data set including one or more aggregated records, each aggregated record of the second data set corresponding to one or more records from the first data set that match values in a subset of fields associated with that aggregated record;

generating a third data set from the second data set, the third data set including one or more aggregated records, each aggregated record of the third data set corresponding to one or more aggregated records of the first data set that match values in a subset of fields associated with that aggregated record of the third data set;

wherein an aggregate value associated with an aggregated record in the third data set represents a result of performing a computation based on a non-cascadable operation on values associated with a plurality of records from the first data set; and

storing the data sets or presenting a result based on the data sets over a user interface.

2. The method of claim 1 , wherein performing a non-cascadable operation on values associated with a plurality of records from the first data set is one of the group consisting of: determining a number of distinct values among said values, determining a median of said values, determining a sum of a plurality of extrema over said values, and determining an extremum of a plurality of sums of said values.

3. The method of claim 1 , wherein the non-cascadable operation is such that a result of performing the non-cascadable operation on a set of operands does not decompose into a result of the operation performed on: a first result of the operation performed on a first subset of the operands, and a second result of the operation performed on a second subset of the operands; where the first and second subsets are mutually exclusive and exhaustive.

4. The method of claim 1 , wherein at least one of the plurality of fields is at least partially functionally dependent on another of the plurality of fields.

5. The method of claim 4 , wherein at least some values associated with at least one of the plurality of fields are dependent on a corresponding value associated with another of the plurality of fields.

6. The method of claim 1 , wherein generating the third data set from the second data set includes receiving a flow of aggregated records of the second data set.

7. A computer-readable storage medium including instructions for causing a computer system to:

accept a first data set, the first data set including records, each record holding a value for each of a plurality of fields;

generate a second data set from the first data set, the second data set including one or more aggregated records, each aggregated record of the second data set corresponding to one or more records from the first data set that match values in a subset of fields associated with that aggregated record; and

generate a third data set from the second data set, the third data set including one or more aggregated records, each aggregated record of the third data set corresponding to one or more aggregated records of the first data set that match values in a subset of fields associated with that aggregated record of the third data set;

wherein an aggregate value associated with an aggregated record in the third data set represents a result of performing a computation based on a non-cascadable operation on values associated with a plurality of records from the first data set.

8. A system for aggregating data, including:

means for accepting a first data set, the first data set including records, each record holding a value for each of a plurality of fields;

means for generating a second data set from the first data set, the second data set including one or more aggregated records, each aggregated record of the second data set corresponding to one or more records from the first data set that match values in a subset of fields associated with that aggregated record; and

means for generating a third data set from the second data set, the third data set including one or more aggregated records, each aggregated record of the third data set corresponding to one or more aggregated records of the first data set that match values in a subset of fields associated with that aggregated record of the third data set;

wherein an aggregate value associated with an aggregated record in the third data set represents a result of performing a computation based on a non-cascadable operation on values associated with a plurality of records from the first data set.

9. A method for aggregating data comprising a plurality of records, each record holding a value for each of a plurality of fields, the method including:

performing a multi-stage aggregation of fields within such records using a non-cascadable operation, taking into account functional dependencies between the fields, to generate aggregated data; and storing the aggregated data or presenting a result based on the aggregated data over a user interface.

10. The method of claim 9 , wherein the non-cascadable operation is one of the group consisting of: determining a number of distinct values among said values, determining a median of said values, determining a sum of a plurality of extrema over said values, and determining an extremum of a plurality of sums of said values.

11. The method of claim 9 , wherein the non-cascadable operation is such that a result of performing the non-cascadable operation on a set of operands does not decompose into a result of the operation performed on: a first result of the operation performed on a first subset of the operands, and a second result of the operation performed on a second subset of the operands; where the first and second subsets are mutually exclusive and exhaustive.

12. A method for aggregating data, including:

accepting a first data set, the first data set including records, each record holding a value for each of a plurality of fields;

generating a Cartesian product of records of the first data set and a first plurality of key sets, each key set representing a subset of the fields of the first data set;

generating a second data set from the generated Cartesian product, the second data set including one or more aggregated records, each aggregated record corresponding to one or more records from the first data set that match values in a subset of fields associated with the aggregated record;

generating a third data set from the second data set, the third data set including one or more aggregated records, each aggregated record of the third data set corresponding to one or more aggregated records of the first data set that match values in a subset of fields associated with that aggregated record of the third data set; and

storing the data sets or presenting a result based on the data sets over a user interface.

13. The method of claim 12 , wherein generating the third data set includes performing a join operation on the generated Cartesian product and a data set whose records contain a first value that represents one of the first plurality of key sets and a second value that represents one of a second plurality of key sets, each of the second plurality of key sets representing a subset of the fields of the second data set; where the join operation joins records with matching key sets.

14. The method of claim 13 , wherein generating the third data set includes, for at least some joined records, replacing a value for at least one of the fields with a wildcard value.

15. The method of claim 12 , wherein generating the second data set includes, for at least some records of the generated Cartesian product, replacing a value for at least one of the fields with a wildcard value.

16. A computer-readable storage medium including instructions for causing a computer system to:

accept a first data set, the first data set including records, each record holding a value for each of a plurality of fields;

generate a Cartesian product of records of the first data set and a first plurality of key sets, each key set representing a subset of the fields of the first data set;

generate a second data set from the generated Cartesian product, the second data set including one or more aggregated records, each aggregated record corresponding to one or more records from the first data set that match values in a subset of fields associated with the aggregated record; and

generate a third data set from the second data set, the third data set including one or more aggregated records, each aggregated record of the third data set corresponding to one or more aggregated records of the first data set that match values in a subset of fields associated with that aggregated record of the third data set.

17. A system for aggregating data, including:

means for accepting a first data set, the first data set including records, each record holding a value for each of a plurality of fields;

means for generating a Cartesian product of records of the first data set and a first plurality of key sets, each key set representing a subset of the fields of the first data set;

means for generating a second data set from the generated Cartesian product, the second data set including one or more aggregated records, each aggregated record corresponding to one or more records from the first data set that match values in a subset of fields associated with the aggregated record; and

means for generating a third data set from the second data set, the third data set including one or more aggregated records, each aggregated record of the third data set corresponding to one or more aggregated records of the first data set that match values in a subset of fields associated with that aggregated record of the third data set.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 26, 2009
From: AB INITIO SOFTWARE LLC
To: ARCHITECTURE LLC
Reel/Frame 022460/0496 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 26, 2009
From: ARCHITECTURE LLC
To: AB INITIO TECHNOLOGY LLC
Reel/Frame 022460/0546 →
CHANGE OF NAME Recorded Feb 23, 2009
From: AB INITIO SOFTWARE CORPORATION
To: AB INITIO SOFTWARE LLC
Reel/Frame 022288/0828 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 19, 2005
From: STANFILL, CRAIG W.; ISMAN, MARSHALL A.
To: AB INITIO SOFTWARE CORPORATION
Reel/Frame 017129/0960 →
Continuity (1)
Related Publication 20060294129A1 · Dec 28, 2006