Allocation performance by query optimization
First Claim
1. A computer-implemented method for improving a performance of an allocation by query optimization, comprising:
- receiving a first query that specifies;
a calculation target expression that specifies a set of calculation target cells that consists of all cells in a multidimensional dataset (MDDS) that are associated with a member of each non-calculation dimension of the MDDS that is in a set of members and is associated with a calculation target member in a calculation dimension of the MDDS,wherein the set of calculation target cells is dividable into;
a set of non-empty calculation target cells that consists of each non-empty cell in the set of calculation target cells; and
a set of empty calculation target cells that consists of each empty cell in the set of calculation target cells;
a calculation expression that specifies that values in the set of calculation target cells are to be calculated from values in a set of calculation source cells that consists of all cells in the MDDS that are associated with a member of each non-calculation dimension of the MDDS that is in the set of members and is associated with a calculation source member in the calculation dimension of the MDDS; and
a first selection expression that specifies a selected set of cells in the MDDS by specifying that the selected set of cells is derivable by finding non-empty cells in the set of calculation target cells;
in response to receiving the first query, symbolically analyzing the calculation expression to identify the calculation source member;
after symbolically analyzing the calculation expression, using the first query and the identified calculation source member to generate a second query that specifies;
the calculation target expression;
the calculation expression; and
a second selection expression that specifies the selected set of cells in the MDDS by specifying that the set of non-empty calculation target cells is derivable by computing a cross join of;
a non-empty cross join of the members in the set of members; and
the calculation target member;
executing the second query to obtain values in the selected set of cells by;
computing the non-empty cross join of the members in the set of members, thereby computing a first set of tuples that identify cells in the MDDS;
wherein each tuple in the first set of tuples specifies a member in the set of members of each of the non-calculation dimensions; and
wherein no cell indicated by a tuple in the first set of tuples is empty;
computing the cross join of the first set of tuples and the calculation target member, thereby computing a second set of tuples that identify all cells in the set of non-empty calculation target cells;
using the calculation expression to calculate values in the set of non-empty calculation target cells, thereby obtaining the values in the selected set of cells; and
after obtaining the values in the selected set of cells, returning the values in the selected set of cells.
2 Assignments
0 Petitions
Accused Products
Abstract
Allocation performance is enhanced by optimizing queries associated with the allocation. A sparse definition space for a calculation is translated into a dense space for performing the calculation for efficient resource utilization. A calculation expression is symbolically analyzed to determine a relationship between non-zero calculated results and non-zero cells in the input data. From this relationship the regions on which the calculated results are non-zero are obtained by examining the input data. The calculation space is thus reduced to a smaller one. The resulting calculation space is no longer sparse and enables efficient performance of allocation.
-
Citations
17 Claims
-
1. A computer-implemented method for improving a performance of an allocation by query optimization, comprising:
-
receiving a first query that specifies; a calculation target expression that specifies a set of calculation target cells that consists of all cells in a multidimensional dataset (MDDS) that are associated with a member of each non-calculation dimension of the MDDS that is in a set of members and is associated with a calculation target member in a calculation dimension of the MDDS, wherein the set of calculation target cells is dividable into; a set of non-empty calculation target cells that consists of each non-empty cell in the set of calculation target cells; and a set of empty calculation target cells that consists of each empty cell in the set of calculation target cells; a calculation expression that specifies that values in the set of calculation target cells are to be calculated from values in a set of calculation source cells that consists of all cells in the MDDS that are associated with a member of each non-calculation dimension of the MDDS that is in the set of members and is associated with a calculation source member in the calculation dimension of the MDDS; and a first selection expression that specifies a selected set of cells in the MDDS by specifying that the selected set of cells is derivable by finding non-empty cells in the set of calculation target cells; in response to receiving the first query, symbolically analyzing the calculation expression to identify the calculation source member; after symbolically analyzing the calculation expression, using the first query and the identified calculation source member to generate a second query that specifies; the calculation target expression; the calculation expression; and a second selection expression that specifies the selected set of cells in the MDDS by specifying that the set of non-empty calculation target cells is derivable by computing a cross join of; a non-empty cross join of the members in the set of members; and the calculation target member; executing the second query to obtain values in the selected set of cells by; computing the non-empty cross join of the members in the set of members, thereby computing a first set of tuples that identify cells in the MDDS; wherein each tuple in the first set of tuples specifies a member in the set of members of each of the non-calculation dimensions; and wherein no cell indicated by a tuple in the first set of tuples is empty; computing the cross join of the first set of tuples and the calculation target member, thereby computing a second set of tuples that identify all cells in the set of non-empty calculation target cells; using the calculation expression to calculate values in the set of non-empty calculation target cells, thereby obtaining the values in the selected set of cells; and after obtaining the values in the selected set of cells, returning the values in the selected set of cells. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A computer-readable storage medium having computer instructions for an allocation in a multi-dimensional business application, the instructions causing a computer that executes the instructions to:
-
receive a first query that specifies; a calculation target expression that specifies a set of calculation target cells that consists of all cells in a multidimensional dataset (MDDS) that are associated with a member of each non-calculation dimension of the MDDS that is in a set of members and is associated with a calculation target member in a calculation dimension of the MDDS, wherein the set of calculation target cells is dividable into; a set of non-empty calculation target cells that consists of each non-empty cell in the set of calculation target cells; and a set of empty calculation target cells that consists of each empty cell in the set of calculation target cells; a calculation expression that specifies that values in the set of calculation target cells are to be calculated from values in a set of calculation source cells that consists of all cells in the MDDS that are associated with a member of each non-calculation dimension of the MDDS that is in the set of members and is associated with a calculation source member in the calculation dimension of the MDDS; and a first selection expression that specifies a selected set of cells in the MDDS by specifying that the selected set of cells is derivable by finding non-empty cells in the set of calculation target cells; symbolically analyze the calculation expression to identify the calculation source member in response to receiving the first query; after symbolically analyzing the calculation expression, use the first query and the identified calculation source member to generate a second query that specifies; the calculation target expression; the calculation expression; and a second selection expression that specifies the selected set of cells in the MDDS by specifying that the set of non-empty calculation target cells is derivable by computing a cross join of; a non-empty cross join of the members in the set of members; and the calculation target member; execute the second query to obtain values of the selected set of cells by; computing the non-empty cross join of the members in the set of members, thereby computing a first set of tuples that identify cells in the MDDS; wherein each tuple in the first set of tuples specifies a member in the set of members of each of the non-calculation dimensions; and wherein no cell indicated by a tuple in the first set of tuples is empty; computing the cross join of the first set of tuples and the calculation target member, thereby computing a second set of tuples that identify all cells in the set of non-empty calculation target cells; using the calculation expression to calculate values in the set of non-empty calculation target cells; and returning the calculated values in the set of non-empty calculation target cells as the values of the selected set of cells. - View Dependent Claims (10, 11, 12, 13, 14)
-
-
15. A system for performing an allocation in a multi-dimensional dataset (MDDS), the system comprising:
-
a database configured to store a MDDS, wherein the MDDS includes data to be used for the allocation; a processor configured to; receive a first query that conforms to a Multi-Dimensional eXpression (MDX) standard, the first query specifying; a “
WITH”
clause that includes a calculation target expression that specifies a set of calculation target cells that consists of all cells in a MDDS that are associated with a member of each non-calculation dimension of the MDDS that is in a set of members and is associated with a calculation target member in a calculation dimension of the MDDS,wherein the set of calculation target cells is dividable into;
a set of non-empty calculation target cells that consists of each non-empty cell in the set of calculation target cells; and
a set of empty calculation target cells that consists of each empty cell in the set of calculation target cells;an “
AS”
clause that includes a calculation expression that specifies that values in the set of calculation target cells are to be calculated from values in a set of calculation source cells that consists of all cells in the MDDS that are associated with a member of each non-calculation dimension of the MDDS that is in the set of members and is associated with a calculation source member in the calculation dimension of the MDDS; anda “
SELECT”
clause that includes a first selection expression that specifies a selected set of cells in the MDDS by specifying that the selected set of cells is derivable by finding non-empty cells in the set of calculation target cells;symbolically analyze the calculation expression to identify the calculation source member in response to receiving the first query; after symbolically analyzing the calculation expression, use the first query and the identified calculation source member to generate a second query that conforms to the MDX standard, the second query specifying; a “
WITH”
clause that includes the calculation target expression;an “
AS”
clause that includes the calculation expression; anda “
SELECT”
clause that includes a second selection expression that specifies the selected set of cells by specifying that the set of non-empty calculation target cells is derivable by computing a cross join of;a non-empty cross join of the members in the set of members; and the calculation target member; execute the second query by; computing the non-empty cross join of the members in the set of members, thereby computing a first set of tuples that identify cells in the MDDS, wherein each tuple in the first set of tuples specifies a member in the set of members of each of the non-calculation dimensions; and wherein no cell indicated by a tuple in the first set of tuples is empty; and computing the cross join of the first set of tuples and the calculation target member, thereby computing a second set of tuples that identify all cells in the set of non-empty calculation target cells; using the calculation expression to calculate values in the set of non-empty calculation target cells; and returning the calculated values in the set of non-empty calculation target cells. - View Dependent Claims (16, 17)
-
Specification