US20100312748A1 - Multidimensional cube functions - Google Patents
Multidimensional cube functions Download PDFInfo
- Publication number
- US20100312748A1 US20100312748A1 US12/852,235 US85223510A US2010312748A1 US 20100312748 A1 US20100312748 A1 US 20100312748A1 US 85223510 A US85223510 A US 85223510A US 2010312748 A1 US2010312748 A1 US 2010312748A1
- Authority
- US
- United States
- Prior art keywords
- cube
- function
- olap
- parsing
- parameters
- 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.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/177—Editing, e.g. inserting or deleting of tables; using ruled lines
- G06F40/18—Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
Definitions
- Spreadsheet software applications are used by many different users for manipulating data. Typical spreadsheet applications simulate physical spreadsheets by capturing, displaying, and manipulating data arranged in rows and columns. In addition to using spreadsheet applications, many users also store and utilize enormous amounts of data stored in multidimensional databases. These multidimensional databases are also known as OLAP cubes. These OLAP cubes are architecturally different from relational databases or object oriented databases and the language used to query and describe elements within the OLAP cubes is the Multi-Dimensional eXpression (MDX) language. OLAP systems analyze data drawn from other databases, often large relational databases such as data warehouses, or other multidimensional databases. The purpose of such analysis is to aggregate and organize business information into a readily accessible, easy to use multidimensional structure. Placing this multidimensional data within a PivotTable report within a spreadsheet is limiting because PivotTable reports are restrictive in their layout.
- MDX Multi-Dimensional eXpression
- Cube functions may be used to obtain data from a multidimensional database.
- the cube functions may be contained within one or more cells of a spreadsheet and/or may be accessed through an API.
- the cube functions behave similarly to the standard functions that may be included within cells of a spreadsheet.
- Exemplary cube functions include, obtaining: a cube member, a cube value, a cube set, a ranked member, a KPI, a member property and a count of items in a set.
- Data may be obtained from one or more multidimensional databases.
- the cube functions may be executed asynchronously such that a user may continue to interact with the spreadsheet while the requested data is being obtained from one or more of the multidimensional databases.
- the cube functions may take parameters that may include other spreadsheet cell references as well as other cube functions.
- the use of the cube functions enables the spreadsheet program to be used as a reporting tool for multidimensional (OLAP) data stores. Using the cube formulas in individual cells allows the user to add/delet
- FIG. 1 illustrates an exemplary computing architecture for a computer
- FIG. 2 illustrates an overview of a spreadsheet system for accessing multidimensional data through the use of cube functions
- FIG. 3 illustrates a system for interfacing with OLAP cubes from cells of a spreadsheet application
- FIG. 4 illustrates cube functions that may be utilized to connect with a multidimensional database
- FIG. 5 displays an operational flow for using cube functions within a spreadsheet
- FIGS. 6 and 7 show an exemplary spreadsheet that includes cube functions before evaluation and after evaluation, in accordance with aspects of the present invention.
- FIG. 1 and the corresponding discussion are intended to provide a brief, general description of a suitable computing environment in which embodiments of the invention may be implemented.
- program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types.
- Other computer system configurations may also be used, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like.
- Distributed computing environments may also be used where tasks are performed by remote processing devices that are linked through a communications network.
- program modules may be located in both local and remote memory storage devices.
- MDX refers to the MultiDimensional eXpressions language.
- KPI refers to a Key Performance Indicator.
- MDX Name is a name as defined by MDX.
- the MDX unique name of a member is generally in the form [Dimension].[Hierarchy].[Level].&[MemberKey] wherein all of these components are required.
- Non-unique names could have several other forms including [Member] or [Dimension].[Member] or [Dimension].&[98765].
- caption refers to a non-unique friendly name to be displayed in the spreadsheet.
- connection refers to the name of a data connection that has been stored within a spreadsheet workbook. Connection names are strings that uniquely identify connections within the workbook in which they are used.
- cube refers to the multi-dimensional OLAP database from which data is retrieved.
- member is a value along one of the cube's dimensions. For example, a member of a Time dimension might be “June 2003”. A member of a customers dimension might be “John Doe.”
- the term “tuple” is the intersection of one or more members in a cube, with only one member from each dimension. The tuple represents the slice of the cube that includes the specified members. When a tuple contains only one member then that member and the tuple are identical to each other.
- the MDX Name for a tuple is of the form ( ⁇ member1>, ⁇ member2> . . . ⁇ memberN>) where each ⁇ member> is replaced with the MDX name of that member.
- the term “set” is an ordered collection of one or more members (or tuples).
- cube functions may be used to access data from a multidimensional database.
- users can enter one or more cube functions into one or more of the spreadsheet cells, specify a multidimensional database, query a selected database, and then return the data to be used within the cell(s) of the spreadsheet.
- the data may be an aggregated value, a dimension member, a KPI, or a member property.
- the use of these cube functions enables the spreadsheet program to be more easily used as a reporting tool for multidimensional OLAP data stores.
- Using the cube functions within the individual cells of the spreadsheet provides far greater layout and formatting flexibility than using other methods which enforce limitations on the layout of the spreadsheet.
- FIG. 1 an exemplary computer architecture for a computer 2 utilized in various embodiments will be described.
- the computer architecture shown in FIG. 1 may be configured in many different ways.
- the computer may be configured as a server, a personal computer, a mobile computer and the like.
- computer 2 includes a central processing unit 5 (“CPU”), a system memory 7 , including a random access memory 9 (“RAM”) and a read-only memory (“ROM”) 11 , and a system bus 12 that couples the memory to the CPU 5 .
- a basic input/output system containing the basic routines that help to transfer information between elements within the computer, such as during startup, is stored in the ROM 11 .
- the computer 2 further includes a mass storage device 14 for storing an operating system 16 , application programs, and other program modules, which will be described in greater detail below.
- the mass storage device 14 is connected to the CPU 5 through a mass storage controller (not shown) connected to the bus 12 .
- the mass storage device 14 and its associated computer-readable media provide non-volatile storage for the computer 2 .
- computer-readable media can be any available media that can be accessed by the computer 2 .
- Computer-readable media may comprise computer storage media and communication media.
- Computer storage media includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data.
- Computer storage media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid state memory technology, CD-ROM, digital versatile disks (“DVD”), or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the computer 2 .
- the computer 2 operates in a networked environment using logical connections to remote computers through a network 18 , such as the Internet.
- the computer 2 may connect to the network 18 through a network interface unit 20 connected to the bus 12 .
- the network interface unit 20 may also be utilized to connect to other types of networks and remote computer systems.
- the computer 2 may also include an input/output controller 22 for receiving and processing input from a number of devices, such as: a keyboard, mouse, electronic stylus and the like. Similarly, the input/output controller 22 may provide output to a display screen, a printer, or some other type of device (not shown).
- a number of devices such as: a keyboard, mouse, electronic stylus and the like.
- the input/output controller 22 may provide output to a display screen, a printer, or some other type of device (not shown).
- a number of program modules and data files may be stored in the mass storage device 14 and RAM 9 of the computer 2 , including an operating system 16 suitable for controlling the operation of a networked computer, such as: the WINDOWS XP operating system from MICROSOFT CORPORATION; UNIX; LINUX and the like.
- the mass storage device 14 and RAM 9 may also store one or more program modules.
- the mass storage device 14 and the RAM 9 may store a spreadsheet application program 10 , such as the MICROSOFT® EXCEL spreadsheet application.
- the spreadsheet application 10 is operative to provide functionality for interacting with an OLAP data store through the use of cube functions that are entered into one or more cells of spreadsheet application 10 .
- the spreadsheet may generate one or more requests to fetch data from an OLAP cube identified by the cube function contained within the cell and populate a cell when there are cube functions contained within one or more cells of the spreadsheet.
- the spreadsheet application 10 is configured to receive user input. For example, a user enters item data into a spreadsheet via a graphical user interface.
- the user input can be item data, item metadata, function information, cube function information, or other data.
- the user input may be direct input created by the user typing, pasting, or other deliberate action entering data into the spreadsheet or indirect input that may be generated by another program.
- Calculation engine 26 performs operations relating to the cells within the spreadsheet. According to one embodiment, calculation engine 26 is a component within the spreadsheet application 10 . The calculation engine 26 , however, may be located externally from the spreadsheet application 10 . The operations performed by calculation engine 26 may be mathematical, such as summation, division, multiplication, etc., or may include other functions or features, such as interacting with a multidimensional data store. Calculation engine 26 may be configured to perform many different operations.
- FIG. 2 illustrates an overview of a spreadsheet system 200 for accessing multidimensional data through the use of cube functions, in accordance with aspects of the invention.
- system 200 includes a server 202 , which includes and/or is coupled to a multidimensional database 204 , such as an OLAP data store.
- Server 202 is coupled to client 206 through a network connection.
- Client 206 includes a spreadsheet application 208 .
- Spreadsheet application 208 includes spreadsheet cells 210 .
- an active cell 212 which is highlighted by the dark border, is the cell within the spreadsheet that is currently being acted upon. For example, the user is entering a cube function into the cell.
- Zero or more of the spreadsheet cells may contain a cube function which is directed at interacting with and retrieving data from the multidimensional database 204 .
- each cube function includes a Connection parameter 214 that identifies the multi-dimensional database to access.
- the user may select a UI element, such as a dropdown, to choose from a list of available connections to OLAP cubes. The selected value is then included within the cube function.
- Communication between the spreadsheet application and the OLAP database 204 may be accomplished using MDX. Any other language, however, may be utilized that can communicate with an OLAP database.
- the application is described herein as a spreadsheet, it will be appreciated that other applications, such as word processing applications that include spreadsheet cells, as well as other applications utilizing cells, may utilize the cube functions described herein. According to another embodiment, the cube functions may be maintained separately from an application and may be accessed through an API.
- a user may enter cube functions within one or more of the cells within spreadsheet 208 to fetch data from the OLAP database 204 .
- the queries to retrieve the data from the OLAP cube(s) that are sent may be MDX expressions.
- Each of the cube functions includes connection information that specifies the appropriate database.
- formulas within the spreadsheet can include the following: cube functions as defined herein that directly query an OLAP cube; dependent cube functions that query an OLAP cube but that also require the results of a different query as one of their arguments; standard spreadsheet functions that have a dependency on the values returned by the cube functions; and standard spreadsheet functions that have no dependency.
- the queries are combined into fewer queries such that fewer queries are made to the OLAP server.
- the spreadsheet cell calculations may be performed asynchronously. In other words, while data is being fetched from the OLAP server the calculations may continue within the other cells. Therefore, the calculations proceed for the cells that have no dependency on the result set, but are delayed for cells that are dependent. If the cell has no dependency on a query, the cell will get its value right away ( 218 ). If the cell has a dependency on a query, the cell is filled with a temporary error value of “#GETTING DATA . . . ” ( 216 ) and the calculation proceeds to the next cell in the chain. This error shows the user that an action is being performed that relates to the cell.
- the spreadsheet triggers the aggregated query(s) needed to obtain data.
- This query is run asynchronously whenever possible. Asynchronous query processing may be desired so that the query won't block the spreadsheet applications UI thread and users can continue to work with the UI and can even abort the query when it's taking too long.
- the error message is replaced with the fetched external data values and the calc is triggered for the cells that were dependent on the value that came in.
- FIG. 3 illustrates a system 300 for interfacing with OLAP cubes from cells of a spreadsheet application, in accordance with aspects of the invention.
- System 300 in this embodiment includes a server 302 which correspondingly has one or more databases stored thereupon 304 .
- System 300 may optionally include a network 306 such as a LAN, WAN, the Internet or other network which server 302 may be coupled to.
- a network 306 such as a LAN, WAN, the Internet or other network which server 302 may be coupled to.
- System 300 includes client 308 .
- Client 308 includes a communication module 310 that is coupled to a spreadsheet application 312 .
- communication module 310 is coupled to the network 306 .
- Communication module 310 may also be directly coupled to server 302 and/or directly to OLAP cube(s) 304 .
- a user configures a new spreadsheet in spreadsheet application 312 , they may chose from a list of OLAP cubes 304 to which it may connect. Alternatively, the user may type in the location of an OLAP cube to be connected. This link may then be given a connection name, such that this name is used by a query module 311 to construct a query for the named OLAP cube.
- Query module 311 is configured to receive the cube function(s) from one or more cells within the spreadsheet application and then construct an MDX query that will be passed on to server 302 (via communication module 310 ) to be interpreted.
- the appropriate cube 304 is then queried and, in response to the query, returns data from the database relating to the query to communication module 310 .
- Communication module 310 then passes the data to the spreadsheet application 312 , which in turn fills in the cell(s) with the data. When other cells within the spreadsheet depend upon the returned data, those cells may then be updated.
- Communication module 310 may be located on client 308 , however it may also be included on server 302 or may be included in cube(s) 304 , among other locations. Communication module 310 is typically provided by cube(s) 304 such that the client 308 and spreadsheet application 312 may communicate with the cube(s) 304 . In one embodiment, communication module 310 may comprise a dynamic-link library (DLL) that is provided (and configured) by the particular linked cube.
- DLL dynamic-link library
- query module 311 is shown as being separate from spreadsheet application 312 , it may be included within the spreadsheet application 312 .
- the location of query module 311 may also be other than in the client 308 , such as within the server 302 , or at some remote location.
- FIG. 4 illustrates cube functions that may be utilized to connect with a multidimensional database, in accordance with aspects of the invention.
- FIG. 4 includes the following cube functions: cube value function 410 ; cube member function 420 ; cube set function 430 ; cube ranked member 440 ; cube KPI member 450 ; cube member property 460 ; and cube set count 470 .
- CubeValue (Connection [,Name1] [,Name2] . . . [,NameN]) function 410 returns an aggregated value from the OLAP cube specified by the connection parameter.
- the “Name” parameter is an optional parameter that may appear any number of times within the CubeValue function call.
- one cube value function call may contain only one name, while another cube value function call may contain many names, separated by commas.
- each name is the MDX name of a member or tuple (or tuple) within the cube.
- the name could be a Set as defined by a CubeSet function as described below.
- the provided names are used as slicers to define the portion of the cube for which an aggregated value is to be returned. According to one embodiment, if a Name is not supplied for any particular hierarchy, then the default member for that hierarchy is used. Similarly, when a Name is not supplied for any measure, then the default measure for the cube is used.
- the Name parameter may also be a cell reference to another cell in the spreadsheet that contains a unique MDX name in the cell's MDX property. Any cells that contain the CubeMember( ) function evaluate to a caption plus a unique MDX name in the cell's MDX property.
- the tuple associated with any CubeValue is stored. This increases the efficiency to communicate with the OLAP server about the portion of the cube that's associated with the desired value.
- the CubeMember (Connection, Name [,Caption]) function 420 returns a fully qualified unique MDX member name, or MDX tuple, as well as the user-friendly caption for that member.
- the user-friendly caption is the caption of the last member in the tuple. Evaluating this function causes the cell to display the caption, while the cell's MDX property is set to the unique MDX member name or MDX expression for the tuple.
- the CubeMember function returns an error (#N/A) when the specified Name is not found within the specified cube.
- the Name parameter is a string containing the MDX member name of a member within the cube.
- the CubeMember function validates that the provided name exists within the cube and then returns the unique member name associated with this member as the MDX property along with that member's caption as the function's value.
- This argument may also represent a tuple.
- the user specifies an array of members using the spreadsheet's array syntax.
- the name argument may also be a reference to a cell that contains a member, or a cell that contains a string which evaluates to a unique MDX name, or a range of cells which will evaluate to a tuple.
- the Caption parameter is an optional string to be used as the caption in place of any caption that we obtain from the cube.
- CubeMember (“conn”, “[Customers].[USA]”); and CubeMember(“Finance”,[Account].[Accounts].[NetIncome].[Operating Profit].[Gross Margin].[Net Sales].[Gross Sales]).
- the CubeSet (Connection, Expression [,Caption] [,SortOrder] [,SortBy]) function 430 defines a set that is to be built for the spreadsheet by the OLAP server.
- the CubeSet function sends the Expression to the OLAP server defined by the specified Connection.
- the server then creates a set by evaluating the Expression and returns that set to the spreadsheet program.
- the spreadsheet then uses the Caption as the function's display value, while also setting the function's MDX (value) metadata to the MDX Expression that was sent to the OLAP server.
- the Expression parameter is a string containing any arbitrary MDX expression that can be evaluated by the OLAP server which results in a set of members or a set of tuples.
- An expression can also be a cell reference to a range that contains one or more cube members or tuples or sets.
- the Expression argument defines the items that are to be included in the set.
- the Caption parameter is the optional string to be used as the caption that describes the set being created. When the caption is not provided, then the caption is set to a null string.
- the SortOrder parameter is an optional integer argument whose value, according to one embodiment, is one of the following:
- the SortBy parameter is an optional expression string that defines the values on which sorting is to be done. For example, if a user would want to obtain the city with the highest sales, then the Expression parameter defines a set of cities, and the SortBy parameter is the sales measure. If the user wants to obtain the city with the highest population, then the Expression parameter defines a set of cities, and the SortBy parameter is the population measure.
- the CubeSet function results in a set containing the items defined by the Expression parameter in the specified SortOrder by SortBy.
- CubeSet( ) The following are some illustrative examples of the CubeSet( ) function: CubeSet(“Finance”, “Order([Product].[Product].[Product Category].Members, [Measures].[Unit Sales], ASC)”, “Products”); and CubeSet(“Sales”, “[Product].[All Products].Children”, “Products”, 1, “[Measures].[Sales Amount]”).
- the CubeRankedMember (Connection, Set, Rank [,Caption]) function 440 returns the Nth (Rank) cube member (or tuple) in a Set, with the Caption as the display value, and a unique MDX name as the cell's MDX property.
- the Set is an expression that evaluates to a set within an OLAP cube. In order to obtain this set, the CubeSet( ) function may be used. This means that Set may be a reference to a cell that contains a CubeSet( ) function.
- OLAP servers such as MICROSOFT CORPORATION'S Analysis Services a set may be defined by an expression within curly braces: such as “ ⁇ [Item1].children ⁇ ”.
- the CubeRankedMember function returns one of the elements within the Set.
- the Rank parameter is an integer that determines the element within the set to return. When the Rank parameter is set to one then the CubeRanked Member function returns the first value. When the Rank parameter equals two then the second value is returned, and so on. For example, calling this function five different times with the Rank parameter set to 1 thru 5 is one way to obtain the “Top 5” items from an OLAP cube.
- the Caption parameter is an optional string to be used as the caption in place of the member caption as obtained from the OLAP cube.
- CubeRankedMember( ) function CubeRankedMember ($D$4, 1, “Top Month”); and CubeRankedMember (CubeSet (“SALES”, “Summer”, “[1999].[June]”, “[1999].[July]”, “[1999].[August]”), 1, “Top Month”).
- the CubeKPIMember (Connection, KPIName, KPIComponent [,Caption]) function 450 returns the KPI specified by the KPI name and the KPI Component.
- this KPI includes a fully qualified unique MDX expression as well as the user-friendly caption for that KPI.
- Evaluating CubeKPIMember function causes the cell's value within the spreadsheet to be set to the caption, while the cell's MDX property is set to the unique MDX expression for the requested KPI.
- the CubeKPIMember function returns an empty string caption and has a NULL MDX property when the specified KPIName is not found within the specified OLAP cube.
- the KPIName is the name of the KPI in the cube that is to be queried.
- the KPIComponent is one of the following values: 1—KPIValue; 2—KPIGoal; 3—KPIStatus; 4—KPITrend; 5—KPIWeight; and 6—KPICurrentTimeMember. These are the components (properties) that make up a KPI. This Caption is an optional string to be used as the caption in place of any caption that is obtained from the cube. To obtain the value of a KPI member with additional slicers as appropriate, the user may use the CubeValue function, and references this KPI just as if it were a member of any hierarchy in the cube.
- CubeKPIMember (“Sales”, “MySalesKPI”, 1); and CubeKPIMember (“Sales”, “MySalesKPI”, 2 , “Sales KPI Goal”).
- the CubeMemberProperty (Connection, Name, Property) function 460 returns the value of a member property in the cube.
- the Name is the MDX unique name of a member within the cube.
- the CubeMemberProperty function validates that the name exists within the cube and then returns the specified property for this member.
- the Property is the MDX name of the property to be returned or a reference to a cell that contains the name of the property.
- CubeMemberProperty( ) function The following are some illustrative examples of the CubeMemberProperty( ) function: CubeMemberProperty (“Sales”, “[Time].[Fiscal].[1999]”, $A$3); and CubeMemberProperty (“Sales”, “[Store].[MyFavoriteStore]”, “[Store].[Store Name].[Store Sqft]”).
- the CubeSetCount(Connection, Set) function 470 returns the number of items in the Set.
- the Set is an expression that evaluates to a set as defined by the CubeSet function. In many cases, the cell will contain a CubeSet function.
- the MDX property provides a tuple as returned from the server representing the unique name of the member or tuple defined by the function.
- FIG. 5 displays an operational flow 500 for using cube functions within a spreadsheet, in accordance with aspects of the invention.
- operation 510 defines a multidimensional database.
- a database is defined or created when the particular coordinates are defined and saved, and the data fields populated.
- the multidimensional databases are OLAP databases that have already been created and populated.
- the selected databases are coupled to the spreadsheet at operation 530 .
- a spreadsheet is created that includes cube functions.
- a user may create a spreadsheet from scratch in which all of the cells within the spreadsheet are defined, but, typically, a user may start with a spreadsheet that has at least been partially created.
- a cell may include zero or more of the following cube functions: a cube member function; a cube value function; a cube set function; a cube ranked member function; a cubed KPI member function; a cube member property function; and a cube set count function as described more fully herein.
- the spreadsheet is coupled to the database.
- different databases may be linked to the information in that cell and/or spreadsheet. In this way, each cell containing a cube function may fetch data from the appropriate OLAP data store.
- queries are created for the cube functions within the cells of the spreadsheet.
- the queries are in the form of MDX queries.
- the queries are used to fetch the data relating to the cube functions from one or more multidimensional data stores.
- the cells within the spreadsheet may then be populated with the fetched data.
- the results of the queries and any calculations that were performed may be displayed to the user.
- the process then moves to an end block and returns to processing other actions.
- FIGS. 6 and 7 show an exemplary spreadsheet that includes cube functions before evaluation and after evaluation, in accordance with aspects of the invention.
- FIG. 6 shows the cube function text within the cells.
- FIG. 7 shows the result of calculating the cube functions.
- each cell within spreadsheet 600 and 700 includes a cube function. Including a cube function within each cell of the spreadsheet is merely for illustrative purposes.
- the spreadsheet may have zero or more cube functions contained within the cells.
- a spreadsheet may include only a single cube function to obtain a single value from an OLAP cube.
- cell A3 includes the cube member function that connects to the finance database and includes an MDX expression “[Account].[Accounts].[Net Income].[Operating Profit].[Gross Margin].[Net Sales].[Gross Sales].”
- cell A3 is displayed as “Gross Sales.”
- Cell B3 includes a cube value function that obtains the values from the $A$1, $B$1, B$2, and $A3 that results in an aggregated value of 3,200,477.00 as displayed in cell B3 of spreadsheet 700 .
- each cube function has connection information to the “Finance” OLAP cube.
- each spreadsheet may have zero or more cube connections. For example, one cell could include a cube function to obtain data from a first OLAP cube and another cell could include a cube function to obtain data from a second store.
- Using cube functions within the spreadsheet allows the users to insert and/or delete rows and columns without interfering with the data's ability to be refreshed.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
Cube functions may be used to obtain data from a multidimensional database. The cube functions may be contained within one or more cells of a spreadsheet. These cube functions behave similarly to the standard functions that may be included within a spreadsheet. Exemplary cube functions include obtaining: a cube member, a cube value, a cube set, a ranked member, a KPI, a member property and a count relating to a set. The cube functions within the spreadsheet may access the cube data from one or more multidimensional databases. Using the cube formulas in individual cells allows the user to add/delete rows and/or columns from within the spreadsheet.
Description
- Spreadsheet software applications are used by many different users for manipulating data. Typical spreadsheet applications simulate physical spreadsheets by capturing, displaying, and manipulating data arranged in rows and columns. In addition to using spreadsheet applications, many users also store and utilize enormous amounts of data stored in multidimensional databases. These multidimensional databases are also known as OLAP cubes. These OLAP cubes are architecturally different from relational databases or object oriented databases and the language used to query and describe elements within the OLAP cubes is the Multi-Dimensional eXpression (MDX) language. OLAP systems analyze data drawn from other databases, often large relational databases such as data warehouses, or other multidimensional databases. The purpose of such analysis is to aggregate and organize business information into a readily accessible, easy to use multidimensional structure. Placing this multidimensional data within a PivotTable report within a spreadsheet is limiting because PivotTable reports are restrictive in their layout.
- This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
- Cube functions may be used to obtain data from a multidimensional database. The cube functions may be contained within one or more cells of a spreadsheet and/or may be accessed through an API. The cube functions behave similarly to the standard functions that may be included within cells of a spreadsheet. Exemplary cube functions include, obtaining: a cube member, a cube value, a cube set, a ranked member, a KPI, a member property and a count of items in a set. Data may be obtained from one or more multidimensional databases. The cube functions may be executed asynchronously such that a user may continue to interact with the spreadsheet while the requested data is being obtained from one or more of the multidimensional databases. The cube functions may take parameters that may include other spreadsheet cell references as well as other cube functions. The use of the cube functions enables the spreadsheet program to be used as a reporting tool for multidimensional (OLAP) data stores. Using the cube formulas in individual cells allows the user to add/delete rows and/or columns from within the spreadsheet.
-
FIG. 1 illustrates an exemplary computing architecture for a computer; -
FIG. 2 illustrates an overview of a spreadsheet system for accessing multidimensional data through the use of cube functions; -
FIG. 3 illustrates a system for interfacing with OLAP cubes from cells of a spreadsheet application; -
FIG. 4 illustrates cube functions that may be utilized to connect with a multidimensional database; -
FIG. 5 displays an operational flow for using cube functions within a spreadsheet; and -
FIGS. 6 and 7 show an exemplary spreadsheet that includes cube functions before evaluation and after evaluation, in accordance with aspects of the present invention. - Referring now to the drawings, in which like numerals represent like elements, various aspects of the present invention will be described. In particular,
FIG. 1 and the corresponding discussion are intended to provide a brief, general description of a suitable computing environment in which embodiments of the invention may be implemented. - Generally, program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types. Other computer system configurations may also be used, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. Distributed computing environments may also be used where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
- Throughout the specification and claims, the following terms take the meanings explicitly associated herein, unless the context clearly dictates otherwise. The term “MDX” refers to the MultiDimensional eXpressions language. The term “KPI” refers to a Key Performance Indicator. The term “MDX Name” is a name as defined by MDX. The MDX unique name of a member is generally in the form [Dimension].[Hierarchy].[Level].&[MemberKey] wherein all of these components are required. Non-unique names could have several other forms including [Member] or [Dimension].[Member] or [Dimension].&[98765]. The term “caption” refers to a non-unique friendly name to be displayed in the spreadsheet. The term “connection” refers to the name of a data connection that has been stored within a spreadsheet workbook. Connection names are strings that uniquely identify connections within the workbook in which they are used. The term “cube” refers to the multi-dimensional OLAP database from which data is retrieved. The term “member” is a value along one of the cube's dimensions. For example, a member of a Time dimension might be “June 2003”. A member of a customers dimension might be “John Doe.” The term “tuple” is the intersection of one or more members in a cube, with only one member from each dimension. The tuple represents the slice of the cube that includes the specified members. When a tuple contains only one member then that member and the tuple are identical to each other. The MDX Name for a tuple is of the form (<member1>, <member2> . . . <memberN>) where each <member> is replaced with the MDX name of that member. When the spreadsheet refers to a range of cells that contain members (or tuples) these ranges are interpreted as tuples. For example, if cells A10 thru A13 of a spreadsheet contain members, then the cube function=CubeValue (“MyConnection”, $A10:$A13, D$2) has a tuple as its second argument. The term “set” is an ordered collection of one or more members (or tuples).
- Briefly described, cube functions may be used to access data from a multidimensional database. According to embodiments, users can enter one or more cube functions into one or more of the spreadsheet cells, specify a multidimensional database, query a selected database, and then return the data to be used within the cell(s) of the spreadsheet. According to one embodiment, the data may be an aggregated value, a dimension member, a KPI, or a member property. The use of these cube functions enables the spreadsheet program to be more easily used as a reporting tool for multidimensional OLAP data stores. Using the cube functions within the individual cells of the spreadsheet provides far greater layout and formatting flexibility than using other methods which enforce limitations on the layout of the spreadsheet.
- Referring now to
FIG. 1 , an exemplary computer architecture for acomputer 2 utilized in various embodiments will be described. The computer architecture shown inFIG. 1 may be configured in many different ways. For example, the computer may be configured as a server, a personal computer, a mobile computer and the like. As shown,computer 2 includes a central processing unit 5 (“CPU”), asystem memory 7, including a random access memory 9 (“RAM”) and a read-only memory (“ROM”) 11, and asystem bus 12 that couples the memory to theCPU 5. A basic input/output system containing the basic routines that help to transfer information between elements within the computer, such as during startup, is stored in theROM 11. Thecomputer 2 further includes amass storage device 14 for storing anoperating system 16, application programs, and other program modules, which will be described in greater detail below. - The
mass storage device 14 is connected to theCPU 5 through a mass storage controller (not shown) connected to thebus 12. Themass storage device 14 and its associated computer-readable media provide non-volatile storage for thecomputer 2. Although the description of computer-readable media contained herein refers to a mass storage device, such as a hard disk or CD-ROM drive, the computer-readable media can be any available media that can be accessed by thecomputer 2. - By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid state memory technology, CD-ROM, digital versatile disks (“DVD”), or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the
computer 2. - According to various embodiments, the
computer 2 operates in a networked environment using logical connections to remote computers through anetwork 18, such as the Internet. Thecomputer 2 may connect to thenetwork 18 through anetwork interface unit 20 connected to thebus 12. Thenetwork interface unit 20 may also be utilized to connect to other types of networks and remote computer systems. - The
computer 2 may also include an input/output controller 22 for receiving and processing input from a number of devices, such as: a keyboard, mouse, electronic stylus and the like. Similarly, the input/output controller 22 may provide output to a display screen, a printer, or some other type of device (not shown). - As mentioned briefly above, a number of program modules and data files may be stored in the
mass storage device 14 andRAM 9 of thecomputer 2, including anoperating system 16 suitable for controlling the operation of a networked computer, such as: the WINDOWS XP operating system from MICROSOFT CORPORATION; UNIX; LINUX and the like. Themass storage device 14 andRAM 9 may also store one or more program modules. In particular, themass storage device 14 and theRAM 9 may store aspreadsheet application program 10, such as the MICROSOFT® EXCEL spreadsheet application. According to one embodiment, thespreadsheet application 10 is operative to provide functionality for interacting with an OLAP data store through the use of cube functions that are entered into one or more cells ofspreadsheet application 10. The spreadsheet may generate one or more requests to fetch data from an OLAP cube identified by the cube function contained within the cell and populate a cell when there are cube functions contained within one or more cells of the spreadsheet. - The
spreadsheet application 10 is configured to receive user input. For example, a user enters item data into a spreadsheet via a graphical user interface. The user input can be item data, item metadata, function information, cube function information, or other data. The user input may be direct input created by the user typing, pasting, or other deliberate action entering data into the spreadsheet or indirect input that may be generated by another program. -
Calculation engine 26 performs operations relating to the cells within the spreadsheet. According to one embodiment,calculation engine 26 is a component within thespreadsheet application 10. Thecalculation engine 26, however, may be located externally from thespreadsheet application 10. The operations performed bycalculation engine 26 may be mathematical, such as summation, division, multiplication, etc., or may include other functions or features, such as interacting with a multidimensional data store.Calculation engine 26 may be configured to perform many different operations. -
FIG. 2 illustrates an overview of aspreadsheet system 200 for accessing multidimensional data through the use of cube functions, in accordance with aspects of the invention. As illustrated,system 200 includes aserver 202, which includes and/or is coupled to amultidimensional database 204, such as an OLAP data store.Server 202 is coupled toclient 206 through a network connection.Client 206 includes aspreadsheet application 208.Spreadsheet application 208 includesspreadsheet cells 210. Typically, anactive cell 212, which is highlighted by the dark border, is the cell within the spreadsheet that is currently being acted upon. For example, the user is entering a cube function into the cell. Zero or more of the spreadsheet cells may contain a cube function which is directed at interacting with and retrieving data from themultidimensional database 204. According to one embodiment, each cube function includes aConnection parameter 214 that identifies the multi-dimensional database to access. According to one embodiment, the user may select a UI element, such as a dropdown, to choose from a list of available connections to OLAP cubes. The selected value is then included within the cube function. - Communication between the spreadsheet application and the
OLAP database 204 may be accomplished using MDX. Any other language, however, may be utilized that can communicate with an OLAP database. Furthermore, although the application is described herein as a spreadsheet, it will be appreciated that other applications, such as word processing applications that include spreadsheet cells, as well as other applications utilizing cells, may utilize the cube functions described herein. According to another embodiment, the cube functions may be maintained separately from an application and may be accessed through an API. - Generally, a user may enter cube functions within one or more of the cells within
spreadsheet 208 to fetch data from theOLAP database 204. The queries to retrieve the data from the OLAP cube(s) that are sent may be MDX expressions. Each of the cube functions includes connection information that specifies the appropriate database. - The cells within the spreadsheet that contain cube functions appear to the user to behave as any other cell within the spreadsheet that contains a formula. Generally, formulas within the spreadsheet can include the following: cube functions as defined herein that directly query an OLAP cube; dependent cube functions that query an OLAP cube but that also require the results of a different query as one of their arguments; standard spreadsheet functions that have a dependency on the values returned by the cube functions; and standard spreadsheet functions that have no dependency.
- If each of these cube functions is independently executed within the spreadsheet then there may be a large number of small queries against the OLAP server. This could result in diminished performance for the spreadsheet application. According to one embodiment, the queries are combined into fewer queries such that fewer queries are made to the OLAP server.
- The spreadsheet cell calculations may be performed asynchronously. In other words, while data is being fetched from the OLAP server the calculations may continue within the other cells. Therefore, the calculations proceed for the cells that have no dependency on the result set, but are delayed for cells that are dependent. If the cell has no dependency on a query, the cell will get its value right away (218). If the cell has a dependency on a query, the cell is filled with a temporary error value of “#GETTING DATA . . . ” (216) and the calculation proceeds to the next cell in the chain. This error shows the user that an action is being performed that relates to the cell.
- When all of the cells have been evaluated, the spreadsheet triggers the aggregated query(s) needed to obtain data. This query is run asynchronously whenever possible. Asynchronous query processing may be desired so that the query won't block the spreadsheet applications UI thread and users can continue to work with the UI and can even abort the query when it's taking too long. As the values arrive for the cells that display the #GETTING_DATA . . . 216 error message, the error message is replaced with the fetched external data values and the calc is triggered for the cells that were dependent on the value that came in.
-
FIG. 3 illustrates asystem 300 for interfacing with OLAP cubes from cells of a spreadsheet application, in accordance with aspects of the invention.System 300 in this embodiment includes aserver 302 which correspondingly has one or more databases stored thereupon 304.System 300 may optionally include anetwork 306 such as a LAN, WAN, the Internet or other network whichserver 302 may be coupled to. -
System 300 includesclient 308.Client 308 includes acommunication module 310 that is coupled to aspreadsheet application 312. Furthermore,communication module 310 is coupled to thenetwork 306.Communication module 310 may also be directly coupled toserver 302 and/or directly to OLAP cube(s) 304. - When a user configures a new spreadsheet in
spreadsheet application 312, they may chose from a list ofOLAP cubes 304 to which it may connect. Alternatively, the user may type in the location of an OLAP cube to be connected. This link may then be given a connection name, such that this name is used by aquery module 311 to construct a query for the named OLAP cube.Query module 311 is configured to receive the cube function(s) from one or more cells within the spreadsheet application and then construct an MDX query that will be passed on to server 302 (via communication module 310) to be interpreted. Theappropriate cube 304 is then queried and, in response to the query, returns data from the database relating to the query tocommunication module 310.Communication module 310 then passes the data to thespreadsheet application 312, which in turn fills in the cell(s) with the data. When other cells within the spreadsheet depend upon the returned data, those cells may then be updated. -
Communication module 310 may be located onclient 308, however it may also be included onserver 302 or may be included in cube(s) 304, among other locations.Communication module 310 is typically provided by cube(s) 304 such that theclient 308 andspreadsheet application 312 may communicate with the cube(s) 304. In one embodiment,communication module 310 may comprise a dynamic-link library (DLL) that is provided (and configured) by the particular linked cube. - While
query module 311 is shown as being separate fromspreadsheet application 312, it may be included within thespreadsheet application 312. The location ofquery module 311 may also be other than in theclient 308, such as within theserver 302, or at some remote location. -
FIG. 4 illustrates cube functions that may be utilized to connect with a multidimensional database, in accordance with aspects of the invention. - As illustrated,
FIG. 4 includes the following cube functions:cube value function 410;cube member function 420; cube setfunction 430; cube rankedmember 440;cube KPI member 450;cube member property 460; and cube setcount 470. - CubeValue (Connection [,Name1] [,Name2] . . . [,NameN])
function 410 returns an aggregated value from the OLAP cube specified by the connection parameter. The “Name” parameter is an optional parameter that may appear any number of times within the CubeValue function call. For example, one cube value function call may contain only one name, while another cube value function call may contain many names, separated by commas. According to one embodiment, each name is the MDX name of a member or tuple (or tuple) within the cube. Alternatively, the name could be a Set as defined by a CubeSet function as described below. The provided names are used as slicers to define the portion of the cube for which an aggregated value is to be returned. According to one embodiment, if a Name is not supplied for any particular hierarchy, then the default member for that hierarchy is used. Similarly, when a Name is not supplied for any measure, then the default measure for the cube is used. The Name parameter may also be a cell reference to another cell in the spreadsheet that contains a unique MDX name in the cell's MDX property. Any cells that contain the CubeMember( ) function evaluate to a caption plus a unique MDX name in the cell's MDX property. - According to one embodiment, the tuple associated with any CubeValue is stored. This increases the efficiency to communicate with the OLAP server about the portion of the cube that's associated with the desired value. The following are some illustrative examples of the CubeValue( ) function: CubeValue (“SALES”, “[Measures].[Profit]”, “[Time].[1999]”, “[All Product].[Beverages]”); CubeValue ($A$1, “[Measures].[Profit]”, D$12, $A23); and CubeValue (“SALES”, $B$7, D$12, $A23).
- The CubeMember (Connection, Name [,Caption])
function 420 returns a fully qualified unique MDX member name, or MDX tuple, as well as the user-friendly caption for that member. According to one embodiment, when a tuple is returned, the user-friendly caption is the caption of the last member in the tuple. Evaluating this function causes the cell to display the caption, while the cell's MDX property is set to the unique MDX member name or MDX expression for the tuple. The CubeMember function returns an error (#N/A) when the specified Name is not found within the specified cube. The Name parameter is a string containing the MDX member name of a member within the cube. The CubeMember function validates that the provided name exists within the cube and then returns the unique member name associated with this member as the MDX property along with that member's caption as the function's value. This argument may also represent a tuple. When the argument is a tuple, the user specifies an array of members using the spreadsheet's array syntax. The name argument may also be a reference to a cell that contains a member, or a cell that contains a string which evaluates to a unique MDX name, or a range of cells which will evaluate to a tuple. The Caption parameter is an optional string to be used as the caption in place of any caption that we obtain from the cube. - The following are some illustrative examples of the CubeMember( ) function: CubeMember (“conn”, “[Customers].[USA]”); and CubeMember(“Finance”,[Account].[Accounts].[NetIncome].[Operating Profit].[Gross Margin].[Net Sales].[Gross Sales]).
- The CubeSet (Connection, Expression [,Caption] [,SortOrder] [,SortBy])
function 430 defines a set that is to be built for the spreadsheet by the OLAP server. The CubeSet function sends the Expression to the OLAP server defined by the specified Connection. The server then creates a set by evaluating the Expression and returns that set to the spreadsheet program. The spreadsheet then uses the Caption as the function's display value, while also setting the function's MDX (value) metadata to the MDX Expression that was sent to the OLAP server. - The Expression parameter is a string containing any arbitrary MDX expression that can be evaluated by the OLAP server which results in a set of members or a set of tuples. An expression can also be a cell reference to a range that contains one or more cube members or tuples or sets. The Expression argument defines the items that are to be included in the set.
- The Caption parameter is the optional string to be used as the caption that describes the set being created. When the caption is not provided, then the caption is set to a null string.
- The SortOrder parameter is an optional integer argument whose value, according to one embodiment, is one of the following:
-
0 = SORT_NONE Leaves the Set in it's existing order 1 = SORT_ASCENDING Sorts Set in ascending order by SortBy field 2 = SORT_DESCENDING Sorts Set in descending order by SortBy field 3 = SORT_ALPHA_ASCENDING Sorts Set in Alpha ascending order 4 = SORT_ALPHA_DESCENDING Sorts Set in Alpha descending order 5 = SORT_NATURAL_ASCENDING Sorts Set in Natural ascending order 6 = SORT_NATURAL_DESCENDING Sorts Set in Natural descending order - The SortBy parameter is an optional expression string that defines the values on which sorting is to be done. For example, if a user would want to obtain the city with the highest sales, then the Expression parameter defines a set of cities, and the SortBy parameter is the sales measure. If the user wants to obtain the city with the highest population, then the Expression parameter defines a set of cities, and the SortBy parameter is the population measure. The CubeSet function results in a set containing the items defined by the Expression parameter in the specified SortOrder by SortBy.
- The following are some illustrative examples of the CubeSet( ) function: CubeSet(“Finance”, “Order([Product].[Product].[Product Category].Members, [Measures].[Unit Sales], ASC)”, “Products”); and CubeSet(“Sales”, “[Product].[All Products].Children”, “Products”, 1, “[Measures].[Sales Amount]”).
- The CubeRankedMember (Connection, Set, Rank [,Caption])
function 440 returns the Nth (Rank) cube member (or tuple) in a Set, with the Caption as the display value, and a unique MDX name as the cell's MDX property. The Set is an expression that evaluates to a set within an OLAP cube. In order to obtain this set, the CubeSet( ) function may be used. This means that Set may be a reference to a cell that contains a CubeSet( ) function. In some OLAP servers, such as MICROSOFT CORPORATION'S Analysis Services a set may be defined by an expression within curly braces: such as “{[Item1].children}”. The CubeRankedMember function returns one of the elements within the Set. The Rank parameter is an integer that determines the element within the set to return. When the Rank parameter is set to one then the CubeRanked Member function returns the first value. When the Rank parameter equals two then the second value is returned, and so on. For example, calling this function five different times with the Rank parameter set to 1 thru 5 is one way to obtain the “Top 5” items from an OLAP cube. The Caption parameter is an optional string to be used as the caption in place of the member caption as obtained from the OLAP cube. - The following are some illustrative examples of the CubeRankedMember( ) function: CubeRankedMember ($D$4, 1, “Top Month”); and CubeRankedMember (CubeSet (“SALES”, “Summer”, “[1999].[June]”, “[1999].[July]”, “[1999].[August]”), 1, “Top Month”).
- The CubeKPIMember (Connection, KPIName, KPIComponent [,Caption])
function 450 returns the KPI specified by the KPI name and the KPI Component. According to one embodiment, this KPI includes a fully qualified unique MDX expression as well as the user-friendly caption for that KPI. Evaluating CubeKPIMember function causes the cell's value within the spreadsheet to be set to the caption, while the cell's MDX property is set to the unique MDX expression for the requested KPI. The CubeKPIMember function returns an empty string caption and has a NULL MDX property when the specified KPIName is not found within the specified OLAP cube. The KPIName is the name of the KPI in the cube that is to be queried. The KPIComponent is one of the following values: 1—KPIValue; 2—KPIGoal; 3—KPIStatus; 4—KPITrend; 5—KPIWeight; and 6—KPICurrentTimeMember. These are the components (properties) that make up a KPI. This Caption is an optional string to be used as the caption in place of any caption that is obtained from the cube. To obtain the value of a KPI member with additional slicers as appropriate, the user may use the CubeValue function, and references this KPI just as if it were a member of any hierarchy in the cube. - The following are some illustrative examples of the CubeKPIMember( ) function: CubeKPIMember (“Sales”, “MySalesKPI”, 1); and CubeKPIMember (“Sales”, “MySalesKPI”, 2, “Sales KPI Goal”).
- The CubeMemberProperty (Connection, Name, Property) function 460 returns the value of a member property in the cube. The Name is the MDX unique name of a member within the cube. The CubeMemberProperty function validates that the name exists within the cube and then returns the specified property for this member. The Property is the MDX name of the property to be returned or a reference to a cell that contains the name of the property.
- The following are some illustrative examples of the CubeMemberProperty( ) function: CubeMemberProperty (“Sales”, “[Time].[Fiscal].[1999]”, $A$3); and CubeMemberProperty (“Sales”, “[Store].[MyFavoriteStore]”, “[Store].[Store Name].[Store Sqft]”).
- The CubeSetCount(Connection, Set) function 470 returns the number of items in the Set. The Set is an expression that evaluates to a set as defined by the CubeSet function. In many cases, the cell will contain a CubeSet function. The following are some illustrative examples of the CubeSetCount( ) function: CubeSetCount (A3) and CubeSetCount (CubeSet (connection1, expression1, caption)).
- When the Cube function is CubeSet or CubeSetCount, the MDX property is the MDX expression that is sent to the server for evaluation. It is the same as the Expression argument for the CubeSet function. For example: Cell C3 contains: =CubeSet(“conn”, “[Customers].children”); Cell C4 contains: =CubeSetCount(C3); Range (“C3”).MDX=“[Customers].children” and Range (“C4”).MDX=“[Customers]. children.”
- When the Cube function is CubeMember, CubeRankedMember, CubeValue, CubeKPIMember or CubeMemberProperty, then the MDX property provides a tuple as returned from the server representing the unique name of the member or tuple defined by the function. For example: Cell C3 contains: =CubeMember (“conn”, “[Customers].[USA]”); Cell C4 contains: =CubeValue(“conn”, “[Bicycles]”, “[WA]”); Range (“C3”).MDX=(<unique member name for USA>) as returned by server; and Range (“C4”).MDX=(<tuple containing unique member names for Bicycles and WA>).
- When reading the discussion of the routines presented herein, it should be appreciated that the logical operations of various embodiments are implemented (1) as a sequence of computer implemented acts or program modules running on a computing system and/or (2) as interconnected machine logic circuits or circuit modules within the computing system. The implementation is a matter of choice dependent on the performance requirements of the computing system implementing the invention. Accordingly, the logical operations illustrated and making up the embodiments of the described herein are referred to variously as operations, structural devices, acts or modules. These operations, structural devices, acts and modules may be implemented in software, in firmware, in special purpose digital logic, and any combination thereof.
-
FIG. 5 displays anoperational flow 500 for using cube functions within a spreadsheet, in accordance with aspects of the invention. After a start block, the process flows to defineoperation 510, which defines a multidimensional database. A database is defined or created when the particular coordinates are defined and saved, and the data fields populated. Typically, the multidimensional databases are OLAP databases that have already been created and populated. In this case, the selected databases are coupled to the spreadsheet atoperation 530. - Moving to operation 520, a spreadsheet is created that includes cube functions. Generally, a user may create a spreadsheet from scratch in which all of the cells within the spreadsheet are defined, but, typically, a user may start with a spreadsheet that has at least been partially created. According to one embodiment of the invention, a cell may include zero or more of the following cube functions: a cube member function; a cube value function; a cube set function; a cube ranked member function; a cubed KPI member function; a cube member property function; and a cube set count function as described more fully herein.
- Flowing to
operation 530, the spreadsheet is coupled to the database. When the spreadsheet is created and particular cells are defined within the spreadsheet to include cube functions, different databases may be linked to the information in that cell and/or spreadsheet. In this way, each cell containing a cube function may fetch data from the appropriate OLAP data store. - Transitioning to
operation 540, queries are created for the cube functions within the cells of the spreadsheet. According to one embodiment, the queries are in the form of MDX queries. - Moving to
operation 550, the queries are used to fetch the data relating to the cube functions from one or more multidimensional data stores. The cells within the spreadsheet may then be populated with the fetched data. - At
operation 560, the results of the queries and any calculations that were performed may be displayed to the user. The process then moves to an end block and returns to processing other actions. -
FIGS. 6 and 7 show an exemplary spreadsheet that includes cube functions before evaluation and after evaluation, in accordance with aspects of the invention.FIG. 6 shows the cube function text within the cells.FIG. 7 shows the result of calculating the cube functions. - As illustrated, each cell within
spreadsheet - Referring to a few of the cells within
spreadsheet 600 it can be seen that cell A3 includes the cube member function that connects to the finance database and includes an MDX expression “[Account].[Accounts].[Net Income].[Operating Profit].[Gross Margin].[Net Sales].[Gross Sales].” As can be seen referring tospreadsheet 700 inFIG. 7 , cell A3 is displayed as “Gross Sales.” Cell B3 includes a cube value function that obtains the values from the $A$1, $B$1, B$2, and $A3 that results in an aggregated value of 3,200,477.00 as displayed in cell B3 ofspreadsheet 700. As illustrated each cube function has connection information to the “Finance” OLAP cube. As discussed above, however, each spreadsheet may have zero or more cube connections. For example, one cell could include a cube function to obtain data from a first OLAP cube and another cell could include a cube function to obtain data from a second store. - Using cube functions within the spreadsheet allows the users to insert and/or delete rows and columns without interfering with the data's ability to be refreshed.
- The above specification, examples and data provide a complete description of the manufacture and use of the composition of the invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.
Claims (21)
1-26. (canceled)
27. A computer-readable storage medium having computer-executable instructions for interacting with an OLAP cube, comprising:
parsing a cube function having parameters; wherein the cube function is included within a cell of a spreadsheet and wherein the cube function is directed at obtaining data from an OLAP cube; wherein the cube function is from cube functions comprising: a cube member function that identifies an item in the OLAP cube and returns a name for the member; a cube value function that identifies an aggregated value from the OLAP cube; a cube set function that defines a set that is to be built for the spreadsheet by an OLAP server storing the OLAP cube; and a member property function that identifies a value of a member property in the OLAP cube and a count relating to a set within the OLAP cube;
determining an OLAP cube from which to obtain data from one of the parameters of the cube function; and
fetching the data from the determined OLAP cube in response to the parameters of the cube function.
28. The computer-readable storage medium of claim 27 , wherein determining the OLAP cube from which to obtain data comprises locating a connection name that determines the OLAP cube to obtain data from.
29. The computer-readable storage medium of claim 27 , wherein parsing the cube function comprises parsing the parameters to locate one or more names, wherein the names identify at least one of a member and a tuple within the OLAP cube; and wherein each of the located names is used a slicer to define a portion of the OLAP cube for which an aggregated value is to be fetched from the OLAP cube.
30. The computer-readable storage medium of claim 27 , wherein parsing the cube function comprises parsing the parameters to locate a name that identifies a member of the OLAP cube and using the name to fetch at least one of a unique MDX member name, a MDX tuple, and a caption for the member of the OLAP cube.
31. The computer-readable storage medium of claim 27 , wherein parsing the cube function comprises parsing the parameters to locate an expression that identifies a set that is at least one of a set of members within the OLAP cube and a set of tuples within the OLAP cube; and then using the query to fetch the set from the OLAP cube; and when a sort parameter exists within the parameters; using the sort parameter to sort the set.
32. The computer-readable storage medium of claim 27 , wherein parsing the cube function comprises parsing the parameters to locate a set and a rank; wherein the rank is used to fetch at least one of the elements from the set.
33. The computer-readable storage medium of claim 27 , wherein parsing the cube function comprises parsing the parameters to locate a KPI name and a KPI component; wherein the KPI name and the KPI component are used to fetch a member from the OLAP cube.
34. The computer-readable storage medium of claim 27 , wherein parsing the cube function comprises parsing the parameters to locate a set and wherein a number of the members within the set is determined.
35. The computer-readable storage medium of claim 27 , wherein parsing the cube function comprises parsing the parameters to locate a name and a member; wherein the name and member are used to obtain a value of a member property in the OLAP cube.
36. A system for interacting with a multidimensional database from a spreadsheet, comprising:
a processor and a computer-readable storage medium; and
a spreadsheet application that is coupled to a network and is configured to perform steps, comprising:
parsing a cube function having parameters that is located within a cell of the spreadsheet to generate an MDX query; wherein the MDX query locates data within a multidimensional database; wherein the cube function is from cube functions comprising a cube member function that identifies an item in the multidimensional database and returns a name for the member; a cube value function that identifies an aggregated value from the multidimensional database; a cube set function that defines a set that is to be built for the spreadsheet by an OLAP server storing the multidimensional database; and a member property function that identifies a value of a member property in the multidimensional database and a count relating to a set within the multidimensional database;
determining the multidimensional database to query based on at least one of the parameters of the cube function;
querying a server identified by the determined multidimensional database using the MDX query;
receiving data from the server that is returned in response to the MDX query; and
updating the cell and any other dependent cells in response to the received data.
37. The system of claim 36 , wherein the MDX query requests at least one of the following from the multidimensional database: a ranked member; a KPI member; a member property of an item within the multidimensional database and a count relating to a set within the multidimensional database.
38. The system of claim 37 , wherein different cells of the spreadsheet request data from different multidimensional databases.
39. The system of claim 37 , wherein parsing the cube function comprises parsing the parameters to locate names, wherein the names identify a member and a tuple within the OLAP cube; and wherein each of the located names is used a slicer to define a portion of the OLAP cube for which an aggregated value is to be fetched from the OLAP cube.
40. A method for interacting with an OLAP cube, comprising:
parsing a cube function having parameters; wherein the cube function is included within a cell of a spreadsheet and wherein the cube function is directed at obtaining data from an OLAP cube; wherein the spreadsheet includes cells that do not include data from a multidimensional database;
determining an OLAP cube from which to obtain the data by accessing one of the parameters of the cube function; and
fetching the data from the determined OLAP cube in response to the parameters of the cube function.
41. The method of claim 40 , wherein parsing the cube function comprises parsing the parameters to locate names that identify at least one of a member and a tuple within the OLAP cube; and wherein each of the located names is used a slicer to define a portion of the OLAP cube for which an aggregated value is to be fetched from the OLAP cube.
42. The method of claim 40 , wherein parsing the cube function comprises parsing the parameters to locate a name that is used to fetch at least one of a unique MDX member name, a MDX tuple, and a caption for the member of the OLAP cube.
43. The method of claim 40 , wherein parsing the cube function comprises parsing the parameters to locate an expression that identifies a set that is at least one of a set of members within the OLAP cube and a set of tuples within the OLAP cube; and then using the query to fetch the set from the OLAP cube; and when a sort parameter exists within the parameters; using the sort parameter to sort the set.
44. The method of claim 40 , wherein parsing the cube function comprises parsing the parameters to locate a set and a rank; wherein the rank is used to fetch at least one of the elements from the set.
45. The method of claim 40 , wherein parsing the cube function comprises parsing the parameters to locate a set and wherein a number of the members within the set is determined.
46. The method of claim 40 , wherein parsing the cube function comprises parsing the parameters to locate a name and a member; wherein the name and member are used to obtain a value of a member property in the OLAP cube.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/852,235 US20100312748A1 (en) | 2005-10-14 | 2010-08-06 | Multidimensional cube functions |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/251,598 US7805433B2 (en) | 2005-10-14 | 2005-10-14 | Multidimensional cube functions |
US12/852,235 US20100312748A1 (en) | 2005-10-14 | 2010-08-06 | Multidimensional cube functions |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/251,598 Continuation US7805433B2 (en) | 2005-10-14 | 2005-10-14 | Multidimensional cube functions |
Publications (1)
Publication Number | Publication Date |
---|---|
US20100312748A1 true US20100312748A1 (en) | 2010-12-09 |
Family
ID=37949308
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/251,598 Expired - Fee Related US7805433B2 (en) | 2005-10-14 | 2005-10-14 | Multidimensional cube functions |
US12/852,235 Abandoned US20100312748A1 (en) | 2005-10-14 | 2010-08-06 | Multidimensional cube functions |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/251,598 Expired - Fee Related US7805433B2 (en) | 2005-10-14 | 2005-10-14 | Multidimensional cube functions |
Country Status (1)
Country | Link |
---|---|
US (2) | US7805433B2 (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070055922A1 (en) * | 2005-09-08 | 2007-03-08 | Microsoft Corporation | Autocompleting with queries to a database |
US20070168323A1 (en) * | 2006-01-03 | 2007-07-19 | Microsoft Corporation | Query aggregation |
US20100131457A1 (en) * | 2008-11-26 | 2010-05-27 | Microsoft Corporation | Flattening multi-dimensional data sets into de-normalized form |
US20110131173A1 (en) * | 2009-12-01 | 2011-06-02 | Internation Business Machines Corporation | Compensating for unbalanced hierarchies when generating olap queries from report specifications |
US20140279833A1 (en) * | 2013-03-13 | 2014-09-18 | Sas Institute Inc. | Method to reduce large olap cube size using cell selection rules |
CN106649697A (en) * | 2016-12-19 | 2017-05-10 | 蒋子轩 | Online software interactive experiential method |
US9766779B2 (en) | 2013-03-11 | 2017-09-19 | Microsoft Technology Licensing, Llc | Dynamic validation of selectable data |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8209280B2 (en) * | 2003-05-07 | 2012-06-26 | Oracle International Corporation | Exposing multidimensional calculations through a relational database server |
US8200612B2 (en) * | 2003-05-07 | 2012-06-12 | Oracle International Corporation | Efficient SQL access to multidimensional data |
US7792847B2 (en) * | 2005-09-09 | 2010-09-07 | Microsoft Corporation | Converting structured reports to formulas |
US7805433B2 (en) * | 2005-10-14 | 2010-09-28 | Microsoft Corporation | Multidimensional cube functions |
US8121975B2 (en) * | 2008-02-20 | 2012-02-21 | Panorama Software Inc. | Creating pivot tables from tabular data |
US8386916B2 (en) * | 2008-12-29 | 2013-02-26 | SAP France S.A. | Systems and methods to create a multidimensional expression calculated member in a spreadsheet cell |
US9275031B2 (en) * | 2009-10-09 | 2016-03-01 | Microsoft Technology Licensing, Llc | Data analysis expressions |
US9098483B2 (en) * | 2010-12-07 | 2015-08-04 | Business Objects Software Limited | Systems and methods to provide dynamic local members associated with an add-in for a spreadsheet application |
AU2012362383B2 (en) * | 2011-12-29 | 2018-05-10 | Bibo Labs, Inc. | Spreadsheet-based programming language adapted for report generation |
US8856234B2 (en) * | 2013-02-28 | 2014-10-07 | Workiva Llc | System and method for performing distributed asynchronous calculations in a networked environment |
US9116931B2 (en) * | 2013-07-12 | 2015-08-25 | Logic9S, Llc | Integrated, configurable, analytical, temporal, visual electronic plan system |
US9026897B2 (en) * | 2013-07-12 | 2015-05-05 | Logic9S, Llc | Integrated, configurable, sensitivity, analytical, temporal, visual electronic plan system |
US9442977B2 (en) | 2013-09-06 | 2016-09-13 | Sap Se | Database language extended to accommodate entity-relationship models |
US9619552B2 (en) | 2013-09-06 | 2017-04-11 | Sap Se | Core data services extensibility for entity-relationship models |
US9354948B2 (en) | 2013-09-06 | 2016-05-31 | Sap Se | Data models containing host language embedded constraints |
US9361407B2 (en) | 2013-09-06 | 2016-06-07 | Sap Se | SQL extended with transient fields for calculation expressions in enhanced data models |
US9176801B2 (en) | 2013-09-06 | 2015-11-03 | Sap Se | Advanced data models containing declarative and programmatic constraints |
US9639572B2 (en) | 2013-09-06 | 2017-05-02 | Sap Se | SQL enhancements simplifying database querying |
US9430523B2 (en) | 2013-09-06 | 2016-08-30 | Sap Se | Entity-relationship model extensions using annotations |
US9575819B2 (en) | 2013-09-06 | 2017-02-21 | Sap Se | Local buffers for event handlers |
US20150199399A1 (en) * | 2014-01-10 | 2015-07-16 | Sebastian Schroetel | Query generator |
US9817876B2 (en) | 2015-06-29 | 2017-11-14 | Planisware SAS | Enhanced mechanisms for managing multidimensional data |
US10346435B2 (en) | 2015-10-23 | 2019-07-09 | Oracle International Corporation | System and method for improved performance in a multidimensional database environment |
US10838982B2 (en) | 2015-10-23 | 2020-11-17 | Oracle International Corporation | System and method for aggregating values through risk dimension hierarchies in a multidimensional database environment |
JP6846356B2 (en) | 2015-10-23 | 2021-03-24 | オラクル・インターナショナル・コーポレイション | Systems and methods for automatically inferring the cube schema used in a multidimensional database environment from tabular data |
US10552393B2 (en) | 2015-10-23 | 2020-02-04 | Oracle International Corporation | System and method for use of a dynamic flow in a multidimensional database environment |
US10936574B2 (en) | 2015-10-23 | 2021-03-02 | Oracle International Corporation | System and method for use of lock-less techniques with a multidimensional database |
US10733155B2 (en) | 2015-10-23 | 2020-08-04 | Oracle International Corporation | System and method for extracting a star schema from tabular data for use in a multidimensional database environment |
US10984020B2 (en) * | 2015-10-23 | 2021-04-20 | Oracle International Corporation | System and method for supporting large queries in a multidimensional database environment |
US10318498B2 (en) | 2015-10-23 | 2019-06-11 | Oracle International Corporation | System and method for parallel support of multidimensional slices with a multidimensional database |
US10467251B2 (en) | 2015-10-23 | 2019-11-05 | Oracle International Corporation | System and method for automatic dependency analysis for use with a multidimensional database |
US11226987B2 (en) | 2015-10-23 | 2022-01-18 | Oracle International Corporation | System and method for in-place data writes to reduce fragmentation in a multidimensional database environment |
US10628451B2 (en) | 2015-10-23 | 2020-04-21 | Oracle International Corporation | System and method for supporting queries having sub-select constructs in a multidimensional database environment |
US11681704B2 (en) * | 2016-02-01 | 2023-06-20 | Qliktech International Ab | Methods and systems for distributed data analysis |
US10909134B2 (en) | 2017-09-01 | 2021-02-02 | Oracle International Corporation | System and method for client-side calculation in a multidimensional database environment |
US10983972B2 (en) | 2017-09-08 | 2021-04-20 | Oracle International Corporation | System and method for slowing changing dimension and metadata versioning in a multidimensional database environment |
US11042569B2 (en) | 2017-09-29 | 2021-06-22 | Oracle International Corporation | System and method for load, aggregate and batch calculation in one scan in a multidimensional database environment |
US11593402B2 (en) | 2017-09-29 | 2023-02-28 | Oracle International Corporation | System and method for enabling multiple parents with weights in a multidimensional database environment |
US11016986B2 (en) * | 2017-12-04 | 2021-05-25 | Palantir Technologies Inc. | Query-based time-series data display and processing system |
US11281696B1 (en) | 2018-04-30 | 2022-03-22 | Workday, Inc. | Systems and methods for improving computational speed of planning by tracking dependencies in hypercubes |
US11422881B2 (en) | 2018-07-19 | 2022-08-23 | Oracle International Corporation | System and method for automatic root cause analysis and automatic generation of key metrics in a multidimensional database environment |
US11188554B2 (en) | 2018-07-19 | 2021-11-30 | Oracle International Corporation | System and method for real time data aggregation in a virtual cube in a multidimensional database environment |
US11481539B1 (en) * | 2018-09-17 | 2022-10-25 | George McMann | Systems and methods for improved building of interactive workbooks within business reporting, analysis, and management software |
US11200223B2 (en) | 2018-10-18 | 2021-12-14 | Oracle International Corporation | System and method for dependency analysis in a multidimensional database environment |
EP4028905A1 (en) | 2019-09-13 | 2022-07-20 | Goldman Sachs & Co. LLC | Spreadsheet with dynamic database queries |
US11562130B2 (en) * | 2021-01-29 | 2023-01-24 | Oracle International Corporation | Client-side 2D rendering of server-side multidimensional data |
WO2023073806A1 (en) * | 2021-10-26 | 2023-05-04 | 日本電信電話株式会社 | Data analysis processing device, data analysis processing method, and program |
Citations (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5175810A (en) * | 1989-06-19 | 1992-12-29 | Digital Equipment Corporation | Tabular data format |
US5319777A (en) * | 1990-10-16 | 1994-06-07 | Sinper Corporation | System and method for storing and retrieving information from a multidimensional array |
US5845300A (en) * | 1996-06-05 | 1998-12-01 | Microsoft Corporation | Method and apparatus for suggesting completions for a partially entered data item based on previously-entered, associated data items |
US5874955A (en) * | 1994-02-03 | 1999-02-23 | International Business Machines Corporation | Interactive rule based system with selection feedback that parameterizes rules to constrain choices for multiple operations |
US5880742A (en) * | 1993-09-17 | 1999-03-09 | Xerox-Corporation | Spreadsheet image showing data items as indirect graphical representations |
US6317750B1 (en) * | 1998-10-26 | 2001-11-13 | Hyperion Solutions Corporation | Method and apparatus for accessing multidimensional data |
US20020013786A1 (en) * | 2000-01-07 | 2002-01-31 | Robert Machalek | Data mining and reporting |
US6366299B1 (en) * | 2000-02-21 | 2002-04-02 | Verizon Laboratories Inc. | Multidimensional information visualization using attribute rods |
US20020046131A1 (en) * | 2000-10-16 | 2002-04-18 | Barry Boone | Method and system for listing items globally and regionally, and customized listing according to currency or shipping area |
US6377965B1 (en) * | 1997-11-07 | 2002-04-23 | Microsoft Corporation | Automatic word completion system for partially entered data |
US20020095658A1 (en) * | 1997-05-27 | 2002-07-18 | Microsoft Corporation | Computer programming language statement building and information tool |
US20020118221A1 (en) * | 2001-02-27 | 2002-08-29 | Microsoft Corporation | Interactive tooltip |
US6460059B1 (en) * | 1998-08-04 | 2002-10-01 | International Business Machines Corporation | Visual aid to simplify achieving correct cell interrelations in spreadsheets |
US20020184260A1 (en) * | 2001-05-30 | 2002-12-05 | Paul Martin | Multidimensional data entry in a spreadsheet |
US20020194217A1 (en) * | 2001-04-26 | 2002-12-19 | International Business Machnies Corporation | Metadata graphial user interface |
US20030009649A1 (en) * | 2001-05-30 | 2003-01-09 | Paul Martin | Dynamic conversion of spreadsheet formulas to multidimensional calculation rules |
US20030026143A1 (en) * | 2001-08-03 | 2003-02-06 | Brennan Declan M. | Method for automating the construction of data stores for storing complex relational and hierarchical data and optimising the access and update of the data therein method for defining look and feel of a user interface obviating the requirement to write programming language code |
US20030033288A1 (en) * | 2001-08-13 | 2003-02-13 | Xerox Corporation | Document-centric system with auto-completion and auto-correction |
US20030055832A1 (en) * | 1999-10-25 | 2003-03-20 | Oracle Corporation | Storing multidimensional data in a relational database management system |
US20030055843A1 (en) * | 2001-09-06 | 2003-03-20 | Inventec Corporation | Server system and method for providing online multi-dimensional production data report |
US6564213B1 (en) * | 2000-04-18 | 2003-05-13 | Amazon.Com, Inc. | Search query autocompletion |
US6626959B1 (en) * | 1999-06-14 | 2003-09-30 | Microsoft Corporation | Automatic formatting of pivot table reports within a spreadsheet |
US6631497B1 (en) * | 1999-07-19 | 2003-10-07 | International Business Machines Corporation | Binding data from data source to cells in a spreadsheet |
US6640234B1 (en) * | 1998-12-31 | 2003-10-28 | Microsoft Corporation | Extension of formulas and formatting in an electronic spreadsheet |
US6728724B1 (en) * | 1998-05-18 | 2004-04-27 | Microsoft Corporation | Method for comparative visual rendering of data |
US6757867B2 (en) * | 2000-01-06 | 2004-06-29 | International Business Machines Corporation | Method and system in an electronic spreadsheet for adding or removing elements from a cell named range according to different modes |
US20040133568A1 (en) * | 2001-06-20 | 2004-07-08 | Oracle International Corporation | Compile-time optimizations of queries with SQL spreadsheet |
US20040237029A1 (en) * | 2003-05-22 | 2004-11-25 | Medicke John A. | Methods, systems and computer program products for incorporating spreadsheet formulas of multi-dimensional cube data into a multi-dimentional cube |
US6829607B1 (en) * | 2000-04-24 | 2004-12-07 | Microsoft Corporation | System and method for facilitating user input by automatically providing dynamically generated completion information |
US20050010565A1 (en) * | 2003-05-27 | 2005-01-13 | David Cushing | System and method of transforming queries based upon E/R schema into multi-dimensional expression queries |
US20050027750A1 (en) * | 2003-04-11 | 2005-02-03 | Cricket Technologies, Llc | Electronic discovery apparatus, system, method, and electronically stored computer program product |
US20050091206A1 (en) * | 2003-09-10 | 2005-04-28 | Francois Koukerdjinian | Method and system for handling data available in multidimensional databases using a spreadsheet |
US6907428B2 (en) * | 2001-11-02 | 2005-06-14 | Cognos Incorporated | User interface for a multi-dimensional data store |
US20050165825A1 (en) * | 2004-01-26 | 2005-07-28 | Andrzej Turski | Automatic query clustering |
US20050165754A1 (en) * | 2004-01-14 | 2005-07-28 | Ramasamy Valliappan | Method and system for data retrieval from heterogeneous data sources |
US20050183002A1 (en) * | 2002-03-04 | 2005-08-18 | Frederic Chapus | Data and metadata linking form mechanism and method |
US20050184260A1 (en) * | 2004-02-23 | 2005-08-25 | Bjarte Fageraas | Digital optical signal transmission in a seismic sensor array |
US20050223061A1 (en) * | 2004-03-31 | 2005-10-06 | Auerbach David B | Methods and systems for processing email messages |
US20050223027A1 (en) * | 2004-03-31 | 2005-10-06 | Lawrence Stephen R | Methods and systems for structuring event data in a database for location and retrieval |
US20060010367A1 (en) * | 2004-07-09 | 2006-01-12 | Juergen Sattler | System and method for spreadsheet data integration |
US20060015805A1 (en) * | 2004-07-16 | 2006-01-19 | Humenansky Brian S | Spreadsheet user-interface for an enterprise planning system having multi-dimensional data store |
US7043476B2 (en) * | 2002-10-11 | 2006-05-09 | International Business Machines Corporation | Method and apparatus for data mining to discover associations and covariances associated with data |
US20060107196A1 (en) * | 2004-11-12 | 2006-05-18 | Microsoft Corporation | Method for expanding and collapsing data cells in a spreadsheet report |
US20060129929A1 (en) * | 2004-12-15 | 2006-06-15 | Microsoft Corporation | System and method for automatically completing spreadsheet formulas |
US20060129598A1 (en) * | 2002-03-19 | 2006-06-15 | Hyperion Solutions Corporation | Method of splitting a multi-dimensional cube between a multi-dimensional and a relational database |
US20060212469A1 (en) * | 2005-03-18 | 2006-09-21 | Microsoft Corporation | Method and system to associate cell and item metadata |
US20060224553A1 (en) * | 2005-04-01 | 2006-10-05 | Microsoft Corporation | Method and system for generating an auto-completion list for a cascading style sheet selector |
US20060293944A1 (en) * | 2005-06-28 | 2006-12-28 | Michael Igelbrink | Generic interface to provide object access display views based on object type |
US20070027876A1 (en) * | 2005-07-29 | 2007-02-01 | Arnd Peter Graf | Business intelligence OLAP consumer model and API |
US20070027904A1 (en) * | 2005-06-24 | 2007-02-01 | George Chow | System and method for translating between relational database queries and multidimensional database queries |
US20070050702A1 (en) * | 2005-08-29 | 2007-03-01 | Stefan Chopin | System and method for rendering of financial data |
US20070055922A1 (en) * | 2005-09-08 | 2007-03-08 | Microsoft Corporation | Autocompleting with queries to a database |
US20070061344A1 (en) * | 2005-09-09 | 2007-03-15 | Microsoft Corporation | Converting structured reports to formulas |
US20070088691A1 (en) * | 2005-10-14 | 2007-04-19 | Microsoft Corporation | Multidimensional cube functions |
US20070168323A1 (en) * | 2006-01-03 | 2007-07-19 | Microsoft Corporation | Query aggregation |
US20070208721A1 (en) * | 2003-12-01 | 2007-09-06 | Zaman Kazi A | Modeling multidimensional data sources |
US20070219956A1 (en) * | 2006-03-16 | 2007-09-20 | Milton Michael L | Excel spreadsheet parsing to share cells, formulas, tables, etc. |
US7324991B1 (en) * | 2002-08-30 | 2008-01-29 | Hyperion Solutions Corporation | Sampling in a multidimensional database |
US7337163B1 (en) * | 2003-12-04 | 2008-02-26 | Hyperion Solutions Corporation | Multidimensional database query splitting |
US7415481B2 (en) * | 2004-09-30 | 2008-08-19 | Microsoft Corporation | Method and implementation for referencing of dynamic data within spreadsheet formulas |
US20080294612A1 (en) * | 2007-05-22 | 2008-11-27 | It-Workplace | Method For Generating A Representation Of A Query |
US7512580B2 (en) * | 2005-08-04 | 2009-03-31 | Sap Ag | Confidence indicators for automated suggestions |
US7603349B1 (en) * | 2004-07-29 | 2009-10-13 | Yahoo! Inc. | User interfaces for search systems using in-line contextual queries |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100289065B1 (en) | 1997-10-14 | 2001-05-02 | 정선종 | Method for processing natural query language for searching commodity information of electronic commerce |
WO2003088063A1 (en) | 2002-04-18 | 2003-10-23 | Adcheck (Pty) Ltd | A method of retrieving and viewing data from a database |
US7689005B2 (en) * | 2004-03-10 | 2010-03-30 | Yingbin Wang | Apparatus and method for biometric database management system |
-
2005
- 2005-10-14 US US11/251,598 patent/US7805433B2/en not_active Expired - Fee Related
-
2010
- 2010-08-06 US US12/852,235 patent/US20100312748A1/en not_active Abandoned
Patent Citations (68)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5280575A (en) * | 1989-06-19 | 1994-01-18 | Digital Equipment Corporation | Apparatus for cell format control in a spread sheet |
US5175810A (en) * | 1989-06-19 | 1992-12-29 | Digital Equipment Corporation | Tabular data format |
US5319777A (en) * | 1990-10-16 | 1994-06-07 | Sinper Corporation | System and method for storing and retrieving information from a multidimensional array |
US5880742A (en) * | 1993-09-17 | 1999-03-09 | Xerox-Corporation | Spreadsheet image showing data items as indirect graphical representations |
US5874955A (en) * | 1994-02-03 | 1999-02-23 | International Business Machines Corporation | Interactive rule based system with selection feedback that parameterizes rules to constrain choices for multiple operations |
US5845300A (en) * | 1996-06-05 | 1998-12-01 | Microsoft Corporation | Method and apparatus for suggesting completions for a partially entered data item based on previously-entered, associated data items |
US20020095658A1 (en) * | 1997-05-27 | 2002-07-18 | Microsoft Corporation | Computer programming language statement building and information tool |
US6377965B1 (en) * | 1997-11-07 | 2002-04-23 | Microsoft Corporation | Automatic word completion system for partially entered data |
US6728724B1 (en) * | 1998-05-18 | 2004-04-27 | Microsoft Corporation | Method for comparative visual rendering of data |
US6460059B1 (en) * | 1998-08-04 | 2002-10-01 | International Business Machines Corporation | Visual aid to simplify achieving correct cell interrelations in spreadsheets |
US6317750B1 (en) * | 1998-10-26 | 2001-11-13 | Hyperion Solutions Corporation | Method and apparatus for accessing multidimensional data |
US6640234B1 (en) * | 1998-12-31 | 2003-10-28 | Microsoft Corporation | Extension of formulas and formatting in an electronic spreadsheet |
US6626959B1 (en) * | 1999-06-14 | 2003-09-30 | Microsoft Corporation | Automatic formatting of pivot table reports within a spreadsheet |
US6631497B1 (en) * | 1999-07-19 | 2003-10-07 | International Business Machines Corporation | Binding data from data source to cells in a spreadsheet |
US20030055832A1 (en) * | 1999-10-25 | 2003-03-20 | Oracle Corporation | Storing multidimensional data in a relational database management system |
US6757867B2 (en) * | 2000-01-06 | 2004-06-29 | International Business Machines Corporation | Method and system in an electronic spreadsheet for adding or removing elements from a cell named range according to different modes |
US20020013786A1 (en) * | 2000-01-07 | 2002-01-31 | Robert Machalek | Data mining and reporting |
US6366299B1 (en) * | 2000-02-21 | 2002-04-02 | Verizon Laboratories Inc. | Multidimensional information visualization using attribute rods |
US6564213B1 (en) * | 2000-04-18 | 2003-05-13 | Amazon.Com, Inc. | Search query autocompletion |
US6829607B1 (en) * | 2000-04-24 | 2004-12-07 | Microsoft Corporation | System and method for facilitating user input by automatically providing dynamically generated completion information |
US20020046131A1 (en) * | 2000-10-16 | 2002-04-18 | Barry Boone | Method and system for listing items globally and regionally, and customized listing according to currency or shipping area |
US20020118221A1 (en) * | 2001-02-27 | 2002-08-29 | Microsoft Corporation | Interactive tooltip |
US6828988B2 (en) * | 2001-02-27 | 2004-12-07 | Microsoft Corporation | Interactive tooltip |
US20020194217A1 (en) * | 2001-04-26 | 2002-12-19 | International Business Machnies Corporation | Metadata graphial user interface |
US20030009649A1 (en) * | 2001-05-30 | 2003-01-09 | Paul Martin | Dynamic conversion of spreadsheet formulas to multidimensional calculation rules |
US20020184260A1 (en) * | 2001-05-30 | 2002-12-05 | Paul Martin | Multidimensional data entry in a spreadsheet |
US20040133568A1 (en) * | 2001-06-20 | 2004-07-08 | Oracle International Corporation | Compile-time optimizations of queries with SQL spreadsheet |
US20030026143A1 (en) * | 2001-08-03 | 2003-02-06 | Brennan Declan M. | Method for automating the construction of data stores for storing complex relational and hierarchical data and optimising the access and update of the data therein method for defining look and feel of a user interface obviating the requirement to write programming language code |
US20030033288A1 (en) * | 2001-08-13 | 2003-02-13 | Xerox Corporation | Document-centric system with auto-completion and auto-correction |
US20030055843A1 (en) * | 2001-09-06 | 2003-03-20 | Inventec Corporation | Server system and method for providing online multi-dimensional production data report |
US6907428B2 (en) * | 2001-11-02 | 2005-06-14 | Cognos Incorporated | User interface for a multi-dimensional data store |
US20050183002A1 (en) * | 2002-03-04 | 2005-08-18 | Frederic Chapus | Data and metadata linking form mechanism and method |
US20060129598A1 (en) * | 2002-03-19 | 2006-06-15 | Hyperion Solutions Corporation | Method of splitting a multi-dimensional cube between a multi-dimensional and a relational database |
US7324991B1 (en) * | 2002-08-30 | 2008-01-29 | Hyperion Solutions Corporation | Sampling in a multidimensional database |
US7043476B2 (en) * | 2002-10-11 | 2006-05-09 | International Business Machines Corporation | Method and apparatus for data mining to discover associations and covariances associated with data |
US20050027750A1 (en) * | 2003-04-11 | 2005-02-03 | Cricket Technologies, Llc | Electronic discovery apparatus, system, method, and electronically stored computer program product |
US20040237029A1 (en) * | 2003-05-22 | 2004-11-25 | Medicke John A. | Methods, systems and computer program products for incorporating spreadsheet formulas of multi-dimensional cube data into a multi-dimentional cube |
US20050010565A1 (en) * | 2003-05-27 | 2005-01-13 | David Cushing | System and method of transforming queries based upon E/R schema into multi-dimensional expression queries |
US20050091206A1 (en) * | 2003-09-10 | 2005-04-28 | Francois Koukerdjinian | Method and system for handling data available in multidimensional databases using a spreadsheet |
US20070208721A1 (en) * | 2003-12-01 | 2007-09-06 | Zaman Kazi A | Modeling multidimensional data sources |
US7337163B1 (en) * | 2003-12-04 | 2008-02-26 | Hyperion Solutions Corporation | Multidimensional database query splitting |
US20050165754A1 (en) * | 2004-01-14 | 2005-07-28 | Ramasamy Valliappan | Method and system for data retrieval from heterogeneous data sources |
US20050165825A1 (en) * | 2004-01-26 | 2005-07-28 | Andrzej Turski | Automatic query clustering |
US20050184260A1 (en) * | 2004-02-23 | 2005-08-25 | Bjarte Fageraas | Digital optical signal transmission in a seismic sensor array |
US20050223027A1 (en) * | 2004-03-31 | 2005-10-06 | Lawrence Stephen R | Methods and systems for structuring event data in a database for location and retrieval |
US20050223061A1 (en) * | 2004-03-31 | 2005-10-06 | Auerbach David B | Methods and systems for processing email messages |
US20060010367A1 (en) * | 2004-07-09 | 2006-01-12 | Juergen Sattler | System and method for spreadsheet data integration |
US20060015805A1 (en) * | 2004-07-16 | 2006-01-19 | Humenansky Brian S | Spreadsheet user-interface for an enterprise planning system having multi-dimensional data store |
US7603349B1 (en) * | 2004-07-29 | 2009-10-13 | Yahoo! Inc. | User interfaces for search systems using in-line contextual queries |
US7415481B2 (en) * | 2004-09-30 | 2008-08-19 | Microsoft Corporation | Method and implementation for referencing of dynamic data within spreadsheet formulas |
US20060107196A1 (en) * | 2004-11-12 | 2006-05-18 | Microsoft Corporation | Method for expanding and collapsing data cells in a spreadsheet report |
US7451397B2 (en) * | 2004-12-15 | 2008-11-11 | Microsoft Corporation | System and method for automatically completing spreadsheet formulas |
US20060129929A1 (en) * | 2004-12-15 | 2006-06-15 | Microsoft Corporation | System and method for automatically completing spreadsheet formulas |
US20060212469A1 (en) * | 2005-03-18 | 2006-09-21 | Microsoft Corporation | Method and system to associate cell and item metadata |
US7693860B2 (en) * | 2005-03-18 | 2010-04-06 | Microsoft Corporation | Method and system to associate cell and item metadata |
US20060224553A1 (en) * | 2005-04-01 | 2006-10-05 | Microsoft Corporation | Method and system for generating an auto-completion list for a cascading style sheet selector |
US20070027904A1 (en) * | 2005-06-24 | 2007-02-01 | George Chow | System and method for translating between relational database queries and multidimensional database queries |
US20060293944A1 (en) * | 2005-06-28 | 2006-12-28 | Michael Igelbrink | Generic interface to provide object access display views based on object type |
US20070027876A1 (en) * | 2005-07-29 | 2007-02-01 | Arnd Peter Graf | Business intelligence OLAP consumer model and API |
US7512580B2 (en) * | 2005-08-04 | 2009-03-31 | Sap Ag | Confidence indicators for automated suggestions |
US20070050702A1 (en) * | 2005-08-29 | 2007-03-01 | Stefan Chopin | System and method for rendering of financial data |
US20070055922A1 (en) * | 2005-09-08 | 2007-03-08 | Microsoft Corporation | Autocompleting with queries to a database |
US7792847B2 (en) * | 2005-09-09 | 2010-09-07 | Microsoft Corporation | Converting structured reports to formulas |
US20070061344A1 (en) * | 2005-09-09 | 2007-03-15 | Microsoft Corporation | Converting structured reports to formulas |
US20070088691A1 (en) * | 2005-10-14 | 2007-04-19 | Microsoft Corporation | Multidimensional cube functions |
US20070168323A1 (en) * | 2006-01-03 | 2007-07-19 | Microsoft Corporation | Query aggregation |
US20070219956A1 (en) * | 2006-03-16 | 2007-09-20 | Milton Michael L | Excel spreadsheet parsing to share cells, formulas, tables, etc. |
US20080294612A1 (en) * | 2007-05-22 | 2008-11-27 | It-Workplace | Method For Generating A Representation Of A Query |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070055922A1 (en) * | 2005-09-08 | 2007-03-08 | Microsoft Corporation | Autocompleting with queries to a database |
US8234293B2 (en) | 2005-09-08 | 2012-07-31 | Microsoft Corporation | Autocompleting with queries to a database |
US20070168323A1 (en) * | 2006-01-03 | 2007-07-19 | Microsoft Corporation | Query aggregation |
US20100131457A1 (en) * | 2008-11-26 | 2010-05-27 | Microsoft Corporation | Flattening multi-dimensional data sets into de-normalized form |
US20110131173A1 (en) * | 2009-12-01 | 2011-06-02 | Internation Business Machines Corporation | Compensating for unbalanced hierarchies when generating olap queries from report specifications |
US20130013554A1 (en) * | 2009-12-01 | 2013-01-10 | International Business Machines Corporation | Compensating for unbalanced hierarchies when generating olap queries from report specifications |
US8484157B2 (en) * | 2009-12-01 | 2013-07-09 | International Business Machines Corporation | Compensating for unbalanced hierarchies when generating OLAP queries from report specifications |
US9189535B2 (en) * | 2009-12-01 | 2015-11-17 | International Business Machines Corporation | Compensating for unbalanced hierarchies when generating OLAP queries from report specifications |
US9766779B2 (en) | 2013-03-11 | 2017-09-19 | Microsoft Technology Licensing, Llc | Dynamic validation of selectable data |
US20140279833A1 (en) * | 2013-03-13 | 2014-09-18 | Sas Institute Inc. | Method to reduce large olap cube size using cell selection rules |
US9460172B2 (en) * | 2013-03-13 | 2016-10-04 | Sas Institute Inc. | Method to reduce large OLAP cube size using cell selection rules |
CN106649697A (en) * | 2016-12-19 | 2017-05-10 | 蒋子轩 | Online software interactive experiential method |
Also Published As
Publication number | Publication date |
---|---|
US20070088691A1 (en) | 2007-04-19 |
US7805433B2 (en) | 2010-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7805433B2 (en) | Multidimensional cube functions | |
US7792847B2 (en) | Converting structured reports to formulas | |
US20070168323A1 (en) | Query aggregation | |
US12032532B2 (en) | System and method for automatic inference of a cube schema from a tabular data for use in a multidimensional database environment | |
US9092478B2 (en) | Managing business objects data sources | |
US11921715B2 (en) | Search integration | |
US8938475B2 (en) | Managing business objects data sources | |
US6651055B1 (en) | OLAP query generation engine | |
US8316012B2 (en) | Apparatus and method for facilitating continuous querying of multi-dimensional data streams | |
US6581068B1 (en) | System and method for instant consolidation, enrichment, delegation and reporting in a multidimensional database | |
EP2396736B1 (en) | Displaying multiple row and column header areas in a summary table | |
US9037579B2 (en) | Generating dynamic hierarchical facets from business intelligence artifacts | |
US7251653B2 (en) | Method and system for mapping between logical data and physical data | |
US20070094236A1 (en) | Combining multi-dimensional data sources using database operations | |
US20090319542A1 (en) | Systems and methods to automatically replace content in a range of spreadsheet cells with information from a database | |
US20110137917A1 (en) | Retrieving a data item annotation in a view | |
SG172839A1 (en) | Multi-condition filtering of an interactive summary table | |
US20080294612A1 (en) | Method For Generating A Representation Of A Query | |
US20060271583A1 (en) | Dimension member sliding in online analytical processing | |
Fotache et al. | SQL and data analysis. Some implications for data analysits and higher education | |
CN100447781C (en) | Method and system for mapping XML to N-dimensional data structure | |
US20090172525A1 (en) | Apparatus and method for reformatting a report for access by a user in a network appliance | |
Al-Aqrabi et al. | Faceted search in business intelligence on the cloud | |
US7587416B2 (en) | Advanced desktop reporting | |
JP2005018751A (en) | System and method for expressing and calculating relationship between measures |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034544/0001 Effective date: 20141014 |