US20070055661A1 - Compile-time optimizations of queries with SQL spreadsheet - Google Patents

Compile-time optimizations of queries with SQL spreadsheet Download PDF

Info

Publication number
US20070055661A1
US20070055661A1 US11/592,470 US59247006A US2007055661A1 US 20070055661 A1 US20070055661 A1 US 20070055661A1 US 59247006 A US59247006 A US 59247006A US 2007055661 A1 US2007055661 A1 US 2007055661A1
Authority
US
United States
Prior art keywords
formulas
query
formula
processors
dimension
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US11/592,470
Other versions
US7809712B2 (en
Inventor
Andrew Witkowski
Srikanth Bellamkonda
Tolga Bozkaya
Abhinav Gupta
Nathan Folkert
Sankar Subramanian
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/886,839 external-priority patent/US6985895B2/en
Application filed by Individual filed Critical Individual
Priority to US11/592,470 priority Critical patent/US7809712B2/en
Publication of US20070055661A1 publication Critical patent/US20070055661A1/en
Application granted granted Critical
Publication of US7809712B2 publication Critical patent/US7809712B2/en
Adjusted expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/177Editing, e.g. inserting or deleting of tables; using ruled lines
    • G06F40/18Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • G06F16/244Grouping and aggregation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99935Query augmenting and refining, e.g. inexact access

Definitions

  • the present invention relates to optimizing the evaluation of queries, and in particular, optimizing the evaluation of queries that include spreadsheet clauses.
  • a user can enter business data, define formulas over it using two-dimensional array abstractions, construct simultaneous equations with recursive models, pivot data and compute aggregates for selected cells, and apply a rich set of business functions. They also provide a flexible user interface with graphs, reports, etc.
  • RDBMS Relational Database Management System
  • MOLAP Multidimensional OnLine Analytical Processing
  • Spreadsheets have their own problems. They offer two dimensional “row-column” addressing, i.e. physical addressing using row and column offsets. Hence, it is hard to build a symbolic model where formulas reference actual data values. A significant scalability problem exists when either the data set is large (can one define a spreadsheet with terabytes of sales data?) or the number of formulas is significant (can one process tens of thousands of spreadsheet formulas in parallel?). In collaborative analysis with multiple spreadsheets, consolidation is difficult as it is nearly impossible to get a complete picture of the business by querying multiple spreadsheets each using its own layout and placement of data. There is no standard metadata or a unified abstraction inter-relating them akin to RDBMS dictionary tables and RDBMS relations.
  • SQL has been extended to include language constructs, referred to herein as spreadsheet extensions, that allow relations to be treated as n-dimensional arrays and that allow formulas to be defined in terms of the n-dimensional arrays.
  • Formulas are encapsulated in a new SQL clause, referred to as a spreadsheet clause, that supports partitioning of the data.
  • the spreadsheet extensions enable RDBMs to provide many of the advantages inherent to both RDBMS and spreadsheets.
  • RDBMs have a component, called a query optimizer, that rewrites queries into forms that may be evaluated more efficiently and that develops execution plans that are optimized for efficient execution.
  • query refers to a database statement that conforms to database language, such as SQL, and includes database statements that specify operations to modify data.
  • Query optimizers focus on determining efficient join orders and choosing optimal access methods, but largely disregard optimization of complex numerical formulas written in spreadsheet extensions. Unfortunately, a query that contains formulas can contain many of them. Because query optimizers ignore formulas, a query that contains them is evaluated much less efficiently than it could be.
  • FIG. 1 shows pseudo-code describing a procedure used for ordering the execution of formulas in order to minimize scanning according to an embodiment of the present invention.
  • FIG. 2 is a diagram depicting a node graph that represents dependency between formulas according to an embodiment of the present invention.
  • FIG. 3 shows pseudo-code describing a procedure used for pruning formulas according to an embodiment of the present invention.
  • FIGS. 4A and 4B show a flow chart for procedures used to determine whether a predicate may be pushed down into a spreadsheet clause requiring an UPSERT operation.
  • FIG. 5 is a diagram showing a classification of spreadsheets based on the evaluation order and dependency analysis and identifies the execution procedure for the classes of spreadsheets.
  • FIG. 6 shows pseudo-code describing a procedure used for evaluating acyclic formulas.
  • FIG. 7 is a block diagram depicting a computer system which may be used to implement an embodiment of the present invention.
  • n-dimensional arrays Under the spreadsheet extensions for n-dimensional arrays, relations can be viewed as n-dimensional arrays, and a formula can be defined over their cells.
  • Cell addressing can be symbolic using dimensional keys or it can be positional.
  • the formulas can automatically be ordered based on the dependencies between the cells; recursive references and convergence conditions are supported, providing for a recursive execution model.
  • OLAP Online Analytical Processing
  • Formulas are encapsulated in a new SQL query clause that supports partitioning of the data. This allows evaluation of formulas independently for each partition providing a natural parallelization of execution. Formulas support UPSERT and UPDATE semantics as well as correlation between their left and right side. This allows simulation of the effect of multiple joins and UNIONs using a single access structure.
  • the partitioning of data provides a way to parallelize the computation of spreadsheet and to provide and improve scalability. Even if the partitioning is not explicitly specified in the spreadsheet clause, the database optimizer can automatically infer the partitioning in some cases.
  • Efficient hash based access structures on relations can be used for symbolic array addressing, enabling fast computation of formulas.
  • formulas whose results are not referenced in outer blocks can be removed from the spreadsheet clause, thus removing unnecessary computations.
  • the predicates from other query blocks can be moved inside query blocks with spreadsheets clauses, thus considerably reducing the amount of data to be processed. Conditions for validity of this transformation are given.
  • Section I provides SQL extensions for spreadsheets.
  • Section II provides motivating examples and comparisons to equivalent processing in SQL and MOLAP engines.
  • Section III describes analysis of the spreadsheet clause and query optimizations with spreadsheets.
  • Section IV discusses execution models.
  • OLAP applications divide relational attributes into dimensions and measures. To model that the new spreadsheet clause is used. It identifies, within the query result, PARTITION BY, DIMENSION BY and MEASURES columns.
  • the PARTITION BY columns divide the relation into disjoint subsets.
  • the DIMENSION BY columns uniquely identify a row within each partition, which we call a cell, and serve as an index to the MEASURES columns.
  • the value of measure in a cell may be referred to herein as the value of the cell.
  • the MEASURES columns identify expressions computed by the spreadsheet. Following this, there is a sequence of formulas, each describing a computation on cells.
  • the abbreviations PBY, DBY, and MEA are used herein in lieu of the terms PARTITION BY, DIMENSION BY, and MEASURES.
  • the structure of the spreadsheet clause is: ⁇ SQL query block constructs> SPREADSHEET PBY (cols) DBY (cols) MEA (cols) ⁇ processing options> ( ⁇ formula>, ⁇ formula>,.., ⁇ formula> )
  • the spreadsheet clause is evaluated after joins, aggregations, window functions, but before final projection and the ORDER BY clause.
  • the clause PBY (cols) specifies the PBY columns
  • the clause DBY (cols) specify the DBY columns
  • the clause MEA (cols) specifies the measure columns.
  • the keyword MODEL is used in lieu of the keyword SPREADSHEET.
  • the spreadsheet clause has the following structure: ⁇ SQL query block constructs> MODEL PBY (cols) DBY (cols) MEA (cols) ⁇ processing options> ( ⁇ formula>, ⁇ formula>,.., ⁇ formula> )
  • Cells are referenced using a familiar array notation.
  • Evaluating a formula refers to the operations that are performed to compute the expressions on the right side and assigning the results of the computation to the target cells.
  • the left side of a formula defines calculations which can span a range of cells.
  • a new function currentv( ) (referred to as cv( ) which stands for current value) carries the value of a dimension from the left side to the right side thus effectively serving as a join between the right and left side.
  • the * operator denotes all values in the dimension.
  • Formulas may specify a range of cells to be updated.
  • a formula referring to multiple cells on the left side is called an existential formula.
  • the result may be order dependent.
  • An existential formula defines a range of dimension values on left side. Upsert mode is not allowed with an existential formula because a range of dimension values may belong to a continuous domain and it is not always possible to find out the individual set of values.
  • Reference Spreadsheets OLAP applications frequently deal, in a single query, with objects of different dimensionality.
  • the sales table may have region(r), product(p), and time(t) dimensions, while the budget allocation table has only the region(r) dimension.
  • a query block can have, in addition to the main spreadsheet, multiple, read-only reference spreadsheets which are n-dimensional arrays defined over other query blocks.
  • Reference spreadsheets akin to main spreadsheets, have DBY and MEA clauses indicating their dimensions and measures respectively. For example, assume a budget table budget(r,p) containing predictions p for sales increase for each region r. The following query predicts sales in 2002 in region ‘west’ scaling them using prediction p from the budget table.
  • the first formula is evaluated before the last formula.
  • a processing option provided for such scenarios is AUTOMATIC ORDER.
  • SPREADSHEET PBY(r) DBY (p, t) MEA s
  • the first formula depends on the second and consequently the latter is evaluated first.
  • the ITERATE (n) option requests iteration of the formulas ‘n’ times.
  • the optional UNTIL condition will stop the iteration when the ⁇ condition> has been met upto a maximum of “n” iterations as specified by ITERATE(n).
  • the ⁇ condition> can reference cells before and after the iteration facilitating definition of convergence conditions.
  • a helper function previous ( ⁇ cell>) returns the value of ⁇ cell> at the start of each iteration.
  • the regr_slope( ) aggregate is an ANSI SQL function that denotes linear regression slope.
  • formula F 1 would require an aggregate subquery plus a join to the fact table f, formula F 2 a double self-join of the fact table, formula F 3 a triple self join of the fact table, and formula F 4 a union operation.
  • Such a query would not only be difficult to generate but would also result in an inefficient execution as compared to the query with spreadsheet. The latter needs to scan data only once to generate a point addressable access structure like hash table or an index.
  • the access structure can be used for random, multiple accesses along the time dimension as opposed to a scan to find out the rows satisfying the predicate.
  • Formulas F 2 , F 3 , and F 4 can use the structure directly. The structure is then used multiple times giving a performance advantage over multiple joins required by equivalent ANSI SQL.
  • spreadsheet clauses can contain hundreds of formulas and consequently building a single point access structure in place of hundreds of joins provides a significant performance advantage.
  • the spreadsheet analysis determines the order of evaluation of formulas, prunes formulas whose results are fully filtered out by outer queries, restricts the formulas whose results are partially filtered, migrates predicates from outer queries into inner WHERE clause to limit the data processed by the spreadsheet, and generates a filter condition to identify the cells that are required throughout the evaluation of the spreadsheet formulas.
  • the analysis also determines one of two types of execution methods: one for acyclic and one for (potentially) cyclic formulas. Because of complex predicates in formulas, analysis cannot always ascertain acyclicity of dependency relationships among the formulas in the spreadsheet. Hence, sometimes the cylic execution method is used for acyclic spreadsheets, which is expensive compared to the acyclic method.
  • Formula dependencies and Execution Order The order of evaluation of formulas is determined from their dependency graph.
  • Formula F 1 depends on F 2 (written F 2 ⁇ F 1 ) if a cell evaluated by F 2 is used by F 1 .
  • F 1 :s[’video’,2000] s[’tv’, 2000]+s[’vcr’, 2000]
  • F 2 :s[’vcr’, 2000] s[’vcr’,1998]+s[’vcr’, 1999]
  • F 2 ⁇ F requires a cell s[‘vcr’,2000] computed by F 2 .
  • dependency ( ⁇ ) relation
  • the cells that are referenced on its right side R(F) and cells that are modified on its left side L(F) are determined.
  • F 2 ⁇ F 1 iff R(F 1 ) intersects L(F 2 ).
  • the dependency ( ⁇ ) relation results in a graph with formulas as nodes and their dependency relationship as directed edges. The graph is analyzed for (partial) ordering.
  • the path through the partial order with the maximum number of scans represents the minimum number of total scans required for evaluation of the spreadsheet, since they are all related by the partial order. If the graph is an acyclic graph (i.e. a partial order of formulas exists), then the number of levels containing scans can be minimized to this value.
  • GenLevels shown in FIG. 1 generates the levels such that the number of scans is minimized.
  • G(F, E) be the graph of the ⁇ relation where F are formulas and E the ⁇ edges.
  • a formula with no incoming edges is referred to as a source and formulas with only single cell references are referred to as single_refs:
  • FIG. 2 shows spreadsheet graph 201 , the spreadsheet graph for the above formula.
  • Spreadsheet graph 201 has one edge: F 3 ⁇ F 2 .
  • the procedure will assign the point reference F 3 to level 1 and the scan F 2 to level 2 , but will delay assigning the scan F 1 until level 2 so that F 1 and F 2 can share a single scan.
  • the GenLevels procedure presented simplifies the cyclic case.
  • the graph is analyzed for strongly connected components using procedures in [15].
  • the cyclic subgraphs can then be isolated from acyclic parts of the graph and from other cyclic subgraphs. This is important because the computational complexity of cyclic evaluation is proportional to the total number of rows updated or upserted in a cycle (see auto-acyclic procedure described in Section 5 and FIG. 6 ).
  • the cyclic subgraph can be broken by removing formulas from the subgraph and assigning them to individual levels in the same order as the formulas appear in the subgraph until the subgraph is exhausted.
  • Pruning Formulas To encapsulate common computations, applications will generate views containing spreadsheets with thousands of formulas. Users querying these views will likely require only a subset of the result, putting predicates over the views. This gives us an opportunity to prune formulas that compute cells discarded by these predicates.
  • a sink is a formula with no outgoing edge, i.e., a formula no other formula depends on.
  • Pruning formulas alone is not sufficient to avoid unnecessary computations during spreadsheet evaluation.
  • the results computed by a formula may be partially filtered out in the outer query block.
  • Pushing predicates through spreadsheet clauses is an important optimization and has been incorporated into queries with spreadsheets.
  • Three types of pushing optimizations can be performed: pushing on PBY and independent DBY dimensions, pushing based on bounding rectangle analysis and pushing through reference spreadsheets.
  • Pushing can be extended to independent dimensions.
  • a dimension d is called an independent dimension if, for every formula, the value of d referenced on the the right side is the same as the value of d on the left side.
  • the left side of F 1 refers to the same values of p as the right side.
  • the same is true for formula F 2 as well, thereby making p an independent dimension.
  • Dimension t is not an independent dimension.
  • independent dimensions can be functionally equivalent to the partitioning dimensions and may be moved from the DBY to the PBY clause.
  • An independent dimension (d) can be moved from DBY to PBY clause when:
  • the outer predicates on the DBY expressions which are not independent can also be pushed in but require extending them so that they do not filter out the cells referenced by the right sides of the formulas.
  • a bounding rectangle for the entire spreadsheet is obtained using methods described in [8] and [3], which is a union of bounding rectangles for each formula, which in this case is p in (‘vcr’, ‘dvd’) and t in (1997, 1998, 1999).
  • the predicates on DBY columns from the outer query are extended with the corresponding predicates from the spreadsheet bounding rectangle, and these are pushed into the query.
  • the predicates on DBY expressions in the outer query block are kept in place unless the pushdown filter is the same as the outer filter and there are no upsert formulas in the spreadsheet.
  • time_dt the primary key of time dimension time_dt is month m and the table time_dt stores the corresponding month a year ago as m_yago, and the corresponding month a quarter ago as m_qago.
  • Quarter ago of 1999-01 is 1998-10 (see Table 1) TABLE 1 Mapping between m and m_yago/m_qago m m_yago m_qago 1999-01 1998-01 1998-10 1999-02 1998-02 1998-11 1999-03 1998-03 1998-12
  • An analyst wants to compute for a product ‘dvd’ and months (‘1999-01’, ‘1999-03’) the ratio of that month's sales to the sales in corresponding months a year and quarter ago respectively (r_yago and r_qago).
  • the reference spreadsheet in this case serves as a one-dimensional look-up table translating month m into the corresponding month a year ago m_yago and a quarter ago m_qago.
  • An alternative formulation of the query using ANSI SQL requires the joins f> ⁇ time_dt> ⁇ f> ⁇ f, where the first join gives the month values a year and a quarter ago for each row in a fact table and the other two joins given the sales values in the same month, a quarter ago and a year ago respectively.
  • the number of joins is reduced to one.
  • m is neither an independent dimension nor can bounding rectangles be determined for it as the values m_yago and m_qago are unknown. Consequently, a restriction on m cannot be pushed-in resulting in all time periods pumped to the spreadsheet out of which all except 1999-01 and 1999-03 are subsequently discarded in the outer query.
  • Call dimension d a functionally independent dimension if for every formula, the value of d referenced on the right side is either the same as the value of d on the left side or a function of the value of d on the left side via a reference spreadsheet.
  • m is a functionally independent dimension, as the right side uses m directly or uses a function of the value of m on the left side: m_yago[cv(m)] and m_qago[cv(m)].
  • transformations may be used to push predicates through functionally independent dimensions.
  • ref-subquery pushing transformation added into the inner block a subquery predicate which selects all values needed by the spreadsheet and the outer query.
  • the transformation is similar to the magic set transformation which pushes a query derived from outer predicates into the inner block.
  • the outer query needs m IN (‘1999-01’, ‘1999-03’) (i.e. the outer query requires the values in m that satisfy the predicate m IN (‘1999-01’, ‘1999-03’)), and the spreadsheet needs these values plus their corresponding m_yago and m_qago values from the reference spreadsheet.
  • predicates are constructed by executing the reference spreadsheet query, obtaining the referenced values and building predicates on the dimension, and finally disjuncting them with the outer predicates.
  • the following is executed SELECT DISTINCT m_yago, m_qago FROM time_dt WHERE m IN (‘1999-01’, ‘1999-03’) to obtain the values for m_yago and m_qago corresponding to m IN (‘1999-01’, ‘1999-03’).
  • m_yago (‘1998-01’, ‘1998-03’) and m_qago is (‘1998-10’, ‘1998-12’) i.e., the first and third month of the previous quarter.
  • formula unfolding formulas are transformed by replacing the reference spreadsheet with its values.
  • Pushdown of dimension predicates in the presence of Upsert rules for a spreadsheet with PBY clause When a spreadsheet clause has a PBY clause and upsert rules, pushing predicates based on bounding rectangle analysis can be done under certain conditions. There is a possibility that the pushed filter eliminates an entire partition and upsert of new cells for that partition never take place, leaving rows missing in the result of the query block that has the spreadsheet. The following query illustrates this possibility.
  • the predicate (p IN (‘dvd’, ‘vcr’)) is a candidate for pushing down.
  • Predicate pushdown (based on minimum bounding rectangle analysis) through spreadsheets with a PBY clause and upsert rules can be performed under certain conditions.
  • the pushdown predicate generated based on minimum bounding rectangle analysis covers all values referenced on the right side of rules and the ones that are selected in the filter of the outer query block. If the pushdown predicate can eliminate an entire partition, then only the cells that are upserted by the spreadsheet would be returned to the outer query block for that partition. If one can determine that the upserted cells for an empty partition are guaranteed to be filtered out, than it does not matter whether the rows for a partition are filtered out before or after spreadsheet computation. In that case, predicate pushdown on DBY columns can be done.
  • the pushdown predicate for p is (p in (‘dvd’, ‘vcr’, ‘tv’)).
  • region_x which does not have any tv or vcr or dvd sales.
  • the row is filtered out by the outer predicate (s is NOT NULL).
  • the partition ‘region_x’ is guaranteed to be eliminated from the result. In this case, the predicate on p can be pushed down.
  • a determination of whether it is correct to perform a predicate pushdown for dimensions through upserts can be performed using the procedures FindNullableMeasure, shown in FIG. 4A , and NullableMeasFiltered, shown in FIG. 4B .
  • FindNullableMeasure performs an analyses of the rules to determine which upserted measures can be NULL.
  • NullableMeasFiltered performs a further analysis of the outer filter to determine if null values of these measures are filtered out by, for example, using a NOT NULL predicate.
  • the procedure analyzes the outer filter and returns TRUE if pushdown of dimension filters may be performed, FALSE otherwise.
  • the predicate for measure m, the predicate (m is NOT NULL) implies that m cannot be NULL, the predicate (m>0) implies that m cannot be NULL (since NULL value for m would not satisfy this), and the predicate (a>0) does not imply anything for m.
  • This query computes the projected sales of each product for every year to compare it with the actual sales figure.
  • the projected sales amount for a year is computed by multiplying the actual sales amount from the previous year with 1 plus the regression_slope for the actual sales values for the 5 previous years.
  • this query requires an expensive computation.
  • the right side of the rule is computed for each cell updated on the left side.
  • the right side has an aggregate function, which requires a full table scan of table t.
  • a full scan is performed for all the cells updated by the rule.
  • the query can be optimized by reducing the number of table scans.
  • the number of table scans can be reduced if it can be determined that aggregates on the right side of an existential rule can be evaluated using a sort in window function style instead of performing a scan per cell to update.
  • Window functions are described in detail in U.S. patent application Ser. No. 09/656,905, entitled Method for Minimizing the Number of Sorts Required for a Query Block Containing Window Functions, filed on Sep. 7, 2000 by Abhinav Gupta and issued as U.S. Pat. No. 6,389,410, the contents of which are incorporated herein by reference.
  • a single sort of the data is performed and the aggregates evaluated over the result of the sort using a single table scan. Specifically, the aggregate on the right side of the rule
  • This function performs just one sort and then a single table scan.
  • a query can be rewritten using window function style computation when (1) the left side and the right side of each formula in the spreadsheet clause does not depend on each other, i.e., the formula is not self cyclic, and (2) all aggregates on the right side of the formula can be evaluated in window function style computation.
  • the formulas with window function style computation are assigned to the same execution level if they can be evaluated using the same sort. Rewriting queries to use these window functions triggers existing optimizations performed for queries with window functions. Such optimizations involve grouping window functions into groups which can be satisfied with the same sort. This is done for spreadsheet rules which have been rewritten using window functions as well.
  • the hash access structure supports operations like probe, update, upsert, insert and scan of all records within a spreadsheet partition.
  • the hash access structure maintains records within a hash bucket clustered on PBY and DBY column values, thereby making the scan and probe on a spreadsheet partition efficient.
  • the number of first level partitions is chosen based on estimated size of data to be inserted into the access structure and the amount of available memory.
  • the goal is to fit second level hash tables for each first level partition in memory.
  • the spreadsheet partitions may be really big and there may not be enough memory to fit a partition.
  • a disk based hash table is built, and both a weighted LRU scheme for block replacement and pointer swizzling to make references lightweight is employed.
  • FIG. 5 shows classification of spreadsheets based on the evaluation order and dependency analysis and identifies the execution procedure for the classes of spreadsheets. There are three procedures: Auto-Acyclic, Auto-Cyclic & Sequential.
  • the Auto-Acyclic procedure (see FIG. 6 ) is taken when a complete and accurate dependency graph can be built and no cycles are detected in the dependency graph.
  • the above query makes sales forecasts for years 2002 and 2003.
  • the formulas are split into 2 levels.
  • the first level consists of the first 3 formulas, projecting sales for 2002, and the second level, dependent on the first level, consists of the last formula, projecting sales for 2003.
  • the procedure Auto-Acyclic evaluates formulas in the first level before evaluating formulas in the second level.
  • Auto-Cyclic Procedure There are also automatic order spreadsheets which are either cyclic, or have complex predicates that make the existence of cycles indeterminate.
  • the dependency analysis approximately groups the formulas into levels by finding sets of formulas comprising strongly connected components (SCCs—the largest union of intersecting cycles), and assigning the formulas in an SCC to consecutive levels.
  • SCCs strongly connected components
  • This flag can be set whenever the measure is referenced while evaluating a formula. Later update of a measure, for which the flag set, to a different value indicates that additional iterations are required to reach a fixed point. Similarly, an insert of a new cell (by an UPSERT formula) signals additional iterations. This technique will require resetting flags for each measure after each iteration—an expensive proposition. Hence, instead of a single flag, two flags are stored, each one being used in alternate iterations—as one of the flags is set, the other one can be cleared.
  • the spreadsheet is evaluated scalably by evaluating the formulas over partitions in parallel.
  • the data is distributed to Processing Elements (PE) based on the PBY columns so that each PE can work on partitions independent of other PEs.
  • PE Processing Elements
  • the distribution of partitions to PEs can be hash or range based on PBY columns.
  • the work of PEs is coordinated by a single process called the query coordinator.
  • DBY columns are included for data partitioning.
  • F2: s[*,2003] avg(s)[cv(p), t in (1999,2001)]
  • s[2002] avg(s)[t in (1998, 2000)]
  • s[2003] avg(s)[t in (1999, 2001)]
  • formulas are independent of the dimension column p. This can be done for any independent dimension—see Section III.
  • Partitioning on a larger set of columns results in better load balancing and processor utilization as parallelization takes place on both r and p. All PEs execute the same set of formulas but with different data sets. If the column corresponding to an independent dimension on the left side doesn't qualify all values of that dimension, (i.e., in our notation is not a “*”), it will not be possible to promote the independent dimension to PBY. This is because promoting to PBY would incorrectly update all values for that dimension. Instead, the independent dimension in the PBY clause is duplicated as well to get better parallelization.
  • UPSERT UPSERT
  • F3: s[*, 2003] 1.2*s[cv(p), 2002] )
  • hash_value_of_P_for_this_PE The value for hash_value_of_P_for_this_PE is passed to each PE by the query coordinator. Then each PE, before evaluating a non-existential formula, i.e., one which explicitly qualifies all dimensions would find the value for p and verify that the triggering condition holds. If so, the formula is executed, otherwise it is skipped.
  • FIG. 7 is a block diagram that illustrates a computer system 700 upon which an embodiment of the invention may be implemented.
  • Computer system 700 includes a bus 702 or other communication mechanism for communicating information, and a processor 704 coupled with bus 702 for processing information.
  • Computer system 700 also includes a main memory 706 , such as a random access memory (RAM) or other dynamic storage device, coupled to bus 702 for storing information and instructions to be executed by processor 704 .
  • Main memory 706 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 704 .
  • Computer system 700 further includes a read only memory (ROM) 708 or other static storage device coupled to bus 702 for storing static information and instructions for processor 704 .
  • ROM read only memory
  • a storage device 710 such as a magnetic disk or optical disk, is provided and coupled to bus 702 for storing information and instructions.
  • Computer system 700 may be coupled via bus 702 to a display 712 , such as a cathode ray tube (CRT), for displaying information to a computer user.
  • a display 712 such as a cathode ray tube (CRT)
  • An input device 714 is coupled to bus 702 for communicating information and command selections to processor 704 .
  • cursor control 716 is Another type of user input device
  • cursor control 716 such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 704 and for controlling cursor movement on display 712 .
  • This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.
  • the invention is related to the use of computer system 700 for implementing the techniques described herein. According to one embodiment of the invention, those techniques are performed by computer system 700 in response to processor 704 executing one or more sequences of one or more instructions contained in main memory 706 . Such instructions may be read into main memory 706 from another computer-readable medium, such as storage device 710 . Execution of the sequences of instructions contained in main memory 706 causes processor 704 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and software.
  • Non-volatile media includes, for example, optical or magnetic disks, such as storage device 710 .
  • Volatile media includes dynamic memory, such as main memory 706 .
  • Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 702 . Transmission media can also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications.
  • Computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punchcards, papertape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read.
  • Various forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to processor 704 for execution.
  • the instructions may initially be carried on a magnetic disk of a remote computer.
  • the remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem.
  • a modem local to computer system 700 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal.
  • An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus 702 .
  • Bus 702 carries the data to main memory 706 , from which processor 704 retrieves and executes the instructions.
  • the instructions received by main memory 706 may optionally be stored on storage device 710 either before or after execution by processor 704 .
  • Computer system 700 also includes a communication interface 718 coupled to bus 702 .
  • Communication interface 718 provides a two-way data communication coupling to a network link 720 that is connected to a local network 722 .
  • communication interface 718 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line.
  • ISDN integrated services digital network
  • communication interface 718 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN.
  • LAN local area network
  • Wireless links may also be implemented.
  • communication interface 718 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
  • Network link 720 typically provides data communication through one or more networks to other data devices.
  • network link 720 may provide a connection through local network 722 to a host computer 724 or to data equipment operated by an Internet Service Provider (ISP) 726 .
  • ISP 726 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 728 .
  • Internet 728 uses electrical, electromagnetic or optical signals that carry digital data streams.
  • the signals through the various networks and the signals on network link 720 and through communication interface 718 which carry the digital data to and from computer system 700 , are exemplary forms of carrier waves transporting the information.
  • Computer system 700 can send messages and receive data, including program code, through the network(s), network link 720 and communication interface 718 .
  • a server 730 might transmit a requested code for an application program through Internet 728 , ISP 726 , local network 722 and communication interface 718 .
  • the received code may be executed by processor 704 as it is received, and/or stored in storage device 710 , or other non-volatile storage for later execution. In this manner, computer system 700 may obtain application code in the form of a carrier wave.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Described herein are optimizations and execution strategies for spreadsheet extensions to SQL. The partitioning of data, as specified in a spreadsheet clause, provides a way to parallelize the computation of spreadsheet and to provide and improve scalability. Even if the partitioning is not explicitly specified in the spreadsheet clause, the database optimizer can automatically infer the partitioning in some cases. Efficient hash based access structures on relations can be used for symbolic array addressing, enabling fast computation of formulas. When rewriting SQL statements, formulas whose results are not referenced in outer blocks can be removed from the spreadsheet clause, thus removing unnecessary computations. The predicates from other query blocks can be moved inside query blocks with spreadsheets clauses, thus considerably reducing the amount of data to be processed. Conditions for validity of this transformation are given.

