IP Library Granted Patent US 10,296,522
Granted Patent B1
US 10,296,522 · App. 14/918,053 · Granted May 21, 2019

Index mechanism for report generation

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 10,296,522
App. No.
14/918,053
Granted
May 21, 2019
Kind
B1
Abstract

Database query analysis technology, in which an input query is received that relates to multiple attribute classes of data records. An index that is descriptive of the data records in data storage is accessed and relative positions in the accessed index for the multiple attribute classes are identified. The accessed index is processed based on more than one of the multiple attribute classes and the identified relative positions, and the processed index is used to identify groups of data records that are included in the data records in the data storage and that share common values for the multiple attribute classes in the input query. Metrics corresponding to the data records included in each of the identified groups of data records are accessed, computations are performed on the accessed metrics, and a report is generated that reflects results of the computations.

Claims (90)

1. A computer-implemented method for generating a report comprising:

receiving, by one or more processors, a report generation request that includes an input query that identifies, for use in the generated report, multiple attribute classes of data records in a data storage;

identifying, by the one or more processors, the multiple attribute classes related to the received report generation request, the multiple attribute classes being a subset of less than all attribute classes associated with the data records in the data storage;

accessing, from an electronic storage, an index that is descriptive of the data records in the data storage, the index defining positional relationships between the attributes classes of the data records, wherein an attribute class that has a relatively lower position in the index than another attribute class is a child attribute class of the other attribute class;

identifying portions of the accessed index that correspond to the multiple attribute classes identified as being related to the input query and disregarding portions of the accessed index that correspond to attribute classes other than the multiple attribute classes identified as being related to the input query;

identifying relative positions in the identified portions of the accessed index for the multiple attribute classes identified as being related to the input query;

based on the identified relative positions, selecting, from among the multiple attribute classes identified as being related to the input query, the attribute class that has the highest relative position within the accessed index;

for each distinct value in the selected attribute class that has the highest relative position within the accessed index, assigning a distinct identifier to portions of the accessed index within the selected attribute class that correspond to the distinct value, the distinct identifier corresponding to a label designated for a portion of the index;

grouping portions of the accessed index into a plurality of groups based on the assigned distinct identifiers;

for each grouped portion of the accessed index corresponding to a group of the plurality of groups, generating database code for accessing, from the data storage, metrics that are associated with the grouped portion of the accessed index;

performing computations on the accessed metrics;

generating a report that reflects results of the computations; and

storing, in electronic storage, the generated report.

2. The method of claim 1 , further comprising:

selecting, based on the identified relative positions, from among the multiple attribute classes associated with the input query, the attribute class that has a second highest relative position after the attribute class that has the highest relative position;

for each portion of the index within the selected attribute class that has the second highest relative position, identifying an attribute value corresponding to the portion and a parent identifier of a portion of the index within the attribute class that has the highest relative position that links to the portion of the index within the selected attribute class that has the second highest relative position;

based on the identified attribute values and parent identifiers, identifying distinct attribute value and parent identifier pairs within the selected attribute class that has the second highest relative position; and

for each distinct attribute value and parent identifier pair, assigning a distinct identifier to portions of the index within the selected attribute class that has the second highest relative position that share the distinct attribute value and parent identifier pair.

3. The method of claim 1 , wherein identifying portions of the accessed index that correspond to the multiple attribute classes identified as being related to the input query and disregarding portions of the accessed index that correspond to attribute classes other than the multiple attribute classes identified as being related to the input query comprises:

modifying the accessed index;

analyzing the modified index;

identifying redundancies present in the modified index based on analyzing the modified index;

compressing the identified redundancies in the modified index;

updating index mapping definitions based on compression of the identified redundancies in the modified index; and

identifying, using the compressed index and the updated mapping definitions, groups of data records that are included in the data records in the data storage and that share common values for the multiple attribute classes identified as being related to the input query.

4. The method of claim 3 , wherein compressing the identified redundancies in the modified index comprises compressing one or more different portions of the index within a particular attribute class into a single portion of the index within the particular attribute class.

5. The method of claim 1 , further comprising:

generating a connectivity graph based on the multiple attribute classes identified as related to the input query and the identified relative positions; and

assigning group numbers to each node within the connectivity graph, each group number corresponding to a distinct combination of values for the multiple attribute classes identified as being related to the input query.