Description

    PRIORITY CLAIM
  • The present application is a divisional of U.S. patent application Ser. No. 10/704,192, entitled “COMPILE-TIME OPTIMIZATIONS OF QUERIES WITH SQL SPREADSHEET”, filed by Andrew Witkowski et al. on Nov. 6, 2003, which application is a continuation-in-part of U.S. patent application Ser. No. 09/886,839, entitled “PERFORMING SPREADSHEET-LIKE CALCULATIONS IN A DATABASE SYSTEM”, filed on Jun. 20, 2001 by Andrew Witkowski et al., now U.S. Pat. No. 6,985,895 issued Jan. 10, 2006, and which application also claims priority to U.S. Provisional Application No. 60/424,957, entitled “OPTIMIZATIONS OF QUERIES WITH SQL SPREADSHEET”, filed on Nov. 7, 2002 by Andrew Witkowski et al. The entire contents of all previously filed applications referenced in this paragraph are hereby incorporated by reference for all purposes as if fully set forth herein. The present application claims priority to all previously filed applications referenced in this paragraph.
  • FIELD OF THE INVENTION
  • The present invention relates to optimizing the evaluation of queries, and in particular, optimizing the evaluation of queries that include spreadsheet clauses.
  • BACKGROUND OF THE INVENTION
  • The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
  • One of the most successful analytical tools is a spreadsheet. A user can enter business data, define formulas over it using two-dimensional array abstractions, construct simultaneous equations with recursive models, pivot data and compute aggregates for selected cells, and apply a rich set of business functions. They also provide a flexible user interface with graphs, reports, etc.
  • Unfortunately, analytical usefulness of the RDBMS (Relational Database Management System) has not measured up to that of spreadsheets or specialized MOLAP (Multidimensional OnLine Analytical Processing) tools. It is cumbersome and in most cases inefficient to perform array-like calculations in SQL—a fundamental problem resulting from lack of language constructs to treat relations as arrays and to define formulas over them and a lack of efficient random access methods for inter-row calculations.
  • Spreadsheets, on the other hand, have their own problems. They offer two dimensional “row-column” addressing, i.e. physical addressing using row and column offsets. Hence, it is hard to build a symbolic model where formulas reference actual data values. A significant scalability problem exists when either the data set is large (can one define a spreadsheet with terabytes of sales data?) or the number of formulas is significant (can one process tens of thousands of spreadsheet formulas in parallel?). In collaborative analysis with multiple spreadsheets, consolidation is difficult as it is nearly impossible to get a complete picture of the business by querying multiple spreadsheets each using its own layout and placement of data. There is no standard metadata or a unified abstraction inter-relating them akin to RDBMS dictionary tables and RDBMS relations.
  • To address gaps left by spreadsheets or by RDBMS, SQL has been extended to include language constructs, referred to herein as spreadsheet extensions, that allow relations to be treated as n-dimensional arrays and that allow formulas to be defined in terms of the n-dimensional arrays. Formulas are encapsulated in a new SQL clause, referred to as a spreadsheet clause, that supports partitioning of the data. The spreadsheet extensions enable RDBMs to provide many of the advantages inherent to both RDBMS and spreadsheets.
  • To execute SQL statements more efficiently, RDBMs have a component, called a query optimizer, that rewrites queries into forms that may be evaluated more efficiently and that develops execution plans that are optimized for efficient execution. (The term query as used herein refers to a database statement that conforms to database language, such as SQL, and includes database statements that specify operations to modify data.) Query optimizers focus on determining efficient join orders and choosing optimal access methods, but largely disregard optimization of complex numerical formulas written in spreadsheet extensions. Unfortunately, a query that contains formulas can contain many of them. Because query optimizers ignore formulas, a query that contains them is evaluated much less efficiently than it could be.
  • Based on the foregoing, there is clearly a need for techniques that optimize queries that contain spreadsheet extensions.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
  • FIG. 1 shows pseudo-code describing a procedure used for ordering the execution of formulas in order to minimize scanning according to an embodiment of the present invention.
  • FIG. 2 is a diagram depicting a node graph that represents dependency between formulas according to an embodiment of the present invention.
  • FIG. 3 shows pseudo-code describing a procedure used for pruning formulas according to an embodiment of the present invention.
  • FIGS. 4A and 4B show a flow chart for procedures used to determine whether a predicate may be pushed down into a spreadsheet clause requiring an UPSERT operation.
  • FIG. 5 is a diagram showing a classification of spreadsheets based on the evaluation order and dependency analysis and identifies the execution procedure for the classes of spreadsheets.
  • FIG. 6 shows pseudo-code describing a procedure used for evaluating acyclic formulas.
  • FIG. 7 is a block diagram depicting a computer system which may be used to implement an embodiment of the present invention.
  • DETAILED DESCRIPTION OF THE INVENTION
  • A method and apparatus for optimizing the evaluation of spreadsheet queries is described. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
  • Overview
  • Under the spreadsheet extensions for n-dimensional arrays, relations can be viewed as n-dimensional arrays, and a formula can be defined over their cells. Cell addressing can be symbolic using dimensional keys or it can be positional. Similar to spreadsheets, the formulas can automatically be ordered based on the dependencies between the cells; recursive references and convergence conditions are supported, providing for a recursive execution model. OLAP (“Online Analytical Processing”) applications frequently fill gaps in sparse data, an operation called densification which is difficult in ANSI SQL, but natural in the proposed SQL-spreadsheet. Formulas are encapsulated in a new SQL query clause that supports partitioning of the data. This allows evaluation of formulas independently for each partition providing a natural parallelization of execution. Formulas support UPSERT and UPDATE semantics as well as correlation between their left and right side. This allows simulation of the effect of multiple joins and UNIONs using a single access structure.
  • Described herein are optimizations and execution strategies for the spreadsheet extensions. The partitioning of data, as specified in a spreadsheet clause, provides a way to parallelize the computation of spreadsheet and to provide and improve scalability. Even if the partitioning is not explicitly specified in the spreadsheet clause, the database optimizer can automatically infer the partitioning in some cases. Efficient hash based access structures on relations can be used for symbolic array addressing, enabling fast computation of formulas. When rewriting SQL statements, formulas whose results are not referenced in outer blocks can be removed from the spreadsheet clause, thus removing unnecessary computations. The predicates from other query blocks can be moved inside query blocks with spreadsheets clauses, thus considerably reducing the amount of data to be processed. Conditions for validity of this transformation are given.
  • The following description paper is organized as follows. Section I provides SQL extensions for spreadsheets. Section II provides motivating examples and comparisons to equivalent processing in SQL and MOLAP engines. Section III describes analysis of the spreadsheet clause and query optimizations with spreadsheets. Section IV discusses execution models.
  • I. SQL Extensions For Spreadsheets
  • Notation. The following examples use a fact table f(t, r, p, s, c) representing a data-warehouse of electronic products with three dimensions: time (t), region (r), and product (p), and two measures: sales (s) and cost (c).
  • Spreadsheet clause. OLAP applications divide relational attributes into dimensions and measures. To model that the new spreadsheet clause is used. It identifies, within the query result, PARTITION BY, DIMENSION BY and MEASURES columns. The PARTITION BY columns divide the relation into disjoint subsets. The DIMENSION BY columns uniquely identify a row within each partition, which we call a cell, and serve as an index to the MEASURES columns. The value of measure in a cell may be referred to herein as the value of the cell. The MEASURES columns identify expressions computed by the spreadsheet. Following this, there is a sequence of formulas, each describing a computation on cells. For conciseness, the abbreviations PBY, DBY, and MEA are used herein in lieu of the terms PARTITION BY, DIMENSION BY, and MEASURES. Thus, the structure of the spreadsheet clause is:
    <SQL query block constructs>
    SPREADSHEET PBY (cols) DBY (cols) MEA (cols)
    <processing options>
    (
      <formula>, <formula>,.., <formula>
    )

    The spreadsheet clause is evaluated after joins, aggregations, window functions, but before final projection and the ORDER BY clause. The clause PBY (cols) specifies the PBY columns, the clause DBY (cols) specify the DBY columns, and the clause MEA (cols) specifies the measure columns.
  • In an alternate syntax for the spreadsheet clause, the keyword MODEL is used in lieu of the keyword SPREADSHEET. In this syntax, the spreadsheet clause has the following structure:
    <SQL query block constructs>
    MODEL PBY (cols) DBY (cols) MEA (cols)
    <processing options>
    (
      <formula>, <formula>,.., <formula>
    )
  • Cells are referenced using a familiar array notation. Cell references can designate a single cell reference when dimensions are uniquely qualified e.g., s[p=‘dvd’, t=2002], or set of cells called a range reference e.g. s[p=‘dvd’, t<2002] where dimensions are qualified by predicates.
  • Each formula represents an assignment and contains a left side that designates target cells and a right side that contains expressions involving cells or ranges of cells within the partition. For example:
    SELECT r, p, t, s
    FROM f
    SPREADSHEET PBY(r) DBY (p, t) MEA (s)
    (
     s[p=’dvd’,t=2002] = s[p=’dvd’,t=2001]*1.6,
     s[p=’vcr’,t=2002] = s[p=’vcr’,t=2000]
    + s[p=’vcr’,t=2001],
     s[p=’tv’, t=2002] =avg(s) [p=’tv’,1992<t<2002]
    )

    partitions table f by region r and defines that within each region, sales of ‘dvd’ in 2002 will be 60% higher than in 2001, sales of ‘vcr’ in 2002 will be the sum of sales in 2000 and 2001, and sales of ‘tv’ will be the average of years between 1992 and 2002. As a shorthand, a positional notation exists, for example: s[‘dvd’,2002] instead of s[p=‘dvd’,t=2002]. Evaluating a formula refers to the operations that are performed to compute the expressions on the right side and assigning the results of the computation to the target cells.
  • The left side of a formula defines calculations which can span a range of cells. A new function currentv( ) (referred to as cv( ) which stands for current value) carries the value of a dimension from the left side to the right side thus effectively serving as a join between the right and left side. The * operator denotes all values in the dimension. For example:
    SPREADSHEET DBY (r, p, t) MEA (s)
    (
     s[’west’,*,t>2001]=
     1.2*s[cv(r),cv(p),t=cv(t)−1]
    )

    states that sales of every product in ‘west’ region for all years >2001 will be 20% higher than sales of the same product in the preceding year. Observe that region and product dimensions on the right side reference function cv( ) to carry dimension values from the left to the right side.
  • Formulas may specify a range of cells to be updated. A formula referring to multiple cells on the left side is called an existential formula. For existential formulas, the result may be order dependent. For example the intention of
    SPREADSHEET PBY(r) DBY (p, t) MEA (s)
    (
     s[’vcr’,t<2002] =
      avg(s) [’vcr’,cv(t)−2<=t<cv(t)]
    )
  • is that the sales of ‘vcr’ for all years before 2002 is an average of two preceding years. Processing rows in ascending and descending order w.r.t dimension t produces different results because measure s is both updated and referenced. Such cases are detected by the compiler [Section III] and executed using a cyclic procedure [Section IV]. To avoid ambiguity, the user can specify an order in which the rule should be evaluated:
    SPREADSHEET PBY(r) DBY (p, t) MEA (s)
    (
     s[’vcr’, t<2002] ORDER BY t ASC =
      avg(s) [cv(p), cv(t)−2<=t<cv(t)]
    )
  • An innovative feature of a SQL spreadsheet is creation of new rows in the result set. Any formula, with a single cell reference on left side, can operate either in UPDATE or UPSERT (default) mode. The latter creates new cells within a partition if they do not exist, otherwise it updates them. UPDATE ignores nonexistent cells. For example,
    SPREADSHEET PBY(r) DBY (p, t) MEA (s)
    (
     UPSERT s[’tv’, 2000] =
       s[’black-tv’,2000] + s[’white-tv’,2000]
    )

    will create for each region a row with p=‘tv’ and t=2000 if this cell is not present in the input stream. An existential formula defines a range of dimension values on left side. Upsert mode is not allowed with an existential formula because a range of dimension values may belong to a continuous domain and it is not always possible to find out the individual set of values.
  • Reference Spreadsheets. OLAP applications frequently deal, in a single query, with objects of different dimensionality. For example, the sales table may have region(r), product(p), and time(t) dimensions, while the budget allocation table has only the region(r) dimension. To account for that, a query block can have, in addition to the main spreadsheet, multiple, read-only reference spreadsheets which are n-dimensional arrays defined over other query blocks. Reference spreadsheets, akin to main spreadsheets, have DBY and MEA clauses indicating their dimensions and measures respectively. For example, assume a budget table budget(r,p) containing predictions p for sales increase for each region r. The following query predicts sales in 2002 in region ‘west’ scaling them using prediction p from the budget table.
    SELECT r, t, s
    FROM f GROUP by r, t
    SPREADSHEET
     REFERENCE budget ON (SELECT r, p FROM budget) DBY(r)
    MEA(p) DBY (r, t) MEA (s)
    (
     s[’west’,2002]= p[’west’]*s[’west’,2001],
     s[’east’,2002]= s[’east’,2001]+s[’east’,2000]
    )

    The purpose of a reference spreadsheet is similar to a relational join, but it allows us to perform, within a spreadsheet clause, multiple joins using the same access structures (e.g., hash table—see Section IV), thus self-joins within spreadsheet can be cheaper than doing it outside of spreadsheet computation.
  • Ordering The Evaluation Of Formulas. By default, the evaluation of formulas occurs in the order the formulas are specified, and this order of evaluation is referred to as the SEQUENTIAL ORDER. For example in:
    SPREADSHEET PBY(r) DBY (p, t) MEA (s)
    (
     s[’dvd’,2002] = s[’dvd’,2000] + s[’dvd’,2001]
     s[’vcr’,2002]  = s[’vcr’,2000] + s[’vcr’,2001])
    )
  • the first formula is evaluated before the last formula. However, there are scenarios in which formulas need to be ordered automatically based on their dependencies. A processing option provided for such scenarios is AUTOMATIC ORDER. For example, SPREADSHEET PBY(r) DBY (p, t) MEA (s) AUTOMATIC ORDER
    (
     s[’dvd’,2002] = s[’dvd’,2000] + s[’dvd’,2001]
     s[’dvd’,2001] = 1000
    )

    the first formula depends on the second and consequently the latter is evaluated first.
  • Cycles and Recursive Models. Similarly to existing spreadsheets, spreadsheet computations may contain cycles, as in the formula:
    s[1]=s[1]/2
  • Consequently, processing options are provided to specify the number of iterations or the convergence criteria for cycles and recursion. The ITERATE (n) option requests iteration of the formulas ‘n’ times. The optional UNTIL condition will stop the iteration when the <condition> has been met upto a maximum of “n” iterations as specified by ITERATE(n). The <condition> can reference cells before and after the iteration facilitating definition of convergence conditions. A helper function previous (<cell>) returns the value of <cell> at the start of each iteration. For example,
    SPREADSHEET DBY (x) MEA (s)
     ITERATE (10) UNTIL (PREVIOUS(s[1])−s[1] <= 1)
    ( s[1] = s[1]/2 )

    will execute the formula s[1]=s[1]/2 until the convergence condition is met, up to a maximum of 10 iterations (in this case if initially s[1] is greater than or equal to 1024, evaluation of the formulas will stop after 10 iterations).
  • Spreadsheet Processing Options and Miscellaneous functions. There are other processing options for the SQL spreadsheet in addition to the ones for ordering of formulas and termination of cycles. For example, we can specify UPDATE/UPSERT options as default for the entire spreadsheet. The option IGNORE NAV allows us to treat NULL values in numeric calculations as 0, which is convenient for newly inserted cells with the UPSERT option.
  • II. Illustrative Spreadsheet Usage
  • Here is an example demonstrating the expressive power of the SQL spreadsheet extensions and its potential for efficient computation as compared to the alternative available in ANSI SQL.
  • An analyst predicts sales for the year 2002. Based on business trends, sales of ‘tv’ in 2002 is their sales in 2001 scaled by the average increase between 1992 and 2001. Sales of ‘vcr’ is the sum of their sales in 2000 and 2001. Sales of ‘dvd’ is the average of the three previous years. Finally, the analyst wants to introduce in every region a new dimension member ‘video’ for the year 2002, defined as sales of ‘tv’ plus sales of ‘vcr’. Assuming that rows for ‘tv’, ‘dvd’, ‘vcr’ for year 2002 already exist, the analyst's query can be expressed as:
    SELECT r, p, t, s
    FROM f
    SPREADSHEET PBY(r) DBY (p, t) MEA (s)
    (
    F1: UPDATE s[’tv’,2002] =
      regr_slope(s,t)[’tv’,1992<=t<=2001]*s[’tv’,2001]
      + s[’tv’,2001]
    F2: UPDATE s[’vcr’, 2002] =
       s[’vcr’, 2000] + s[’vcr’, 2001],
    F3: UPDATE s[’dvd’,2002] =
      (s[’dvd’,1999]+s[’dvd’,2000]+s[’dvd’,2001])/3,
    F4: UPSERT s[’video’, 2002] =
       s[’tv’,2002] + s[’vcr’,2002]
    )
  • The regr_slope( ) aggregate is an ANSI SQL function that denotes linear regression slope. To express the above query in ANSI SQL, formula F1 would require an aggregate subquery plus a join to the fact table f, formula F2 a double self-join of the fact table, formula F3 a triple self join of the fact table, and formula F4 a union operation. Such a query would not only be difficult to generate but would also result in an inefficient execution as compared to the query with spreadsheet. The latter needs to scan data only once to generate a point addressable access structure like hash table or an index. If we can deduce from database constraints that t is from an integer domain, then formula F1 is first transformed into:
    F1: UPDATE s[’tv’,2002] =
    regr_slope(s,t)[’tv’,t in (1992,.,2001)]*s[’tv’,2001]
    + s[’tv’,2001]
  • This way, the access structure can be used for random, multiple accesses along the time dimension as opposed to a scan to find out the rows satisfying the predicate. Formulas F2, F3, and F4 can use the structure directly. The structure is then used multiple times giving a performance advantage over multiple joins required by equivalent ANSI SQL. In real applications, spreadsheet clauses can contain hundreds of formulas and consequently building a single point access structure in place of hundreds of joins provides a significant performance advantage.
  • As another example consider the “densification” of a dimension d—a process which assures that all d values are present in the output for every combination of other dimensions. This operation is frequently used in time-series calculations where all time values must be present in the output. This is used for moving averages, prior-period computation, calendar construction, etc. Assume that for each product(p) and region(r) it is desired to ensure that all years present in the dimension table, time_dt, are present in the output. The fact table f is sparse, and may not have all time periods for every product-region pair. Using a spreadsheet this is expressed as:
    SELECT r, p, t, s
    FROM f
    SPREADSHEET PBY(r, p) DBY (t) MEA (s, 0 as x)
    (
     UPSERT x[FOR t IN (SELECT t FROM time_dt)]= 0
    )
  • This partitions the query by (r, p) and within each partition upserts all values from the time dimension. An equivalent formulation using ANSI SQL involves a Cartesian product of f to time_td and a joinback to f, a series of operations much less efficient than those required for the above spreadsheet execution:
    SELECT f.r, f.p, f.t, f.s
    FROM f RIGHT OUTER JOIN
      ( (SELECT DISTINCT r, p FROM f)
       CROSS JOIN
        (SELECT t FROM time_dt)
      ) v
     ON (f.r = v.r and f.p = v.p and f.t = v.t)

    III. Spreadsheet Analysis And Optimization
  • The spreadsheet analysis determines the order of evaluation of formulas, prunes formulas whose results are fully filtered out by outer queries, restricts the formulas whose results are partially filtered, migrates predicates from outer queries into inner WHERE clause to limit the data processed by the spreadsheet, and generates a filter condition to identify the cells that are required throughout the evaluation of the spreadsheet formulas.
  • The analysis also determines one of two types of execution methods: one for acyclic and one for (potentially) cyclic formulas. Because of complex predicates in formulas, analysis cannot always ascertain acyclicity of dependency relationships among the formulas in the spreadsheet. Hence, sometimes the cylic execution method is used for acyclic spreadsheets, which is expensive compared to the acyclic method.
  • Formula dependencies and Execution Order: The order of evaluation of formulas is determined from their dependency graph. Formula F1 depends on F2 (written F2→F1) if a cell evaluated by F2 is used by F1. For example in:
    F1:s[’video’,2000]=s[’tv’, 2000]+s[’vcr’, 2000]
    F2:s[’vcr’,  2000]=s[’vcr’,1998]+s[’vcr’, 1999]
  • F2→F, as F, requires a cell s[‘vcr’,2000] computed by F2. To form the dependency (→) relation, for each formula F the cells that are referenced on its right side R(F) and cells that are modified on its left side L(F) are determined. Obviously, F2→F1 iff R(F1) intersects L(F2). The dependency (→) relation results in a graph with formulas as nodes and their dependency relationship as directed edges. The graph is analyzed for (partial) ordering.
  • In the presence of complex cell references, like s[‘tv’, t2+t3+t4<t5], it is hard determine the intersection of predicates. In this case, it is assumed that the formula references all cells. This may result in over-estimation of the dependency (→) relation leading to spurious cycles in the dependency graph.
  • A spreadsheet formula can access a range of cells (e.g., an aggregate—avg(s)[‘tv’,*] or left side of an existential formula—s[*, *]=10) and thus require a scan of data. If two formulas are independent (unrelated in the partial order derived from the graph), they can be evaluated concurrently using a single scan. To enable concurrent evaluation, formulas are grouped into enumerated levels such that each level contains formulas that have no dependency among them. No formula in the level may depend on a formula in a higher level unless the dependency graph is cyclic.
  • The path through the partial order with the maximum number of scans represents the minimum number of total scans required for evaluation of the spreadsheet, since they are all related by the partial order. If the graph is an acyclic graph (i.e. a partial order of formulas exists), then the number of levels containing scans can be minimized to this value. The procedure GenLevels shown in FIG. 1 generates the levels such that the number of scans is minimized. Let G(F, E) be the graph of the→relation where F are formulas and E the→edges. A formula with no incoming edges is referred to as a source and formulas with only single cell references are referred to as single_refs:
  • For example:
    SELECT * FROM f
    GROUP BY p, t
    SPREADSHEET DBY(p,t) MEA(sum(s) s)
    (
     F1: s[’tv’, 2000] = sum(s) [’tv’, 1990<t<2000],
     F2: s[’vcr’,2000] = sum(s) [’vcr’, 1995<t<2000],
     F3: s[’vcr’,1999]=s[’vcr’,1997]+s[’vcr’,1998]
    )
  • FIG. 2 shows spreadsheet graph 201, the spreadsheet graph for the above formula. Spreadsheet graph 201 has one edge: F3→F2. The procedure will assign the point reference F3 to level 1 and the scan F2 to level 2, but will delay assigning the scan F1 until level 2 so that F1 and F2 can share a single scan.
  • The GenLevels procedure presented simplifies the cyclic case. Before generating the levels, the graph is analyzed for strongly connected components using procedures in [15]. The cyclic subgraphs can then be isolated from acyclic parts of the graph and from other cyclic subgraphs. This is important because the computational complexity of cyclic evaluation is proportional to the total number of rows updated or upserted in a cycle (see auto-acyclic procedure described in Section 5 and FIG. 6). After assigning levels to formulas a cyclic subgraph is dependent on, the cyclic subgraph can be broken by removing formulas from the subgraph and assigning them to individual levels in the same order as the formulas appear in the subgraph until the subgraph is exhausted.
  • For spreadsheets with sequential order of evaluation, the dependency edges created always point from the earlier formula to the latter formula. A spreadsheet with sequential order can therefore never have a cyclic graph. Still levels are generated in order to group the independent formulas together and hence, minimize the number of scans that are required for computation of aggregates and existential rules in the spreadsheet.
  • Pruning Formulas: To encapsulate common computations, applications will generate views containing spreadsheets with thousands of formulas. Users querying these views will likely require only a subset of the result, putting predicates over the views. This gives us an opportunity to prune formulas that compute cells discarded by these predicates. For example:
    SELECT * FROM
    (SELECT r, p, t, s FROM f
     SPREADSHEET PBY(r) DBY (p, t) MEA (s) UPDATE
     (
     F1: s[’dvd’,2000]=s[’dvd’, 1999]*1.2,
     F2: s[’vcr’,2000]=s[’vcr’,1998]+s[’vcr’,1999],
     F3: s[’tv’, 2000]=avg(s)[’tv’, 1990<t<2000]
     ) v
    )
    WHERE p in (’dvd’, ’vcr’, ’video’);
  • The evaluation of the formula F3 is unnecessary as the outer query filters out the cell that F3 evaluates. The above formulas are independent, which makes the pruning process simple. If, however, there is a formula that depends on F3, for example,
    • F4: s[‘video’,2000]=s[‘vcr’,2000]+s[‘tv’,2000]
      then F3 cannot be pruned as it is referenced by F4.
  • The evaluation of a formula becomes unnecessary when the following conditions are satisfied:
      • The cells it updates are not used in evaluation of any other formula in the spreadsheet.
      • The cells updated by the formula are filtered out in the outer query block or the measure updated by the formula is never referenced in the outer query block.
  • Identification of formulas that can be pruned is done by the procedure Prune Formulas (see FIG. 3) based on the dependency of graph G. A sink is a formula with no outgoing edge, i.e., a formula no other formula depends on.
  • Rewriting Formulas. Pruning formulas alone is not sufficient to avoid unnecessary computations during spreadsheet evaluation. In some cases, the results computed by a formula may be partially filtered out in the outer query block. Consider the following query which predicts the sale of all products in 2002 to be twice the cost of the same product in 2002, and then selects the sale and cost values for ‘dvd’ and ‘vcr’ for years>=2000.
    SELECT * FROM
    (SELECT r, p, t, s FROM f
     SPREADSHEET PBY(r) DBY (p, t) MEA (s,c) UPDATE
     (
      F1: s[*,2002]=c[cv(p), 2002]*2,
     ) v
    )
    WHERE p in (’dvd’,’vcr’) and t >= 2000;
  • The formula F1 cannot be pruned away as part of its result is needed in the outer query block. Still, the s values for all products in 2002 do not need to be computed as the outer query filters out all the rows except for products ‘dvd’ and ‘vcr’. Hence the left side of formula F1 is rewritten as follows to avoid unnecessary computation:
    • F1′: s[p in (‘dvd’,‘vcr’),2002]=c[cv(p), 2002]*2
  • The rewriting of formulas is done with a small extension of the procedure Prune Formulas. In the new Prune Formulas, an attempt is made to rewrite the formulas in all sink nodes that cannot be pruned. Note that similar to pruning of a formula, the rewrite of a formula may also change the dependency graph (some incoming edges of the formula might be deleted) possibly leading to generation of new sink nodes, so it is only natural that both rewrite and pruning of formulas are handled in the same process.
  • Rewriting of formulas that are not sink nodes is also possible but the rewrite in that case is complicated as it is not only based on outer predicates, but also on the reference predicates of the other formulas that depend on the formula being rewritten.
  • Pushing predicates through spreadsheet clauses. Pushing predicates into an inner query block, and its generalization ‘predicate move-around’, is an important optimization and has been incorporated into queries with spreadsheets. Three types of pushing optimizations can be performed: pushing on PBY and independent DBY dimensions, pushing based on bounding rectangle analysis and pushing through reference spreadsheets.
  • Pushing predicates through the PBY expressions in or out of the query block is always correct as they filter entire partitions. For example, in:
    SELECT * FROM
     (SELECT r, p, t, s FROM f
     SPREADSHEET PBY(r) DBY (p, t) MEA (s) UPDATE
     (
      F1:s[’dvd’,2000]=s[’dvd’,1999]+s[’dvd’,1997],
      F2:s[’vcr’,2000]=s[’vcr’,1998]+s[’vcr’,1999]
     )
    ) v
    WHERE r = ’east’ and t = 2000 and p = ’dvd’;

    the predicate r=‘east’ is pushed through the spreadsheet clause into the WHERE clause of the inner query.
  • Pushing can be extended to independent dimensions. A dimension d is called an independent dimension if, for every formula, the value of d referenced on the the right side is the same as the value of d on the left side. For example, in the above spreadsheet, the left side of F1 refers to the same values of p as the right side. The same is true for formula F2 as well, thereby making p an independent dimension. Dimension t, however is not an independent dimension.
  • In the absence of UPSERT rules, independent dimensions can be functionally equivalent to the partitioning dimensions and may be moved from the DBY to the PBY clause. An independent dimension (d) can be moved from DBY to PBY clause when:
  • (1) all formulas in the spreadsheet qualify all values for that dimension (e.g. via *) on their left side;
  • (2) all formulas in the spreadsheet have only cv(d) references for that dimension on their right side;
  • (3) no formula has nested cell referencing or cross referencing to cv(d);
  • (4) no formula has a reference spreadsheet cell referencing cv(d) on its right side; and
  • (5) spreadsheet iterate condition (if any), has no main spreadsheet cell references (reference spreadsheet cell references are okay).
  • For example, in the above spreadsheet, replace PBY/DBY clauses can be replaced with
      • SPREADSHEET PBY(r, p) DBY (t) MEA (s) UPDATE
        Consequently, predicate p=‘dvd’ can pushed into the inner query.
  • Predicates on PBY and independent DBY expressions are pulled out of the query to effect predicate move-around described in [11].
  • The outer predicates on the DBY expressions which are not independent can also be pushed in but require extending them so that they do not filter out the cells referenced by the right sides of the formulas. For each formula, a predicate defining the rectangle bounding the referenced cells is constructed. For example for F2 these predicates arep=‘vcr’ and t in (1998, 1999) and for F1 p=‘dvd’ and t in (1997, 1999). Then a bounding rectangle for the entire spreadsheet is obtained using methods described in [8] and [3], which is a union of bounding rectangles for each formula, which in this case is p in (‘vcr’, ‘dvd’) and t in (1997, 1998, 1999). Then the predicates on DBY columns from the outer query are extended with the corresponding predicates from the spreadsheet bounding rectangle, and these are pushed into the query. In this example, the outer predicate t=2000 is extended with t in (1997, 1998, 1999) which results in pushing t in (1997, 1998, 1999, 2000). The predicates on DBY expressions in the outer query block are kept in place unless the pushdown filter is the same as the outer filter and there are no upsert formulas in the spreadsheet.
  • A challenging scenario arises when the bounding rectangle for a formula cannot be determined at optimization time since it may depend on a subquery S whose bounds are known only after S's execution. This is common in OLAP queries which frequently inquire about the relationship of a measure at a child level to that of its parent (e.g., sales of a state as a percentage of sales of a country), or inquire about a prior value of a measure (e.g., sales in March-2002 vs. sales the same month a year ago or a quarter ago). These relationships are obtained by querying dimension tables. For example, assume that the primary key of time dimension time_dt is month m and the table time_dt stores the corresponding month a year ago as m_yago, and the corresponding month a quarter ago as m_qago. Quarter ago of 1999-01 is 1998-10 (see Table 1)
    TABLE 1
    Mapping between m and m_yago/m_qago
    m m_yago m_qago
    1999-01 1998-01 1998-10
    1999-02 1998-02 1998-11
    1999-03 1998-03 1998-12
  • An analyst wants to compute for a product ‘dvd’ and months (‘1999-01’, ‘1999-03’) the ratio of that month's sales to the sales in corresponding months a year and quarter ago respectively (r_yago and r_qago). Using an SQL spreadsheet, this query is:
    S1
    SELECT p, m, s, r_yago, r_qago FROM
     (SELECT p, m, s FROM f GROUP BY p, m
     SPREADSHEET
      REFERENCE prior ON
       (SELECT m, m_yago, m_qago FROM time_dt)
        DBY(m) MEA(m_yago, m_qago)
      PBY(p) DBY (m) MEA (sum(s) s,r_yago,r_qago)
      (
     F1: r_yago[*] = s[cv(m)] / s[m_yago[cv(m)]],
     F2: r_qago[*] = s[cv(m)] / s[m_qago[cv(m)]]
     ) v
    )
    WHERE p = ’dvd’ and m IN (‘1999-01’, ‘1999-03’);
  • The reference spreadsheet in this case serves as a one-dimensional look-up table translating month m into the corresponding month a year ago m_yago and a quarter ago m_qago. An alternative formulation of the query using ANSI SQL requires the joins f><time_dt><f><f, where the first join gives the month values a year and a quarter ago for each row in a fact table and the other two joins given the sales values in the same month, a quarter ago and a year ago respectively. Thus, using a reference spreadsheet, the number of joins is reduced to one.
  • The predicate p=‘dvd’ on the PBY column can be pushed into the inner block. However, m is neither an independent dimension nor can bounding rectangles be determined for it as the values m_yago and m_qago are unknown. Consequently, a restriction on m cannot be pushed-in resulting in all time periods pumped to the spreadsheet out of which all except 1999-01 and 1999-03 are subsequently discarded in the outer query. Call dimension d a functionally independent dimension if for every formula, the value of d referenced on the right side is either the same as the value of d on the left side or a function of the value of d on the left side via a reference spreadsheet. In query, m is a functionally independent dimension, as the right side uses m directly or uses a function of the value of m on the left side: m_yago[cv(m)] and m_qago[cv(m)].
  • Three types of transformations may be used to push predicates through functionally independent dimensions. In the first type of transformation, called ref-subquery pushing, transformation added into the inner block a subquery predicate which selects all values needed by the spreadsheet and the outer query. The transformation is similar to the magic set transformation which pushes a query derived from outer predicates into the inner block. In the above case, the outer query needs m IN (‘1999-01’, ‘1999-03’) (i.e. the outer query requires the values in m that satisfy the predicate m IN (‘1999-01’, ‘1999-03’)), and the spreadsheet needs these values plus their corresponding m_yago and m_qago values from the reference spreadsheet. These values can be obtained by constructing a subquery named S2 over the reference spreadsheet:
    S2
    WITH ref_subquery AS
      (SELECT m, m_yago, m_qago FROM time_dt
      WHERE m IN (‘1999-01’, ‘1999-03’))
    SELECT m AS m_value FROM ref_subquery
    UNION
    SELECT m_yago AS m_value FROM ref_subquery
    UNION
    SELECT m_qago AS m_value FROM ref_subquery
    and then pushing it into the inner block of the query:
    SELECT p, m, s, r_yago, r_qago FROM
     (SELECT p, m, s FROM f
      WHERE m IN (SELECT m_value FROM S1)
      GROUP BY p, m
      SPREADSHEET
      <.. as above in query S1 .. >
    )
    WHERE p = ’dvd’ and m IN (‘1999-01’, ‘1999-03’);
  • In the second type of transformation, called extended pushing, pushed-in predicates are constructed by executing the reference spreadsheet query, obtaining the referenced values and building predicates on the dimension, and finally disjuncting them with the outer predicates. In the above case the following is executed
    SELECT DISTINCT m_yago, m_qago FROM time_dt
    WHERE m IN (‘1999-01’, ‘1999-03’)

    to obtain the values for m_yago and m_qago corresponding to m IN (‘1999-01’, ‘1999-03’).
  • Let's assume that the corresponding m_yago is (‘1998-01’, ‘1998-03’) and m_qago is (‘1998-10’, ‘1998-12’) i.e., the first and third month of the previous quarter. Finally the predicate is pushed into the inner query:
    SELECT p, m, s, r_yago, r_qago FROM
     (SELECT p, m, s FROM f
      WHERE m IN ( ‘1999-01’, ‘1999-03’, /* outer preds */
    ‘1998-01’, ‘1998-03’, /* prev year */
    ‘1998-10’, ‘1998-12’) /* prev quart */
     GROUP BY p, m
     SPREADSHEET
     <.. as above in query .. >
    )
    WHERE p = ’dvd’ and m IN (‘1999-01’, ‘1999-03’);
  • In the third type of transformation, called formula unfolding, formulas are transformed by replacing the reference spreadsheet with its values. Similarly to the second transformation, the reference spreadsheet is executed to obtain its measure for each of the dimension values requested by the outer query. These values are then used to unfold the formulas. For example, for m=‘1999-01’, value of m_yago =‘1998-01’, and m_qago=‘1998-10’, and for m=‘1999-03’, value of m_yago =‘1998-03’, and m_qago=‘1998-12’. Thus formulas are unfolded as:
    SELECT p, m, s, r_yago, r_qago FROM
     (SELECT p, m, s FROM f GROUP BY p, m
     SPREADSHEET
      REFERENCE prior ON
       (SELECT m, m_yago, m_qago FROM time_dt)
        DBY(m) MEA(m_yago, m_qago)
      PBY(p) DBY (m) MEA (sum(s) s,r_yago,r_qago)
     (
     F1: r_yago[‘1999-01’] = s[‘1999-01’] / s[‘1998-01’],
     F1′: r_yago[‘1999-03’] = s[‘1999-03’] / s[‘1998-03’],
     F2: r_qago[‘1999-01’] = s[‘1999-01’] / s[‘1998-10’],
     F2′: r_qago[‘1999-03’] = s[‘1999-01’] / s[‘1998-12’]
     ) v
    )
    WHERE p = ’dvd’ and m IN (‘1999-01’, ‘1999-03’);
  • Following formula flattening, an analysis is performed of the bounding rectangles described above and the resulting bounding predicate is pushed into the inner query.
  • Pushdown of dimension predicates in the presence of Upsert rules for a spreadsheet with PBY clause. When a spreadsheet clause has a PBY clause and upsert rules, pushing predicates based on bounding rectangle analysis can be done under certain conditions. There is a possibility that the pushed filter eliminates an entire partition and upsert of new cells for that partition never take place, leaving rows missing in the result of the query block that has the spreadsheet. The following query illustrates this possibility.
    SELECT r,p,t,s
     FROM
      (SELECT r,p,t,s FROM t
       SPREADSHEET PBY(r) DBY(p,t) MEA(s)
       UPSERT
       (
       s[‘dvd’,2003] = 0
     ))
    WHERE p IN (‘dvd’, ‘vcr’);
  • Based on minimum bounding rectangle analysis, the predicate (p IN (‘dvd’, ‘vcr’)) is a candidate for pushing down. Now assume that there is a region (‘region_x’) where there are no dvd or vcr sales. If the predicate is pushed down, the entire ‘region_x’ is filtered out and the new row (r=‘region_x’, p=‘dvd’, t=2003, s=0) would not be upserted, and subsequently, would not be in the final result. Note that this row will appear in the result if the pushdown on predicate (p IN (‘dvd’, ‘vcr’)) is not done.
  • Predicate pushdown (based on minimum bounding rectangle analysis) through spreadsheets with a PBY clause and upsert rules can be performed under certain conditions. Recall that the pushdown predicate generated based on minimum bounding rectangle analysis covers all values referenced on the right side of rules and the ones that are selected in the filter of the outer query block. If the pushdown predicate can eliminate an entire partition, then only the cells that are upserted by the spreadsheet would be returned to the outer query block for that partition. If one can determine that the upserted cells for an empty partition are guaranteed to be filtered out, than it does not matter whether the rows for a partition are filtered out before or after spreadsheet computation. In that case, predicate pushdown on DBY columns can be done.
  • For example, consider the following query:
    SELECT r,p,t,s
     FROM
      (SELECT r,p,t,s FROM t
       SPREADSHEEt PBY(r) DBY(p,t) MEA(s)
       UPSERT
       (
       s[‘dvd’,2003] = s[‘tv’,2003]*0.5
     ))
    WHERE p IN (‘dvd’, ‘vcr’) and (s IS NOT NULL);
  • The pushdown predicate for p is (p in (‘dvd’, ‘vcr’, ‘tv’)). Now consider the region ‘region_x’, which does not have any tv or vcr or dvd sales. For ‘region_x’, s[‘tv’,2003] is NULL as it does not exist. So the spreadsheet upserts the row (r=‘region_x’, p=‘dvd’, t=2003, s=NULL) for partition ‘region_x’. The row is filtered out by the outer predicate (s is NOT NULL). The partition ‘region_x’ is guaranteed to be eliminated from the result. In this case, the predicate on p can be pushed down.
  • The determination of whether it is correct to perform a predicate pushdown for dimensions through upserts is based on two analyses:
  • (1) an analysis of the rules to determine which upserted measures can be NULL, and
  • (2) a further analysis of the outer filter to determine if null values of these measures are filtered out by, for example, using a NOT NULL predicate.
  • In the example above, none of the cells referenced on the right side (in this case s[‘tv’,2003]) exist, and the s values for the upserted cells would all be NULL. Examination of the outer filter reveals that cells with NULL values for s are filtered out. So elimination of entire partitions by the pushdown filters would not change the final result, so predicate pushdown can be done.
  • Note that the use of the IGNORE NAV option directly turns off predicate pushdown for dimensions in the presence of upsert rules and the PBY clause, as this option causes NULLs to be ignored in rule computations, i.e., in arithmetic expressions NULLs are considered to be 0 values.
  • A determination of whether it is correct to perform a predicate pushdown for dimensions through upserts can be performed using the procedures FindNullableMeasure, shown in FIG. 4A, and NullableMeasFiltered, shown in FIG. 4B. FindNullableMeasure performs an analyses of the rules to determine which upserted measures can be NULL.
  • NullableMeasFiltered performs a further analysis of the outer filter to determine if null values of these measures are filtered out by, for example, using a NOT NULL predicate. The procedure analyzes the outer filter and returns TRUE if pushdown of dimension filters may be performed, FALSE otherwise. For step 4, for measure m, the predicate (m is NOT NULL) implies that m cannot be NULL, the predicate (m>0) implies that m cannot be NULL (since NULL value for m would not satisfy this), and the predicate (a>0) does not imply anything for m.
  • Evaluation of aggregates using window function style computation. Consider the following spreadsheet query:
    SELECT r,p,t,s, ps FROM t
     SPREADSHEET PBY(r) DBY(p,t) MEA(s, t as tm, 0 as ps)
     UPSERT
     (
      ps[*,*] = s[cv(p), cv(t) −1] * (1+regr_slope(s,tm)
             [cv(p), t BETWEEN cv(t)−1 and cv(t)−5])
     );
  • This query computes the projected sales of each product for every year to compare it with the actual sales figure. The projected sales amount for a year is computed by multiplying the actual sales amount from the previous year with 1 plus the regression_slope for the actual sales values for the 5 previous years.
  • Without optimization, this query requires an expensive computation. The right side of the rule is computed for each cell updated on the left side. The right side has an aggregate function, which requires a full table scan of table t. Hence, a full scan is performed for all the cells updated by the rule. In the above query, there are as many full table scans as rows in the table t. The query can be optimized by reducing the number of table scans.
  • The number of table scans can be reduced if it can be determined that aggregates on the right side of an existential rule can be evaluated using a sort in window function style instead of performing a scan per cell to update. Window functions are described in detail in U.S. patent application Ser. No. 09/656,905, entitled Method for Minimizing the Number of Sorts Required for a Query Block Containing Window Functions, filed on Sep. 7, 2000 by Abhinav Gupta and issued as U.S. Pat. No. 6,389,410, the contents of which are incorporated herein by reference.
  • For the example above, a single sort of the data is performed and the aggregates evaluated over the result of the sort using a single table scan. Specifically, the aggregate on the right side of the rule
      • regr_slope(s,tm)[cv(p), t between cv(t)-1 and cv(t)-5]
  • can be rewritten using window function style as
    regr_slope(s,tm) over (PARTITION BY p ORDER BY t RANGE
     between 5 preceding and 1 preceding)
  • This function performs just one sort and then a single table scan.
  • A query can be rewritten using window function style computation when (1) the left side and the right side of each formula in the spreadsheet clause does not depend on each other, i.e., the formula is not self cyclic, and (2) all aggregates on the right side of the formula can be evaluated in window function style computation.
  • The formulas with window function style computation are assigned to the same execution level if they can be evaluated using the same sort. Rewriting queries to use these window functions triggers existing optimizations performed for queries with window functions. Such optimizations involve grouping window functions into groups which can be satisfied with the same sort. This is done for spreadsheet rules which have been rewritten using window functions as well.
  • IV SQL Spreadsheet Execution
  • Access structures. For efficient access to single cells (like s[p=‘dvd’, t=2000]), a two-level hash access structure is built. In the first level, data is hash partitioned on the PBY columns, and in the second level, a hash table is built on the PBY and DBY columns within each first level partition. The formulas are evaluated for one spreadsheet partition at a time. A spreadsheet partition contains all rows with the same PBY column values. Hence, one spreadsheet partition lies completely within one first level hash partition of the access structure. Therefore, if the second level hash tables of each of the first level partitions fit in memory, spilling to disk for evaluating the formulas is altogether avoided. To further minimize size and build time of hash tables, the access structure is built only on rows required by the formulas as defined by the spreadsheet filter obtained by bounding rectangle analysis (see Section III).
  • The hash access structure supports operations like probe, update, upsert, insert and scan of all records within a spreadsheet partition. The hash access structure maintains records within a hash bucket clustered on PBY and DBY column values, thereby making the scan and probe on a spreadsheet partition efficient.
  • The number of first level partitions is chosen based on estimated size of data to be inserted into the access structure and the amount of available memory. The goal is to fit second level hash tables for each first level partition in memory. However, the spreadsheet partitions may be really big and there may not be enough memory to fit a partition. In such cases, a disk based hash table is built, and both a weighted LRU scheme for block replacement and pointer swizzling to make references lightweight is employed.
  • Execution. Formulas in a SQL spreadsheet operate in automatic order or sequential order. FIG. 5 shows classification of spreadsheets based on the evaluation order and dependency analysis and identifies the execution procedure for the classes of spreadsheets. There are three procedures: Auto-Acyclic, Auto-Cyclic & Sequential.
  • Automatic Order. The order of evaluation of formulas in an automatic order spreadsheet is given by their dependencies (see Section III). There are two types of procedures for its execution.
  • The Auto-Acyclic procedure (see FIG. 6) is taken when a complete and accurate dependency graph can be built and no cycles are detected in the dependency graph.
  • Notice that all the aggregates at any level are computed before evaluation of formulas at that level so they are available for the formulas. This requires a scan of records in the partition for each level. In the absence of existential formulas, and presence of only those aggregate functions for which an inverse is defined (for example, SUM, COUNT etc.), the aggregates for all the levels are computed in a single scan. And, with each formula the procedure stores a list of aggregates dependent on the cell being upserted (or updated) by it. It is possible to determine such a list because there are only single cell references on the left side. So, if a formula changes the value of a measure, the corresponding dependent aggregates are updated by applying the current value and inverse of the old value of the measure. In the above algorithm (containing scans I, II and III as shown in FIG. 6), we can combine scan (I) with scan (II) or scan (III).
  • An example of an acyclic spreadsheet:
    SELECT r, p, t, s
    FROM f
    SPREADSHEET PBY(r) DBY (p, t) MEA (s)
    (
     s[’tv’, 2002] =s[’tv’, 2001] * 1.1,
     s[’vcr’,2002] =s[’vcr’, 1998] + s[’vcr’, 1999],
     s[’dvd’,2002] =(s[’dvd’,1997]+s[’dvd’,1998])/2,
     s[*, 2003], =s[cv(p), 2002] * 1.2
    )
  • The above query makes sales forecasts for years 2002 and 2003. The formulas are split into 2 levels. The first level consists of the first 3 formulas, projecting sales for 2002, and the second level, dependent on the first level, consists of the last formula, projecting sales for 2003. The procedure Auto-Acyclic evaluates formulas in the first level before evaluating formulas in the second level.
  • Auto-Cyclic Procedure. There are also automatic order spreadsheets which are either cyclic, or have complex predicates that make the existence of cycles indeterminate. In such cases (Section III), the dependency analysis approximately groups the formulas into levels by finding sets of formulas comprising strongly connected components (SCCs—the largest union of intersecting cycles), and assigning the formulas in an SCC to consecutive levels. The Auto-Cyclic algorithm evaluates formulas that are not contained in SCCs as in the acyclic case, but when formulas in SCCs are encountered, it iterates over the consecutive SCC formulas until a fixed point is reached, but only upto a maximum of ‘N’ iterations where N=number of cells upserted (or updated) in the first iteration. If the spreadsheet was actually acyclic, the formulas will converge after at most ‘N’ iterations. In the worst case, if the formulas were evaluated in exactly the opposite order of (real) dependency, each iteration will propagate one correct value to another formula, hence requiring ‘N’ iterations. Therefore, to evaluate all acyclic spreadsheets which could not be classified as acyclic and limit the number of iterations for cyclic spreadsheets, the maximum number of iterations for evaluation of formulas is fixed at ‘N’. If the spreadsheet does not converge in ‘N’ iterations, an error is returned to the user. To determine if the spreadsheet has converged after an iteration, a flag is stored with the measure. This flag can be set whenever the measure is referenced while evaluating a formula. Later update of a measure, for which the flag set, to a different value indicates that additional iterations are required to reach a fixed point. Similarly, an insert of a new cell (by an UPSERT formula) signals additional iterations. This technique will require resetting flags for each measure after each iteration—an expensive proposition. Hence, instead of a single flag, two flags are stored, each one being used in alternate iterations—as one of the flags is set, the other one can be cleared.
  • Sequential Order. In a sequential order spreadsheet, formulas are evaluated in the order they appear in the spreadsheet clause. The dependency analysis still groups the formulas into levels consisting of independent formulas so that the number of scans required for computation of aggregate functions is minimized. The algorithm is similar to Auto-Acyclic, but there may be multiple iterations as specified in the spreadsheet processing option—‘ITERATE’.
  • Parallel Execution of SQL Spreadsheet. The spreadsheet is evaluated scalably by evaluating the formulas over partitions in parallel. The data is distributed to Processing Elements (PE) based on the PBY columns so that each PE can work on partitions independent of other PEs. The distribution of partitions to PEs can be hash or range based on PBY columns. The work of PEs is coordinated by a single process called the query coordinator. For example, the following spreadsheet query can be evaluated by hash partitioning the data on r:
    SPREADSHEET PBY(r) DBY(p, t) MEA(s)
    (
      s[’dvd’, 2000] = 1.2*s[’dvd’, 1999]
    )
  • In some cases, data partitioning on just the PBY columns limits the degree of parallelization and hence the scalability. That is the case when there are no PBY columns, or PBY columns have very small cardinality as in PBY(gender) where only two partitions (‘male’ and ‘female’) exist.
  • In such cases, in addition to PBY columns, some DBY columns are included for data partitioning. For example, the following query:
    S2
    SPREADSHEET PBY(r) DBY(p, t) MEA(s) UPDATE
    (
      F1: s[*,2002]=
        avg(s)[cv(p), t in (1998,2000)],
      F2: s[*,2003]=
        avg(s)[cv(p), t in (1999,2001)]
    )
    is changed to
    SPREADSHEET PBY(r, p) DBY(t) MEA(s) UPDATE
    (
       s[2002] = avg(s)[t in (1998, 2000)],
       s[2003] = avg(s)[t in (1999, 2001)]
    )

    as formulas are independent of the dimension column p. This can be done for any independent dimension—see Section III.
  • Partitioning on a larger set of columns results in better load balancing and processor utilization as parallelization takes place on both r and p. All PEs execute the same set of formulas but with different data sets. If the column corresponding to an independent dimension on the left side doesn't qualify all values of that dimension, (i.e., in our notation is not a “*”), it will not be possible to promote the independent dimension to PBY. This is because promoting to PBY would incorrectly update all values for that dimension. Instead, the independent dimension in the PBY clause is duplicated as well to get better parallelization. For example:
    S2
    SPREADSHEET PBY(r) DBY(p, t) MEA(s) UPDATE
    (
      s[p != ‘bike’,2002]= avg(s)[cv(p),t<2001]
    )
  • is rewritten by optimizer for parallelization to:
    SPREADSHEET PBY(r, p) DBY(p, t) MEA(s) UPDATE
    (
      s[p != ‘bike’,2002]= avg(s)[cv(p),t<2001]
    )
  • Complex scenarios exist where different PEs need to execute different sets of formulas. One such scenario is the presence of UPSERT option as in:
    SPREADSHEET PBY(r) DBY(p, t) MEA(s) UPSERT
    (
      F1: s[’dvd’,2002] = sum(s)[’dvd’, t<1999]
            + avg(s)[’dvd’,1999<=t<= 2001],
      F2: s[’vcr’,2002] = avg(s)[’vcr’, t <= 2001],
      F3: s[*, 2003] = 1.2*s[cv(p), 2002]
    )
  • In this spreadsheet, p is again an independent dimension. But because of the UPSERT option, using p as a partitioning column with all PEs evaluating the same set of formulas can lead to an incorrect result. Assume that products ‘dvd’ and ‘vcr’ get assigned to different PEs: PE1 and PE2 respectively. If the same formulas are executed by both PEs, the result would have spurious rows—for example, PE1 working on product ‘dvd’ would introduce a row for ‘vcr’ while this row might already exist in the data set passed to PE2. In such cases, spreadsheet formulas need to be grouped and assigned to PEs based on data distribution so that the formula F is assigned to PE iff PE is processing data which F touches. For example, PE1 might evaluate formulas F1 and F3 while PE2 evaluates formulas F2 and F3.
  • This process of grouping formulas cannot be done at compile time as it is data dependent. Instead this is done by passing an extra condition to each PE, indicating the data set for which the formulas should be evaluated. In this case, if data is distributed to PEs by HASH partitioning, the extra condition is of the form:
      • WHERE HASH(p)=hash_value_of_P_for_this_PE.
  • The value for hash_value_of_P_for_this_PE is passed to each PE by the query coordinator. Then each PE, before evaluating a non-existential formula, i.e., one which explicitly qualifies all dimensions would find the value for p and verify that the triggering condition holds. If so, the formula is executed, otherwise it is skipped. The HASH(p) is the hash function used for data partitioning. For existential formulas the condition does not need to be evaluated as the formulas never generate new rows operating only in the update mode. So in the above spreadsheet assume that HASH(‘dvd’) =1 and HASH(‘vcr’) =2, and PE1 and PE2 operate in hash partitions 1 and 2 correspondingly. Then PE1 evaluates F1 and F3 while PE2 evaluates formulas F2 and F3.
  • V Bibliography
  • The following documents are incorporated herein by reference.
    • [1] APB Benchmark Specifications. http://www.olapcouncil.org/research/APB1R2_spec.pdf
    • [2] A. Balmin, T. Papadimitriou, Y. Papakonstantinou. “Hypothetical Queries in an OLAP Environment,” In Proceedings of the 26th VLDB Conference, Cairo, Egypt, 2000.
    • [3] N. Beckmann, H. P. Kriegel, R. Schneider, B. Seeger, “The R*-tree: An efficient and Robust Access Method for Points and Rectangles,” In Proc. 1990 ACM SIGMOD Conf.
    • [4] R. G. Bello, et al, “Materialized Views In Oracle”, Proceedings of VLDB'98, New York, USA, 1998
    • [5] J. A. Blakeley, P. Larson, and F. W. Tompa. “Efficiently Updating Materialized Views,” Proceedings of ACM SIGMOD 1986
    • [6] D. Chatziantoniou and K. Ross, “Querying Multiple Features of Groups in Relational Databases, ” Proceedings of VLDB'96.
    • [7] A. Gupta, I. S. Mumick, and V. S. Subrahmanian. “Maintaining views incrementally”. Proceedings of ACM SIGMOD 1993 International Conference on Management of Data, Washington D.C., 1993.
    • [8] A. Guttman, “R-Trees: A Dynamic Index Structure for Spatial Searching,” Proc. 1984 ACM SIGMOD Conf
    • [9] Joseph M. Hellerstein. “Practical predicate placement,” Proceedings of ACM SIGMOD 1994 International Conference on Management of Data, 1994.
    • [10] J. M. Hellerstein and M. Stonebraker. “Predicate migration: Optimizing queries with expensive predicates,” Proceedings of ACM SIGMOD 1993, Washington D.C., 1993.
    • [11] L. Lakshamanan, J. Pei, Y. Zhao, “QC-Trees. Efficient Summary Structure for Semantic OLAP”, Proceedings of ACM SIGMOD 2003, San Diego, Calif. 2003.
    • [12] A. Y. Levy, I. S. Mumick, and Y. Sagiv. “Query optimization by predicate move-around,” Proceedings of the 20th VLDB Conference, Santiago, Chile, 1994.
    • [13] K. Ross, D. Srivastava, P. Stuckey, and S. Sudarshan. “Foundations of aggregation constraints,” Alan Borning, editor, Principles and Practice of Constraint Programming, 1994.
    • [14] I. S. Mumick, S. Finkelstein, H. Pirahesh, and R. Ramakrishnan. “Magic is relevant,” Proceedings of the ACM SIGMOD 1990, Atlantic City, N.J., 1990
    • [15] D. Srivastava and R. Ramakrishnan. “Pushing Constraint Selections,” Proceedings of the Eleventh Symposium on Principles of Database Systems (PODS), San Diego, Calif., 1992.
    • [16] Y. Sismanis, N. Roussopoulos, A. Deligiannakis, Y. Kotidis, “Dwarf: Shrinking the Petacube”, Proceedings of ACM SIGMOD 2002, Madison, Wis., 2002.
    • [17] R. Taijan. “Dept-first search and linear graph algorithms,” SIAM J Computing, 1997.
    • [18] F. Zemke. “Rank, Moving and reporting functions for OLAP,” 99/01/22 proposal for ANSI-NCTS.
    • [19] Andrew Witkowski, Srikanth Bellamkonda, Tolga Bozkaya, Gregory Dorman, Nathan Folkert, Abhinav Gupta, Lei Shen, Sankar Subramanian, “Spreadsheet in RDBMS for OLAP”, Proceedings of ACM SIGMOD 2003, June 9-12, 200, San Diego, Calif. ACM 1-58113-634-x/03/06
    Hardware Overview
  • FIG. 7 is a block diagram that illustrates a computer system 700 upon which an embodiment of the invention may be implemented. Computer system 700 includes a bus 702 or other communication mechanism for communicating information, and a processor 704 coupled with bus 702 for processing information. Computer system 700 also includes a main memory 706, such as a random access memory (RAM) or other dynamic storage device, coupled to bus 702 for storing information and instructions to be executed by processor 704. Main memory 706 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 704. Computer system 700 further includes a read only memory (ROM) 708 or other static storage device coupled to bus 702 for storing static information and instructions for processor 704. A storage device 710, such as a magnetic disk or optical disk, is provided and coupled to bus 702 for storing information and instructions.
  • Computer system 700 may be coupled via bus 702 to a display 712, such as a cathode ray tube (CRT), for displaying information to a computer user. An input device 714, including alphanumeric and other keys, is coupled to bus 702 for communicating information and command selections to processor 704. Another type of user input device is cursor control 716, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 704 and for controlling cursor movement on display 712. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.
  • The invention is related to the use of computer system 700 for implementing the techniques described herein. According to one embodiment of the invention, those techniques are performed by computer system 700 in response to processor 704 executing one or more sequences of one or more instructions contained in main memory 706. Such instructions may be read into main memory 706 from another computer-readable medium, such as storage device 710. Execution of the sequences of instructions contained in main memory 706 causes processor 704 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and software.
  • The term “computer-readable medium” as used herein refers to any medium that participates in providing instructions to processor 704 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 710. Volatile media includes dynamic memory, such as main memory 706. Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 702. Transmission media can also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications.
  • Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punchcards, papertape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read.
  • Various forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to processor 704 for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system 700 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus 702. Bus 702 carries the data to main memory 706, from which processor 704 retrieves and executes the instructions. The instructions received by main memory 706 may optionally be stored on storage device 710 either before or after execution by processor 704.
  • Computer system 700 also includes a communication interface 718 coupled to bus 702. Communication interface 718 provides a two-way data communication coupling to a network link 720 that is connected to a local network 722. For example, communication interface 718 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface 718 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, communication interface 718 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
  • Network link 720 typically provides data communication through one or more networks to other data devices. For example, network link 720 may provide a connection through local network 722 to a host computer 724 or to data equipment operated by an Internet Service Provider (ISP) 726. ISP 726 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 728. Local network 722 and Internet 728 both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on network link 720 and through communication interface 718, which carry the digital data to and from computer system 700, are exemplary forms of carrier waves transporting the information.
  • Computer system 700 can send messages and receive data, including program code, through the network(s), network link 720 and communication interface 718. In the Internet example, a server 730 might transmit a requested code for an application program through Internet 728, ISP 726, local network 722 and communication interface 718.
  • The received code may be executed by processor 704 as it is received, and/or stored in storage device 710, or other non-volatile storage for later execution. In this manner, computer system 700 may obtain application code in the form of a carrier wave.
  • In the foregoing specification, embodiments of the invention have been described with reference to numerous specific details that may vary from implementation to implementation. Thus, the sole and exclusive indicator of what is the invention, and is intended by the applicants to be the invention, is the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction. Any definitions expressly set forth herein for terms contained in such claims shall govern the meaning of such terms as used in the claims. Hence, no limitation, element, property, feature, advantage or attribute that is not expressly recited in a claim should limit the scope of such claim in any way. For example, the techniques described herein for optimizing queries and their execution are not limited to database statements that conform to ANSI SQL or a proprietary form of SQL, or even to database statements that conform SQL. An embodiment of the present invention may be used with any database statement that conforms to a database language. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.

Claims (38)

1. A method for rewriting queries, the method comprising the computer implemented steps of:
examining a first query that references a relation to which a second query evaluates;
wherein the second query defines an array and a first set of formulas that reference the array;
wherein the array has one or more dimensions;
wherein the first query includes one or more predicates;
wherein the second query does not include the one or more predicates;
determining whether one or more criteria for rewriting said first query or said second query are satisfied;
if said one or more criteria for rewriting said first query or said second query are satisfied, then making, based on said one or more predicates included in said first query, modifications to said second query involving one or more predicate conditions; and
generating a rewritten query based on the modifications to said second query.
2. The method of claim 1, wherein:
a dimension of said one or more dimensions corresponds to a dimension column in said relation;
said one or more predicates include a particular predicate that references said dimension column;
each formula of said set of formulas has a right side and a left side;
said one or more criteria include for each value of the dimension referenced by the left side, the value referenced on the right side for the dimension is the same as said each value referenced on the left side; and
the step of making modifications to said second query includes pushing said predicate into said second query.
3. The method of claim 1, wherein:
each dimension of said one or more dimensions corresponds to a dimension column in said relation;
said one or more predicates include a particular predicate that references said dimension column;
each formula of said set of formulas has a right side and a left side;
each formula of said set of formulas references array cells of said array and dimension values of the one or more dimensions;
for each formula, constructing a bounding predicate that:
references the dimension values referenced by said each formula, and
bounds the array cells that are referenced by said each formula; and
extending said particular predicate based on the union of the bounding predicates constructed for said set of formulas.
4. The method of claim 1, wherein:
a dimension of said one or more dimensions corresponds to a dimension column in said relation;
said one or more predicates include a particular predicate that references said dimension column;
each formula of said set of formulas has a right side and a left side;
wherein each formula of said set of formulas references a second array; and
the one or more criteria include, for each formula of said set of formulas:
(A) for each value of the dimension referenced on the left side:
(1) the value of the dimension on the right side is the same as the value of the dimension referenced on the left side, or
(2) the value of the dimension on the right side depends on a value of particular cell in the second array and on a function of the value of the dimension referenced on the left side;
(B) said each formula specifies an operation that does not modify the second array.
5. The method of claim 4, wherein the step of making modifications to said second query includes:
wherein a first subset of values in said dimension column satisfy said particular predicate;
wherein a second subset of values from said dimension column are contained in said second array;
generating a third query whose results include the first subset of values and the second subset of values; and
adding a predicate to the second query that restricts said dimension column to the results of the third query.
6. The method of claim 5, wherein the step of making modifications to said second query includes:
determining the subset of values that are contained in said second array; and
adding a predicate to said second query that restricts said dimension column based on a disjunction of said subset of values and the particular predicate.
7. The method of claim 6, wherein the step of making modifications to said second query includes:
determining a set of cells in said second array required to satisfy said particular predicate;
wherein the set of formulas reference the set of cells; and
replacing the first set of formulas with a second set of formulas that reference the values of the set of cells.
8. The method of claim 4, wherein the step of making modifications to said second query includes a means for making said modifications when said one or more criteria are satisfied.
9. The method of claim 1, wherein the step of making modifications to said second query involving one or more predicate conditions includes a means for making modifications to said second query involving one or more predicate conditions.
10. The method of claim 1, wherein:
a dimension of said one or more dimensions corresponds to a dimension column in said relation;
said one or more predicates includes a particular predicate that references said dimension column;
each formula of said set of formulas has a right side and a left side;
the step of making modifications to said second query involving one or more predicate conditions includes a means for making modifications to the second query when, for at least one formula of said set of formulas, a value of the dimension referenced by the left side is different than a value referenced on the right side for the dimension.
11. The method of claim 2, wherein:
said second query specifies an upsert operation; and
the one or more criteria include that said first query filters out any row upserted by said second query.
12. A method for rewriting queries, the method comprising the computer implemented steps of:
examining a first query that defines an array and a formula that references the array;
wherein the formula has a right side and a left side;
determining whether one or more criteria for rewriting said first query are satisfied;
wherein said one or more criteria include that:
said left side and said right side do not depend on each other, and
all aggregate functions referenced on the right side can be rewritten using a window function; and
if said one or more criteria for rewriting said first query are satisfied, then generating a rewritten query that uses a window function.
13. A method for rewriting queries, the method comprising the computer implemented steps of:
examining a first query that references a relation to which a second query evaluates;
wherein the second query defines an array and a first set of formulas that reference the array;
wherein the first query includes one or more predicates;
wherein the second query does not include the one or more predicates;
generating a rewritten set of formulas by rewriting, based on said one or more predicates, said first set of formulas to produce said rewritten set of formulas; and
generating a rewritten query based on the rewritten set of formulas.
14. The method of claim 13, wherein:
the first set of formulas includes a first formula and the rewritten set of formulas does not include a first formula; and
the step of rewriting includes pruning said first formula from said first set of formulas.
15. The method of claim 14, wherein:
wherein each formula of said first set of formulas:
evaluates one or more cells in said array, and
modifies as one or more cells in said array a measure column in said relation;
the step of pruning is performed in response to detecting a set of conditions that include:
(1) the one or more cells modified by said first formula are not evaluated by any other formula of said first set of formulas, and
(2) the one or more cells modified by said first formula are filtered out by said one or more predicates or the measure column is not referenced by said first query.
16. The method of claim 14, wherein:
each formula of said first set of formulas:
evaluates one or more cells in said array, and
modifies as one or more cells in said array a measure column in said relation;
the step of rewriting is based on a set of conditions for a given formula of said first set of formulas that include a first condition, a second condition, and a third condition, wherein:
(1) the first condition is that one or more cells modified by the given formula of said first set of formulas are not evaluated by any other formula of said first set of formulas,
(2) the second condition is that the one or more cells modified by the given formula are filtered out by said one or more predicates, and
(3) the third condition is that the measure column is not referenced by said first query;
the step of rewriting includes:
(A) establishing a first subset of said first set of formulas that meet the first condition;
(B) for each formula of said first subset, pruning said each formula from said first set of formulas if said each formula meets either the second condition or the third condition;
(C) after performing step (B), establishing a second subset of the remaining formulas in said first set of formulas that meet the first condition.
17. The method of claim 16, wherein:
after performing step (B), the first subset includes a second formula that does not meet either the second condition or the third condition;
the method includes performing after step (B) but before step (C), the step of rewriting said second formula to produce a third formula in place of said second formula that modifies a portion of the cells in said array that would have been modified by said second formula.
18. The method of claim 14, wherein the method includes the steps of:
means for generating a graph with nodes and an edge between at least one pair of nodes of said nodes, wherein the edge represents a dependency between the formulas that correspond to the at least one pair of nodes; and
means for pruning, based on said graph, formulas from said first set of formulas.
19. The method of claim 13, wherein:
the first set of formulas includes a first formula and the rewritten set of formulas does not include the first formula; and
the step of rewriting includes rewriting said first formula to produce a second formula that modifies a portion of the cells in said array that would have been modified by said first formula.
20. A computer-readable storage medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 1.
21. A computer-readable storage medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 2.
22. A computer-readable storage medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 3.
23. A computer-readable storage medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 4.
24. A computer-readable storage medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 5.
25. A computer-readable storage medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 6.
26. A computer-readable storage medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 7.
27. A computer-readable storage medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 8.
28. A computer-readable storage medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 9.
29. A computer-readable storage medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 10.
30. A computer-readable storage medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 11.
31. A computer-readable storage medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 12.
32. A computer-readable storage medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 13.
33. A computer-readable storage medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 14.
34. A computer-readable storage medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 15.
35. A computer-readable storage medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 16.
36. A computer-readable storage medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 17.
37. A computer-readable storage medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 18.
38. A computer-readable storage medium carrying one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 19.
US11/592,470 2001-06-20 2006-11-02 Compile-time optimizations of queries with SQL spreadsheet Expired - Lifetime US7809712B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/592,470 US7809712B2 (en) 2001-06-20 2006-11-02 Compile-time optimizations of queries with SQL spreadsheet

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US09/886,839 US6985895B2 (en) 2000-07-13 2001-06-20 Performing spreadsheet-like calculations in a database system
US42495702P 2002-11-07 2002-11-07
US10/704,192 US7177855B2 (en) 2001-06-20 2003-11-06 Compile-time optimizations of queries with SQL spreadsheet
US11/592,470 US7809712B2 (en) 2001-06-20 2006-11-02 Compile-time optimizations of queries with SQL spreadsheet

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/704,192 Division US7177855B2 (en) 2001-06-20 2003-11-06 Compile-time optimizations of queries with SQL spreadsheet