6. The method of claim 1 , wherein the selected attribute class that has the highest relative position within the accessed index is an attribute class that is (i) included in the received input query, and (ii) has one or more child attribute classes within the identified portions of the accessed index.

7. At least one non-transitory computer-readable storage medium encoded with executable instructions that, when executed by at least one processor, cause the at least one processor to perform operations comprising:

receiving, by one or more processors, a report generation request that includes an input query that identifies, for use in the generated report, multiple attribute classes of data records in a data storage;

identifying, by the one or more processors, the multiple attribute classes related to the received report generation request, the multiple attribute classes being a subset of less than all attribute classes associated with the data records in the data storage;

accessing, from electronic storage, an index that is descriptive of the data records in the data storage, the index defining positional relationships between the attributes classes of the data records, wherein an attribute class that has a relatively lower position in the index than another attribute class is a child attribute class of the other attribute class;

identifying portions of the accessed index that correspond to the multiple attribute classes identified as being related to the input query and disregarding portions of the accessed index that correspond to attribute classes other than the multiple attribute classes identified as being related to the input query;

identifying relative positions in the identified portions of the accessed index for the multiple attribute classes identified as being related to the input query;

based on the identified relative positions, selecting, from among the multiple attribute classes identified as being related to the input query, the attribute class that has the highest relative position within the accessed index;

for each distinct value in the selected attribute class that has the highest relative position within the accessed index, assigning a distinct identifier to portions of the accessed index within the selected attribute class that correspond to the distinct value, the distinct identifier corresponding to a label designated for a portion of the index;

grouping portions of the accessed index into a plurality of groups based on the assigned distinct identifiers;

for each grouped portion of the accessed index corresponding to a group of the plurality of groups, generating database code for accessing, from the data storage, metrics that are associated with the grouped portion of the accessed index;

performing computations on the accessed metrics;

generating a report that reflects results of the computations; and

storing, in electronic storage, the generated report.

8. The medium of claim 7 further comprising:

selecting, based on the identified relative positions, from among the multiple attribute classes associated with the input query, the attribute class that has a second highest relative position after the attribute class that has the highest relative position;

for each portion of the index within the selected attribute class that has the second highest relative position, identifying an attribute value corresponding to the portion and a parent identifier of a portion of the index within the attribute class that has the highest relative position that links to the portion of the index within the selected attribute class that has the second highest relative position;

based on the identified attribute values and parent identifiers, identifying distinct attribute value and parent identifier pairs within the selected attribute class that has the second highest relative position; and

for each distinct attribute value and parent identifier pair, assigning a distinct identifier to portions of the index within the selected attribute class that has the second highest relative position that share the distinct attribute value and parent identifier pair.

9. The medium of claim 7 , wherein identifying portions of the accessed index that correspond to the multiple attribute classes identified as being related to the input query and disregarding portions of the accessed index that correspond to attribute classes other than the multiple attribute classes identified as being related to the input query comprises:

modifying the accessed index;

analyzing the modified index;

identifying redundancies present in the modified index based on analyzing the modified index;

compressing the identified redundancies in the modified index;

updating index mapping definitions based on compression of the identified redundancies in the modified index; and

identifying, using the compressed index and the updated mapping definitions, groups of data records that are included in the data records in the data storage and that share common values for the multiple attribute classes identified as being related to the input query.

10. The medium of claim 9 , wherein compressing the identified redundancies in the modified index comprises compressing one or more different portions of the index within a particular attribute class into a single portion of the index within the particular attribute class.

11. The medium of claim 7 , further comprising:

generating a connectivity graph based on the multiple attribute classes identified as related to the input query and the identified relative positions; and

assigning group numbers to each node within the connectivity graph, each group number corresponding to a distinct combination of values for the multiple attribute classes identified as being related to the input query.

12. A system comprising:

at least one processor; and

at least one memory coupled to the at least one processor having stored thereon instructions which, when executed by the at least one processor, cause the at least one processor to perform operations comprising:

receiving, by one or more processors, a report generation request that includes an input query that identifies, for use in the generated report, multiple attribute classes of data records in a data storage;

identifying, by the one or more processors, the multiple attribute classes related to the received report generation request, the multiple attribute classes being a subset of less than all attribute classes associated with the data records in the data storage;