Publications (2)

Publication Number Publication Date
US20070055661A1 true US20070055661A1 (en) 2007-03-08
US7809712B2 US7809712B2 (en) 2010-10-05

Family

ID=46300279

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/704,192 Expired - Lifetime US7177855B2 (en) 2001-06-20 2003-11-06 Compile-time optimizations of queries with SQL spreadsheet
US11/592,470 Expired - Lifetime US7809712B2 (en) 2001-06-20 2006-11-02 Compile-time optimizations of queries with SQL spreadsheet

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US10/704,192 Expired - Lifetime US7177855B2 (en) 2001-06-20 2003-11-06 Compile-time optimizations of queries with SQL spreadsheet

Country Status (1)

Country Link
US (2) US7177855B2 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050188352A1 (en) * 2004-02-17 2005-08-25 Bruno Jager Method for generating source code in a procedural, re-entrant-compatible programming language using a spreadsheet representation
US20120166402A1 (en) * 2010-12-28 2012-06-28 Teradata Us, Inc. Techniques for extending horizontal partitioning to column partitioning
US8874576B2 (en) 2009-02-27 2014-10-28 Microsoft Corporation Reporting including filling data gaps and handling uncategorized data
CN105183614A (en) * 2015-11-03 2015-12-23 华夏银行股份有限公司 Database failure prediction method and device
US20170091312A1 (en) * 2015-09-24 2017-03-30 International Business Machines Corporation Generating natural language dialog using a questions corpus
US20190197161A1 (en) * 2017-12-22 2019-06-27 Microsoft Technology Licensing, Llc Program synthesis for query optimization

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2002222963B2 (en) 2000-07-13 2007-05-10 Oracle International Corporation Performing spreadsheet-like calculations in a database system
US7761403B2 (en) * 2001-06-20 2010-07-20 Oracle International Corporation Run-time optimizations of queries with SQL spreadsheet
US7251776B2 (en) * 2001-07-13 2007-07-31 Netview Technologies, Inc. System and method for efficiently and flexibly utilizing spreadsheet information
US7979384B2 (en) * 2003-11-06 2011-07-12 Oracle International Corporation Analytic enhancements to model clause in structured query language (SQL)
US10325272B2 (en) * 2004-02-20 2019-06-18 Information Resources, Inc. Bias reduction using data fusion of household panel data and transaction data
US20080288889A1 (en) * 2004-02-20 2008-11-20 Herbert Dennis Hunt Data visualization application
US7949639B2 (en) * 2004-02-20 2011-05-24 Symphonyiri Group, Inc. Attribute segments and data table bias reduction
US7664804B2 (en) * 2004-06-01 2010-02-16 Microsoft Corporation Method, system, and apparatus for exposing workbook ranges as data sources
US8578399B2 (en) * 2004-07-30 2013-11-05 Microsoft Corporation Method, system, and apparatus for providing access to workbook models through remote function cells
US7991804B2 (en) 2004-07-30 2011-08-02 Microsoft Corporation Method, system, and apparatus for exposing workbooks as data sources
US7395280B2 (en) * 2004-11-10 2008-07-01 International Business Machines Corporation Incrementally sychronizing occasionally-connected mobile databases, preserving horizontal filter scope consistency by using client pre-image
US7461042B2 (en) * 2004-11-17 2008-12-02 Long Jeffrey G Method, system, and program for defining and managing complex contingent rules, and exceptions thereto, in a rule-based computer system
US9792359B2 (en) * 2005-04-29 2017-10-17 Entit Software Llc Providing training information for training a categorizer
US9047290B1 (en) 2005-04-29 2015-06-02 Hewlett-Packard Development Company, L.P. Computing a quantification measure associated with cases in a category
US7734615B2 (en) * 2005-05-26 2010-06-08 International Business Machines Corporation Performance data for query optimization of database partitions
US20060277207A1 (en) * 2005-06-06 2006-12-07 Ure Michael J Enterprise business intelligence using email analytics
US7593904B1 (en) 2005-06-30 2009-09-22 Hewlett-Packard Development Company, L.P. Effecting action to address an issue associated with a category based on information that enables ranking of categories
US8386463B2 (en) * 2005-07-14 2013-02-26 International Business Machines Corporation Method and apparatus for dynamically associating different query execution strategies with selective portions of a database table
US20070027860A1 (en) * 2005-07-28 2007-02-01 International Business Machines Corporation Method and apparatus for eliminating partitions of a database table from a join query using implicit limitations on a partition key value
US8719073B1 (en) 2005-08-25 2014-05-06 Hewlett-Packard Development Company, L.P. Producing a measure regarding cases associated with an issue after one or more events have occurred
US8234293B2 (en) * 2005-09-08 2012-07-31 Microsoft Corporation Autocompleting with queries to a database
US20070074112A1 (en) * 2005-09-23 2007-03-29 Business Objects Apparatus and method for consolidating reporting formulas
US7797282B1 (en) 2005-09-29 2010-09-14 Hewlett-Packard Development Company, L.P. System and method for modifying a training set
US7805433B2 (en) * 2005-10-14 2010-09-28 Microsoft Corporation Multidimensional cube functions
US20070118510A1 (en) * 2005-11-18 2007-05-24 Microsoft Corporation Optimization of leaf-level multi-dimensional calculation using scripts
US20070168323A1 (en) * 2006-01-03 2007-07-19 Microsoft Corporation Query aggregation
US7499943B2 (en) * 2006-01-09 2009-03-03 International Business Machines Corporation Mapping for mapping source and target objects
US7437338B1 (en) 2006-03-21 2008-10-14 Hewlett-Packard Development Company, L.P. Providing information regarding a trend based on output of a categorizer
US7668789B1 (en) 2006-03-30 2010-02-23 Hewlett-Packard Development Company, L.P. Comparing distributions of cases over groups of categories
CN101127034B (en) * 2006-08-18 2012-05-23 国际商业机器公司 Data organization, inquiry, presentation, documentation, recovery, deletion, refining method, device and system
WO2008092147A2 (en) * 2007-01-26 2008-07-31 Information Resources, Inc. Analytic platform
US8160984B2 (en) 2007-01-26 2012-04-17 Symphonyiri Group, Inc. Similarity matching of a competitor's products
US20090006309A1 (en) * 2007-01-26 2009-01-01 Herbert Dennis Hunt Cluster processing of an aggregated dataset
US8504598B2 (en) * 2007-01-26 2013-08-06 Information Resources, Inc. Data perturbation of non-unique values
US20080294372A1 (en) * 2007-01-26 2008-11-27 Herbert Dennis Hunt Projection facility within an analytic platform
US9262503B2 (en) * 2007-01-26 2016-02-16 Information Resources, Inc. Similarity matching of products based on multiple classification schemes
US20080294996A1 (en) * 2007-01-31 2008-11-27 Herbert Dennis Hunt Customized retailer portal within an analytic platform
US8904340B2 (en) * 2007-02-13 2014-12-02 International Business Machines Corporation Use of temporary optimized settings to reduce cycle time of automatically created spreadsheets
US7747657B2 (en) * 2007-06-08 2010-06-29 International Business Machines Corporation Mapping hierarchical data from a query result into a tabular format with jagged rows
US8832073B2 (en) 2007-06-29 2014-09-09 Alcatel Lucent Method and apparatus for efficient aggregate computation over data streams
US8386471B2 (en) * 2010-05-27 2013-02-26 Salesforce.Com, Inc. Optimizing queries in a multi-tenant database system environment
US9152688B2 (en) 2013-03-08 2015-10-06 International Business Machines Corporation Summarizing a stream of multidimensional, axis-aligned rectangles
US9405854B2 (en) * 2013-12-16 2016-08-02 Sybase, Inc. Event stream processing partitioning
US10108622B2 (en) 2014-03-26 2018-10-23 International Business Machines Corporation Autonomic regulation of a volatile database table attribute
US10528596B2 (en) 2014-09-26 2020-01-07 Oracle International Corporation System and method for consistent reads between tasks in a massively parallel or distributed database environment
US10089377B2 (en) 2014-09-26 2018-10-02 Oracle International Corporation System and method for data transfer from JDBC to a data warehouse layer in a massively parallel or distributed database environment
US10078684B2 (en) * 2014-09-26 2018-09-18 Oracle International Corporation System and method for query processing with table-level predicate pushdown in a massively parallel or distributed database environment
US10180973B2 (en) 2014-09-26 2019-01-15 Oracle International Corporation System and method for efficient connection management in a massively parallel or distributed database environment
US10394818B2 (en) 2014-09-26 2019-08-27 Oracle International Corporation System and method for dynamic database split generation in a massively parallel or distributed database environment
US10380114B2 (en) 2014-09-26 2019-08-13 Oracle International Corporation System and method for generating rowid range-based splits in a massively parallel or distributed database environment
US10387421B2 (en) 2014-09-26 2019-08-20 Oracle International Corporation System and method for generating size-based splits in a massively parallel or distributed database environment
US10089357B2 (en) 2014-09-26 2018-10-02 Oracle International Corporation System and method for generating partition-based splits in a massively parallel or distributed database environment
US9772988B2 (en) * 2015-02-27 2017-09-26 Microsoft Technology Licensing, Llc Finding unique formula sets in spreadsheets
US10325014B2 (en) 2015-04-30 2019-06-18 Workiva Inc. System and method for convergent document collaboration
US10255263B2 (en) 2015-05-18 2019-04-09 Workiva Inc. Data storage and retrieval system and method for storing cell coordinates in a computer memory
US10127277B2 (en) * 2015-07-31 2018-11-13 International Business Machines Corporation Outer join optimizations in database management systems
US10089356B2 (en) 2015-08-28 2018-10-02 International Business Machines Corporation Processing window partitioning and ordering for on-line analytical processing (OLAP) functions
US11222036B1 (en) * 2015-12-15 2022-01-11 Amazon Technologies, Inc. Data warehouse access reporting
US10102241B2 (en) * 2016-05-20 2018-10-16 Microsoft Technology Licensing, Llc Detecting errors in spreadsheets
US10572484B2 (en) 2016-09-16 2020-02-25 Oracle International Corporation Duplicate reduction or elimination with hash join operations
US11314741B2 (en) * 2017-08-01 2022-04-26 Salesforce.Com, Inc. Metadata-based statistics-oriented processing of queries in an on-demand environment
US11068483B2 (en) 2017-08-01 2021-07-20 Salesforce.Com, Inc. Dynamic selection and application of rules for processing of queries in an on-demand environment
CN110297858B (en) * 2019-05-27 2021-11-09 苏宁云计算有限公司 Optimization method and device for execution plan, computer equipment and storage medium
US11086894B1 (en) 2019-06-25 2021-08-10 Amazon Technologies, Inc. Dynamically updated data sheets using row links
US11194793B1 (en) * 2019-06-25 2021-12-07 Amazon Technologies, Inc. Dynamically materialized views for sheets based data
US11455303B2 (en) * 2019-07-19 2022-09-27 Oracle International Corporation Driving massive scale out through rewrites of analytical functions
US11151131B2 (en) 2019-07-19 2021-10-19 Bank Of America Corporation Query generation from a natural language input
US11755825B2 (en) 2019-09-12 2023-09-12 Workiva Inc. Method, system, and computing device for facilitating private drafting
GB201916804D0 (en) 2019-11-19 2020-01-01 Ibm Generating an OLAP model from a spreadsheet
GB201916801D0 (en) * 2019-11-19 2020-01-01 Ibm Identifying data relationships from a spreadsheet
GB201916803D0 (en) 2019-11-19 2020-01-01 Ibm Identifying content and structure of olap dimensions from a spreadsheet
US11281687B2 (en) * 2020-01-17 2022-03-22 Sigma Computing, Inc. Compiling a database query
US11100281B1 (en) 2020-08-17 2021-08-24 Workiva Inc. System and method for maintaining links and revisions
US11443108B2 (en) 2020-08-17 2022-09-13 Workiva Inc. System and method for document management using branching
US11989503B2 (en) 2021-01-20 2024-05-21 Workday, Inc. Formula generation by example
WO2022159154A1 (en) * 2021-01-20 2022-07-28 Workday, Inc. Formula generation by example
US11100277B1 (en) 2021-02-15 2021-08-24 Workiva Inc. Systems, methods, and computer-readable media for flow-through formatting for links
US11354362B1 (en) 2021-05-06 2022-06-07 Workiva Inc. System and method for copying linked documents
CN113779161B (en) * 2021-08-27 2022-08-23 北京元年科技股份有限公司 Method and device for generating calculation script, computer equipment and storage medium
US11640495B1 (en) 2021-10-15 2023-05-02 Workiva Inc. Systems and methods for translation comments flowback
US11880381B1 (en) * 2023-07-13 2024-01-23 Snowflake Inc. Notebooks with predictable behavior

Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5319777A (en) * 1990-10-16 1994-06-07 Sinper Corporation System and method for storing and retrieving information from a multidimensional array
US5359724A (en) * 1992-03-30 1994-10-25 Arbor Software Corporation Method and apparatus for storing and retrieving multi-dimensional data in computer memory
US5485608A (en) * 1990-06-29 1996-01-16 Oracle Corporation Methods and apparatus for updating information in a computer system using logs and state identifiers
US5819282A (en) * 1994-02-14 1998-10-06 Digital Equipment Corporation Database generator
US5870760A (en) * 1996-12-19 1999-02-09 Oracle Corporation Dequeuing using queue batch numbers
US5943668A (en) * 1997-06-30 1999-08-24 International Business Machines Corporation Relational emulation of a multi-dimensional database
US5978796A (en) * 1997-06-30 1999-11-02 International Business Machines Corporation Accessing multi-dimensional data by mapping dense data blocks to rows in a relational database
US6298342B1 (en) * 1998-03-16 2001-10-02 Microsoft Corporation Electronic database operations for perspective transformations on relational tables using pivot and unpivot columns
US6317750B1 (en) * 1998-10-26 2001-11-13 Hyperion Solutions Corporation Method and apparatus for accessing multidimensional data
US6389410B1 (en) * 2000-09-07 2002-05-14 Oracle Corporation Method for minimizing the number of sorts required for a query block containing window functions
US20020107754A1 (en) * 2000-06-27 2002-08-08 Donald Stone Rule-based system and apparatus for rating transactions
US6434544B1 (en) * 1999-08-04 2002-08-13 Hyperroll, Israel Ltd. Stand-alone cartridge-style data aggregation server providing data aggregation for OLAP analyses
US6615241B1 (en) * 1997-07-18 2003-09-02 Net Exchange, Llc Correspondent-centric management email system uses message-correspondent relationship data table for automatically linking a single stored message with its correspondents
US6622138B1 (en) * 2000-09-06 2003-09-16 Oracle International Corporation Method and apparatus for optimizing computation of OLAP ranking functions
US6631371B1 (en) * 1998-10-05 2003-10-07 Oracle International Corporation Database fine-grained access control
US20040133567A1 (en) * 2001-06-20 2004-07-08 Oracle International Corporation Run-time optimizations of queries with SQL spreadsheet
US20070192336A1 (en) * 2001-11-15 2007-08-16 Iyer Arjun C SQL adapter business service

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11161656A (en) 1997-11-27 1999-06-18 Asahi Chem Ind Co Ltd Data base retrieval and extraction system and recording medium in which control program for data base retrieval and extraction is recorded

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5485608A (en) * 1990-06-29 1996-01-16 Oracle Corporation Methods and apparatus for updating information in a computer system using logs and state identifiers
US5319777A (en) * 1990-10-16 1994-06-07 Sinper Corporation System and method for storing and retrieving information from a multidimensional array
US5359724A (en) * 1992-03-30 1994-10-25 Arbor Software Corporation Method and apparatus for storing and retrieving multi-dimensional data in computer memory
US5819282A (en) * 1994-02-14 1998-10-06 Digital Equipment Corporation Database generator
US5870760A (en) * 1996-12-19 1999-02-09 Oracle Corporation Dequeuing using queue batch numbers
US5943668A (en) * 1997-06-30 1999-08-24 International Business Machines Corporation Relational emulation of a multi-dimensional database
US5978796A (en) * 1997-06-30 1999-11-02 International Business Machines Corporation Accessing multi-dimensional data by mapping dense data blocks to rows in a relational database
US6615241B1 (en) * 1997-07-18 2003-09-02 Net Exchange, Llc Correspondent-centric management email system uses message-correspondent relationship data table for automatically linking a single stored message with its correspondents
US6298342B1 (en) * 1998-03-16 2001-10-02 Microsoft Corporation Electronic database operations for perspective transformations on relational tables using pivot and unpivot columns
US6631371B1 (en) * 1998-10-05 2003-10-07 Oracle International Corporation Database fine-grained access control
US6317750B1 (en) * 1998-10-26 2001-11-13 Hyperion Solutions Corporation Method and apparatus for accessing multidimensional data
US6434544B1 (en) * 1999-08-04 2002-08-13 Hyperroll, Israel Ltd. Stand-alone cartridge-style data aggregation server providing data aggregation for OLAP analyses
US20020107754A1 (en) * 2000-06-27 2002-08-08 Donald Stone Rule-based system and apparatus for rating transactions
US6622138B1 (en) * 2000-09-06 2003-09-16 Oracle International Corporation Method and apparatus for optimizing computation of OLAP ranking functions
US6389410B1 (en) * 2000-09-07 2002-05-14 Oracle Corporation Method for minimizing the number of sorts required for a query block containing window functions
US20040133567A1 (en) * 2001-06-20 2004-07-08 Oracle International Corporation Run-time optimizations of queries with SQL spreadsheet
US20070192336A1 (en) * 2001-11-15 2007-08-16 Iyer Arjun C SQL adapter business service

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050188352A1 (en) * 2004-02-17 2005-08-25 Bruno Jager Method for generating source code in a procedural, re-entrant-compatible programming language using a spreadsheet representation
US8015481B2 (en) * 2004-02-17 2011-09-06 Xapio Gmbh Method for generating source code in a procedural, re-entrant-compatible programming language using a spreadsheet representation
US8874576B2 (en) 2009-02-27 2014-10-28 Microsoft Corporation Reporting including filling data gaps and handling uncategorized data
US9245002B2 (en) 2009-02-27 2016-01-26 Microsoft Technology Licensing, Llc Reporting including filling data gaps and handling uncategorized data
US9251247B2 (en) 2009-02-27 2016-02-02 Microsoft Technology Licensing, Llc Reporting including filling data gaps and handling uncategorized data
US20120166402A1 (en) * 2010-12-28 2012-06-28 Teradata Us, Inc. Techniques for extending horizontal partitioning to column partitioning
US20170091312A1 (en) * 2015-09-24 2017-03-30 International Business Machines Corporation Generating natural language dialog using a questions corpus
US10049152B2 (en) * 2015-09-24 2018-08-14 International Business Machines Corporation Generating natural language dialog using a questions corpus
CN105183614A (en) * 2015-11-03 2015-12-23 华夏银行股份有限公司 Database failure prediction method and device
US20190197161A1 (en) * 2017-12-22 2019-06-27 Microsoft Technology Licensing, Llc Program synthesis for query optimization
US11016974B2 (en) * 2017-12-22 2021-05-25 Microsoft Technology Licensing, Llc Program synthesis for query optimization