accessing, from electronic storage, an index that is descriptive of the data records in the data storage, the index defining positional relationships between the attributes classes of the data records, wherein an attribute class that has a relatively lower position in the index than another attribute class is a child attribute class of the other attribute class;

identifying portions of the accessed index that correspond to the multiple attribute classes identified as being related to the input query and disregarding portions of the accessed index that correspond to attribute classes other than the multiple attribute classes identified as being related to the input query;

identifying relative positions in the identified portions of the accessed index for the multiple attribute classes identified as being related to the input query;

based on the identified relative positions, selecting, from among the multiple attribute classes identified as being related to the input query, the attribute class that has the highest relative position within the accessed index;

for each distinct value in the selected attribute class that has the highest relative position within the accessed index, assigning a distinct identifier to portions of the accessed index within the selected attribute class that correspond to the distinct value, the distinct identifier corresponding to a label designated for a portion of the index;

grouping portions of the accessed index into a plurality of groups based on the assigned distinct identifiers;

for each grouped portion of the accessed index corresponding to a group of the plurality of groups, generating database code for accessing, from the data storage, metrics that are associated with the grouped portion of the accessed index;

performing computations on the accessed metrics;

generating a report that reflects results of the computations; and

storing, in electronic storage, the generated report.

13. The system of claim 12 further comprising:

selecting, based on the identified relative positions, from among the multiple attribute classes associated with the input query, the attribute class that has a second highest relative position after the attribute class that has the highest relative position;

for each portion of the index within the selected attribute class that has the second highest relative position, identifying an attribute value corresponding to the portion and a parent identifier of a portion of the index within the attribute class that has the highest relative position that links to the portion of the index within the selected attribute class that has the second highest relative position;

based on the identified attribute values and parent identifiers, identifying distinct attribute value and parent identifier pairs within the selected attribute class that has the second highest relative position; and

for each distinct attribute value and parent identifier pair, assigning a distinct identifier to portions of the index within the selected attribute class that has the second highest relative position that share the distinct attribute value and parent identifier pair.

14. The system of claim 12 , wherein identifying portions of the accessed index that correspond to the multiple attribute classes identified as being related to the input query and disregarding portions of the accessed index that correspond to attribute classes other than the multiple attribute classes identified as being related to the input query comprises:

modifying the accessed index;

analyzing the modified index;

identifying redundancies present in the modified index based on analyzing the modified index;

compressing the identified redundancies in the modified index;

updating index mapping definitions based on compression of the identified redundancies in the modified index; and

identifying, using the compressed index and the updated mapping definitions, groups of data records that are included in the data records in the data storage and that share common values for the multiple attribute classes identified as being related to the input query.

15. The system of claim 14 , wherein compressing the identified redundancies in the modified index comprises compressing one or more different portions of the index within a particular attribute class into a single portion of the index within the particular attribute class.

16. The system of claim 12 , further comprising:

generating a connectivity graph based on the multiple attribute classes identified as related to the input query and the identified relative positions; and

assigning group numbers to each node within the connectivity graph, each group number corresponding to a distinct combination of values for the multiple attribute classes identified as being related to the input query.

Assignments (4)
CHANGE OF NAME Recorded Sep 19, 2025
From: MICROSTRATEGY INCORPORATED
To: STRATEGY INC
Reel/Frame 072909/0658 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT REEL/FRAME: 056647/0687, REEL/FRAME: 057435/0023, REEL/FRAME: 059256/0247, REEL/FRAME: 062794/0255 AND REEL/FRAME: 066663/0713 Recorded Sep 26, 2024
From: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, AS SUCCESSOR IN INTEREST TO U.S. BANK NATIONAL ASSOCIATION, IN ITS CAPACITY AS COLLATERAL AGENT FOR THE SECURED PARTIES
To: MICROSTRATEGY INCORPORATED; MICROSTRATEGY SERVICES CORPORATION
Reel/Frame 069065/0539 →
SECURITY INTEREST Recorded Jun 22, 2021
From: MICROSTRATEGY INCORPORATED
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 056647/0687 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 4, 2015
From: YE, ALEX; LI, BENJAMIN Z.
To: MICROSTRATEGY INCORPORATED
Reel/Frame 036957/0907 →