Also Published As

Publication number Publication date
US20040133568A1 (en) 2004-07-08
US7177855B2 (en) 2007-02-13
US7809712B2 (en) 2010-10-05

Similar Documents

Publication Publication Date Title
US7809712B2 (en) Compile-time optimizations of queries with SQL spreadsheet
US7761403B2 (en) Run-time optimizations of queries with SQL spreadsheet
Witkowski et al. Spreadsheets in RDBMS for OLAP
JP4465147B2 (en) Method for calculating spreadsheets in a database system
US6574623B1 (en) Query transformation and simplification for group by queries with rollup/grouping sets in relational database management systems
US8468166B2 (en) Analytic enhancements to model clause in structured query language (SQL)
US6789071B1 (en) Method for efficient query execution using dynamic queries in database environments
Yang et al. Algorithms for materialized view design in data warehousing environment
US7167853B2 (en) Matching and compensation tests for optimizing correlated subqueries within query using automatic summary tables
US8086597B2 (en) Between matching
US6947927B2 (en) Method and apparatus for exploiting statistics on query expressions for optimization
US7228312B2 (en) Transformation tool for mapping XML to relational database
US7895189B2 (en) Index exploitation
US20030093407A1 (en) Incremental maintenance of summary tables with complex grouping expressions
US20070078826A1 (en) Analytic enhancements to model clause in structured query language (SQL)
US7213011B1 (en) Efficient processing of multi-column and function-based in-list predicates
Papastefanatos et al. Relational schema optimization for RDF-based knowledge graphs
US20060253422A1 (en) Efficient computation of multiple group by queries
Theodoratos et al. Incremental design of a data warehouse
Witkowski et al. Advanced SQL modeling in RDBMS
Kovach et al. Correct Compilation of Semiring Contractions
Thiyagarajah Attribute cardinality maps; new query result size estimation techniques for database systems.
Afonso Towards an Efficient OLAP Engine Based on Linear Algebra
Mohania et al. Designing view maintenance algorithm in data warehousing environment
Qi Optimizing PostgreSQL for Social Network Databases

Legal Events

Date Code Title Description
STCF Information on status: patent grant

Free format text: PATENTED CASE

CC Certificate of correction
FPAY Fee payment

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552)

Year of fee payment: 8

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 12