WO2017018904A1 - Bi cloud services data modeling denormalized table introspection algorithm - Google Patents

Bi cloud services data modeling denormalized table introspection algorithm Download PDF

Info

Publication number
WO2017018904A1
WO2017018904A1 PCT/RU2015/000476 RU2015000476W WO2017018904A1 WO 2017018904 A1 WO2017018904 A1 WO 2017018904A1 RU 2015000476 W RU2015000476 W RU 2015000476W WO 2017018904 A1 WO2017018904 A1 WO 2017018904A1
Authority
WO
WIPO (PCT)
Prior art keywords
column
dimension
columns
group
candidate
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.)
Ceased
Application number
PCT/RU2015/000476
Other languages
French (fr)
Inventor
Boris Valer'evich NIKULITSA
Paul Kim
Samar Lotia
Raghuram Venkatasubramanian
Vijay Jain
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Oracle International Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oracle International Corp filed Critical Oracle International Corp
Priority to PCT/RU2015/000476 priority Critical patent/WO2017018904A1/en
Priority to US14/785,677 priority patent/US10437793B2/en
Publication of WO2017018904A1 publication Critical patent/WO2017018904A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • G06F16/212Schema design and management with details for data modelling support
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database

Definitions

  • Cloud computing is a significant advancement in the delivery of information technology and services. By providing on-demand access to a shared pool of computing resources in a self service, dynamically scaled and metered manner, cloud computing offers compelling advantages in cost, speed and efficiency.
  • the denormalized table introspection algorithm provides the ability to pre-populate models based on the data sets and database definitions that already exist in the database. This is done by analyzing the table definitions, including keys, table names and column names, as well as the data content.
  • a method performed by one or more processors of a web server comprises the steps of identifying columns of a source table having entries of data type "real" as measure column candidates, with the source table stored in an external database coupled to the web server by a network, and with the source table including a plurality of rows and columns with each column having a multicharacter name and having one or more entries, with entries in a single column constrained to being of a single data type and with each column having a cardinality value equal to the number of distinct entries in the column, combining non-measure column candidates identified as having names including a common character string into a dimension candidate group, running one or more structured query language (SQL) statements to determine a column cardinality value of each single column in the dimension candidate group and a group cardinality value of all the columns in the dimension candidate group, designating each single column having a column cardinality value equal to the group cardinality value as a simple key candidate column, executing one or more structured query language (SQL) statements to determine
  • SQL structured query language
  • FIG. 1 is a block diagram illustrating an example of a star schema
  • FIG. 2 is a flow chart illustrating the operation of an example algorithm
  • FIGs. 3-18 are GUI screen shots of an example table and analysis output illustrating the operation of an example embodiment
  • Fig. 19 is a flow chart illustrating the operation of an example embodiment
  • FIGs. 20 and 21 are example tables for illustrating the operation of an example algorithm
  • Fig. 22 is a GUI screen shot illustrating results obtained after applying an example algorithm to a denormalized table
  • Figs. 23 and 24 are GUI screens shots depicting a GUI for accepting input signals to move a column between dimension tables
  • Figs. 25 and 26 are GUI screens shots depicting a GUI for accepting input signals to merge first and second dimension tables
  • FIG. 27 is a block diagram illustrating components of an example operating environment in which various embodiments of the present invention may be implemented.
  • FIG. 28 illustrates an example computer system in which various embodiments of the present invention may be implemented. Detailed Description of Embodiments
  • Normalization is a series of steps followed to obtain a database design that allows for efficient access and storage of data. These steps reduce data redundancy and the chances of data becoming inconsistent.
  • a database includes a number of tables with each table having a name and one or more rows. Each row may include one or more attributes (also called fields) stored in one or more columns.
  • a functional dependency occurs when one attribute (e.g., A) uniquely determines another attribute (e.g., B). This relationship is written A -> B which is the same as stating that B is functionally dependent on A.
  • the First Normal Form eliminates repeating groups by putting each group into a separate table and connecting them with a one-to-many relationship. Two rules follow this definition: (1) each table has a primary key made of one or several fields and uniquely identifying each record; and (2) each field is atomic, it does not contain more than one value.
  • the Second Normal Form eliminates functional dependencies on a partial key by putting the fields in a separate table from those that are dependent on the whole key.
  • the Third Normal Form eliminates functional dependencies on non-key fields by putting them in a separate table. At this stage, all non-key fields are dependent on the key, the whole key and nothing but the key. [26] The Fourth Normal Form separates independent multi-valued facts stored in one table into separate tables.
  • the Fifth Normal Form breaks out data redundancy that is not covered by any of the previous normal forms.
  • the star schema is the simplest data warehouse schema.
  • a star schema model can be depicted as a simple star: a central table contains fact data and multiple tables radiate out from it, connected by the primary and foreign keys of the database.
  • a star schema is characterized by one or more very large fact tables that contain the primary information in the data warehouse and a number of much smaller dimension tables (or lookup tables), each of which contains information about the entries for a particular attribute in the fact table.
  • a typical fact table contains keys and measures.
  • a simple fact table might contain the measure Sales, and keys Time, Product, and Market.
  • a measure is typically a numeric or character column, and can be taken from one column in one table or derived from two columns in one table or two columns in more than one table.
  • Dimensions define characteristics of the fact table such as a time dimension describing when facts are entered, a geographical dimension describing location data, a product dimension describing product data and characteristics, an employee dimension describing employee characteristics and data or a customer dimension describing customer characteristics or data.
  • characteristics of the fact table such as a time dimension describing when facts are entered, a geographical dimension describing location data, a product dimension describing product data and characteristics, an employee dimension describing employee characteristics and data or a customer dimension describing customer characteristics or data.
  • the Product dimension table for example, would typically contain information about each product number that appears in the fact table.
  • Fig. 1 depicts a graphical representation of a star schema.
  • the fact table is named sales and includes units and prices fields.
  • the dimensions tables are named products, time, customer and channel.
  • a star query is a join between a fact table and a number of lookup tables. Each lookup table is joined to the fact table using a primary-key to foreign-key join, but the lookup tables are not joined to each other.
  • each dimension table has a primary key in the form (dimension name)_ID.
  • the fact table contains only foreign keys and the fact table is not required to have a primary key.
  • a star join is a primary-key to foreign-key join of the dimension tables to a fact table.
  • the fact table normally has a concatenated index on the key columns to facilitate this type of join.
  • star schemas provide a direct and intuitive mapping between the business entities being analyzed by end users and the schema design; and (2) provide highly optimized performance for typical data warehouse queries.
  • FIG. 2 A first embodiment of the invention will now be described with reference to the flow chart of Fig. 2.
  • the algorithmic steps depicted in Fig. 2 and described below are implemented by software operating on a general purpose computing system.
  • User interfaces, presented to a user facilitate uploading source data into source tables and modeling the source table into a normalized form.
  • FIG. 2 depicts a high-level, abstract description of an algorithm for modeling a denormalized table into a star schema. Detailed algorithmic processes for implementing the steps depicted in Fig. 2 will be described below.
  • process step 202 the algorithm for introspecting a source table is started.
  • process step 204 the data type of the data in each column in the source table is examined and columns having data type real number are identified as candidates for being measures in a fact table.
  • process step 206 the names of columns in the source table not identified as measure candidates are examined to detect character strings indicating inclusion in typical dimensions. Examples of such character strings are CUST, PROD, PRODUCT, TIME, CUST, and CUSTOMER. Columns having text strings are grouped into dimension candidate groups.
  • process step 208 the columns in each dimension candidate group are analyzed to identify simple/complex key candidates.
  • process step 210 the algorithm branches back to process step 206 if all columns are not analyzed or advances to process step 212 which ends the algorithm if all columns are analyzed.
  • the source table "Denorm Table Analysis #1" contains a simple dimension where all three columns contain the same common character string "CUST ".
  • the algorithm does not find any columns having data of type real.
  • the algorithm uses all three columns for a dimensions search and the algorithm finds a valid dimension with the common character string "CUST”.
  • the algorithm finds the simple key "CUST_KEY”. In this example the common character string is "CUST ", but the algorithm filters out the underscore character because it is highly probable that a user will use underscore as a names separator.
  • the source table "Denorm Table Analysis #3" depicts a table having a complex key of two tables.
  • the algorithm is able to find only complex keys having a maximum of two columns. The algorithm is so limited because the probability of a complex key having more than two columns is low and a large amount of computer resources is required to discover a complex key having more than two columns.
  • the source table "Denorm Table Analysis #2" depicts a table that has a different key column name than the table of "Denorm Table Analysis #1" of Fig. 3.
  • the algorithm does not find any columns having data type real.
  • the algorithm finds the group including the
  • the source table "Denorm Table Analysis #10" contains three unique columns: "AIRPORT ID”, "AIRPORT” and " AIPORT NAME” . Accordingly, each column can be a simple key. However, in process step 208 the algorithm detects that "AIPORT ID” is a simple key because it's more probable that an integer column is a key than that a string column is a key.
  • the source table "Denorm Table Analysis #11" contains two unique columns: "AIRPORT” and "AIPORT NAME". Accordingly, each column can be a simple key. However, the process step 208 of the algorithm detects that "AIPORT” is a simple key because it is more probable that the column with the lowest average column length is a key.
  • the source table "Denorm Table Analysis #7" contains a "CUST BILL” column having data of type real number.
  • Process step 204 identifies the "CUST BILL” column as a measure and filters the column out because of the high probability that a column having entries of type real is a measure and analysis of additional columns consumes more computer resources.
  • the algorithm finds a valid dimension with a simple key, but the dimension does not contain "CUST BILL" because that column is identified as a measure.
  • the source table "Denorm Table Analysis #8" contains the column “CATEGORY” instead of “CUST CATEGORY”.
  • the algorithm identifies "CUST BILL” as a measure.
  • the algorithm finds the dimension "CUST”.
  • the algorithm analyzes the column “CATEGORY” which is unused during process step 206.
  • the column “CATEGORY” contains integer numbers only and it is detected as a measure. Also the column is included in the "CUST” dimension because "CATEGORY” is functionally dependent on “CUST KEY”.
  • the source table "Denorm Table Analysis #9" also contains information about a customer's category.
  • the algorithm finds that "CUST BILL” is a measure.
  • the algorithm finds that "CUST” and “CATEGORY” are dimensions.
  • the algorithm analyzes the column “STATUS”.
  • the column “STATUS” contains only integers, and it is identified as a measure. Also the column “STATUS” can be included into both “CATEGORY” and “CUST” dimensions, but the dimension “CATEGORY” has the lowest cardinality and the column “STATUS” is included only in “CATEGORY” dimension.
  • the algorithm described below is designed to operate efficiently in a Business Intelligence (BI) cloud services operating environment.
  • the source table may be very large, but in a classical operating environment the database is installed near a web server and communication between the database and web server does not present a problem. However, in a cloud operating environment transferring large amounts of data to the web server for analysis ties up cloud bandwidth and computing resources.
  • the source table is stored in a database and the introspection algorithm application is deployed on a weblogic server, for example a JAVA Virtual Machine (JVM)).
  • JVM JAVA Virtual Machine
  • the source table is not transferred to the JVM runtime memory. Instead, the introspection algorithm runs simple SQL queries against only a limited number of rows of the source table required for accurate analysis. The entire source table is not analyzed. In a cloud operating environment, the analysis of all rows of a very large table is very time consuming. Collecting information from only a limited number of rows yields accurate results and avoids tying up cloud resources.
  • Statistic collection e.g., cardinality evaluation, average length
  • Fig. 19 is a flow chart listing the steps of the algorithm.
  • examples illustrating the operation of the algorithm will refer to a table entitled "BICS_REVENUE_FT2" which has the following columns:
  • BICS_REVENUE_FT2 Column Names, ADDRESS 1, ADDRESS2, AREA,
  • PROD_ITEM_DSC PROD ITEM KEY, PROD_LOB, PROD_TYPE, REGION, STATE_PROV, TIME BILL DT, TIME PAID DT, ADDR KEY, COST_FIXED, COST VARIABLE, CUST NUMBER, DISCNT_VALUE, ORDER KEY, REVENUE, and UNITS.
  • process step 1902 the data types of each column of the source table are analyzed. Columns with real data types are measure columns. Once a column is identified as a measure it is not analyzed again in the following process steps to conserve computer resources.
  • Process step 1904 is a decision block. If there are no key or property candidate columns identified in process step 1902 then control moves to process block 1906; if key or property candidate columns are identified in process step 1902 then control moves to process block 1908.
  • cardinality refers to the uniqueness of data values contained in a particular column (attribute) of a database table. The lower the cardinality, the more duplicated elements in a column. Thus, a column with the lowest possible cardinality would have the same value for every row. In this example process the cardinality of only the top 200*(number of columns in the source table) rows are analyzed to improve performance.
  • SQL queries are used to find cardinality. Note that the SQL query "select count (distinct column 1) from table” does not calculate NULL values and output will be incorrect in such case.
  • Process step 1910 is a decision block. If the source table does not contains data the control passes to process block 1906 and the process ends. If the source table contains data the control passes to process block 1912.
  • process step 1912 the algorithm analyzes the names of columns based on common character strings, common character position and word separation characters to build dimension candidate groups of columns.
  • Each dimension candidate group contains columns with common character strings.
  • the algorithm first finds all different groups with common character strings, then filters found groups based on word separation character usages, such as the underscore, in common character strings and then filters the groups based on common character string position.
  • PROD_ [PROD_LOB, PROD TYPE, PROD BRAND,
  • the first group results from searching on the combination of the character string "PROD” and the underscore symbol and the second group results from searching on only the character string "PROD”. These groups turn out to be the same.
  • the third group results from searching on the character string "ITEM” preceded and followed by the underscore symbol. Note that the third group is a subset of both the first and second groups.
  • process step 1914 the algorithm loads the cardinality for each simple dimension candidate group.
  • the cardinality of the combined columns in each dimension candidate group is determined.
  • the algorithm constructs the following query to analyze the cardinalities of the first, second and third groups: select 0,count(*) from (select distinct
  • PROD_LOB PROD_BRAND
  • PROD_TYPE PRODJTEM_KEY
  • PROD ITEM _DSC PROD ITEM _DSC
  • process step 1916 the column and cardinalities of the candidate dimension groups are analyzed to detect simple dimensions. This analysis is based on the fact that the key column cardinality must be equal to the group cardinality. A group for which a simple key is found is designated a simple dimension.
  • process step 1916 simple dimensions are filtered to remove duplicates and subsets. Duplicate simple dimensions have the same key. A first dimension is a subset of a second dimension if the second dimension contains all the columns of the first dimension.
  • the dimension candidate "ION" is excessive because all the columns included in "ION" are present in one of the other groups.
  • the dimension candidates "ROU” and “ROUTE” are duplicate dimensions because they both have the same key.
  • the algorithm filters out the "ROU" candidate group for the following reasons. First, it is more difficult to find a dimension candidate group with a greater common character length and, second, it is more probable that the user consciously defined a dimension with the longer common character length.
  • ROUTE_DESCRIPTION ; uniqueColumns: [ROUTE]; key: [ROUTE] ⁇
  • a second example illustrates two iterations to identify sub-dimensions.
  • the following seven groups are identified by the first iteration of the dimension candidate group search of the source table named "BICS REVENUE" with group names
  • a second iteration of the simple dimension candidate search identifies two dimension candidate group with names "PROD " and "PROD”.
  • the output of the search is:
  • Process step 1920 is a decision block. If a simple dimension is found during the last iteration of process steps 1912-1916 the control passes back to process step 1912. If no simple dimension is found control passes to process step 1922.
  • process step 1922 names of columns not included in simple dimensions are analyzed again to build complex dimension candidate groups as in process step 1912.
  • process step 1924 the cardinality of each complex dimension candidate group is loaded and the candidate groups are filtered using the algorithmic steps described above with reference to process step 1914.
  • process step 1926 the column and group cardinalities are analyzed to determine complex keys for the dimension candidate groups that are not simple dimensions. Groups having complex keys are designated as complex dimensions.
  • a complex key formed from two columns must have the cardinality of the entire group.
  • the column pair of NAME and TYPE can function as a complex key because the combined cardinality of the pair of columns is the same as the group cardinality.
  • Process step 1928 is a decision block. If all columns have been analyzed then control passes to process block 1930 and the process ends. If all columns have not been analyzed then control passes to process block 1932.
  • process step 1932 columns not included in any simple or complex dimensions are analyzed. Integer columns are added to measures but not removed from analysis. If an unused column is functionally dependent on a dimension key of only a particular dimension candidate group then the algorithm adds the unused column to that particular dimension candidate group. If an unused column can be added to several dimension candidate group then the algorithm adds the unused column to the dimension candidate group with the lowest cardinality.
  • a first dimension candidate group has columns (CUSTJ EY, CUST NAME, CUST GENDER) and a simple key "CUST_KEY".
  • the software system generates display data for presenting user interfaces allowing a user to review the recommended measures candidates, dimension candidates and key candidates and to modify recommendations as necessary.
  • Fig. 22 depicts a review user interface 2200 presenting the fact and dimension tables recommended after applying the process steps of Fig. 19 to the table
  • the review user interface 2200 displays several windows.
  • a name window 2202 shows the name of the table that has been analyzed and a comment window 2204 summarizes the results of the analysis.
  • a source table window 2206 lists the column names of the source table and shows a check mark next to columns that are included in recommended facts or dimensions. If a column cannot be analyzed and is not included in a recommended fact or dimension table then a warning symbol instead of a check is displayed next to the column and a warning is included in the comment window.
  • a fact table window 2208 shows the name of the fact table, the measure column candidate names and check marks next to foreign keys in the fact table that reference the primary keys of the dimensions tables.
  • the dimension tables window 2210 shows names of the recommended dimension candidates, the column names included in each dimension candidate and check marks next to simple/complex key candidates.
  • the review user interface 2200 includes a next control button to review the next table analyzed and an add button to add the currently shown table to the data model.
  • the review user user 2200 also facilitates user interaction to edit and change the contents of the recommended tables. As depicted in Figs. 23 and 24, the review user interface 2200 is responsive to input signals to allow selecting column candidates and using drop down menus 2310 depicting actions to remove or move selected columns to an existing or new dimension.
  • the review user interface 2200 also facilitates user interaction to merge one recommended dimension into another.
  • the review user interface 2200 is responsive to input signals to select a dimension table display drop down menu 2510 depicting actions to merge a selected dimension into another dimension.
  • Fig. 27 is a block diagram illustrating components of an example operating environment in which various example embodiments may be implemented.
  • the system 2700 can include one or more user computers, computing devices, or processing devices 2712, 2714, 2716, 2718, which can be used to operate a client, such as a dedicated application, web browser, etc.
  • the user computers 2712, 2714, 2716, 2718 can be general purpose personal computers (including, merely by way of example, personal computers and/or laptop computers running various versions of Microsoft Windows and/or Apple Macintosh operating systems), cell phones or PDAs (running software such as Microsoft Windows Mobile and being Internet, e-mail, SMS, Blackberry, or other communication protocol enabled), and/or workstation computers running any of a variety of
  • These user computers 2712, 2714, 2716, 2718 may also have any of a variety of applications, including one or more development systems, database client and/or server applications, and Web browser applications.
  • the user computers 2712, 2714, 2716, 2718 may be any other electronic device, such as a thin-client computer, Internet-enabled gaming system, and/or personal messaging device, capable of communicating via a network (e.g., the network 2710 described below) and/or displaying and navigating Web pages or other types of electronic documents.
  • a network e.g., the network 2710 described below
  • the example system 2700 is shown with four user computers, any number of user computers may be supported.
  • the system 2700 includes some type of network 2710.
  • the network may be any type of network familiar to those skilled in the art that can support data communications using any of a variety of commercially-available protocols, including without limitation TCP/IP, SNA, IPX, AppleTalk, and the like.
  • the network 2710 can be a local area network ("LAN”), such as an Ethernet network, a Token-Ring network and/or the like; a wide-area network; a virtual network, including without limitation a virtual private network ("VPN"); the Internet; an intranet; an extranet; a public switched telephone network (“PSTN”); an infra-red network; a wireless network (e.g., a network operating under any of the IEEE 802.1 1 suite of protocols, the Bluetooth protocol known in the art, and/or any other wireless protocol); and/or any combination of these and/or other networks.
  • LAN local area network
  • VPN virtual private network
  • PSTN public switched telephone network
  • wireless network e.g., a network operating under any of the IEEE 802.1 1 suite of protocols, the Bluetooth protocol known in the art, and/or any other wireless protocol
  • the system may also include one or more server computers 2702, 2704, 2706 which can be general purpose computers, specialized server computers (including, merely by way of example, PC servers, UNIX servers, mid-range servers, mainframe computers rack-mounted servers, etc.), server farms, server clusters, or any other appropriate arrangement and/or combination.
  • One or more of the servers e.g., 2706) may be dedicated to running applications, such as a business application, a Web server, application server, etc. Such servers may be used to process requests from user computers 2712, 2714, 2716, 2718.
  • the applications can also include any number of applications for controlling access to resources of the servers 2702, 27027, 2706.
  • the Web server can be running an operating system including any of those discussed above, as well as any commercially-available server operating systems.
  • the Web server can also run any of a variety of server applications and/or mid-tier applications, including HTTP servers, FTP servers, CGI servers, database servers, Java servers, business applications, and the like.
  • the server(s) also may be one or more computers which can be capable of executing programs or scripts in response to the user computers 2712, 2714, 2716, 2718.
  • a server may execute one or more Web applications.
  • the Web application may be implemented as one or more scripts or programs written in any programming language, such as Java, C, C# or C++, and/or any scripting language, such as Perl, Python, or TCL, as well as combinations of any programming/scripting languages.
  • the server(s) may also include database servers, including without limitation those commercially available from Oracle, Microsoft, Sybase, IBM and the like, which can process requests from database clients running on a user computer 2712, 2714, 2716, 2718.
  • the system 2700 may also include one or more databases 2720.
  • the database(s) 2720 may reside in a variety of locations.
  • a database 2720 may reside on a storage medium local to (and/or resident in) one or more of the computers 2702, 2704, 2706, 2712, 2714, 2716, 2718.
  • it may be remote from any or all of the computers 2702, 2704, 2706, 2712, 2714, 2716, 2718, and/or in communication (e.g., via the network 2710) with one or more of these.
  • the database 2720 may reside in a storage-area network ("SAN") familiar to those skilled in the art. Similarly, any necessary files for performing the functions attributed to the computers 2702, 2704, 2706, 2712, 2714, 2716, 2718 may be stored locally on the respective computer and/or remotely, as appropriate.
  • the database 2720 may be a relational database, such as Oracle lOg, that is adapted to store, update, and retrieve data in response to SQL-formatted commands.
  • FIG. 28 illustrates an example computer system 2800, in which various example embodiments may be implemented.
  • the system 2800 may be used to implement any of the computer systems described above.
  • the computer system 2800 is shown comprising hardware elements that may be electrically coupled via a bus 2824.
  • the hardware elements may include one or more central processing units (CPUs) 2802, one or more input devices 2804 (e.g., a mouse, a keyboard, etc.), and one or more output devices 2806 (e.g., a display device, a printer, etc.).
  • the computer system 2800 may also include one or more storage devices 2808.
  • the storage device(s) 2808 can include devices such as disk drives, optical storage devices, solid-state storage devices such as a random access memory (“RAM”) and/or a read-only memory (“ROM”), which can be programmable, flash-updateable and/or the like.
  • RAM random access memory
  • ROM read-only memory
  • the computer system 2800 may additionally include a computer-readable storage media reader 2812, a communications system 2814 (e.g., a modem, a network card (wireless or wired), an infra-red communication device, etc.), and working memory 2818, which may include RAM and ROM devices as described above.
  • the computer system 2800 may also include a processing acceleration unit 2816, which can include a digital signal processor DSP, a special-purpose processor, and/or the like.
  • the computer-readable storage media reader 2812 can further be connected to a computer-readable storage medium 2810, together (and, optionally, in combination with storage device(s) 2808) comprehensively representing remote, local, fixed, and/or removable storage devices plus storage media for temporarily and/or more permanently containing computer-readable information.
  • the communications system 2814 may permit data to be exchanged with the network and/or any other computer described above with respect to the system 2800.
  • the computer system 2800 may also comprise software elements, shown as being currently located within a working memory 2818, including an operating system 2820 and/or other code 2822, such as an application program (which may be a client application, Web browser, mid-tier application, RDBMS, etc.). It should be appreciated that alternate embodiments of a computer system 2800 may have numerous variations from that described above. For example, customized hardware might also be used and/or particular elements might be implemented in hardware, software (including portable software, such as applets), or both. Further, connection to other computing devices such as network input/output devices may be employed.
  • an application program which may be a client application, Web browser, mid-tier application, RDBMS, etc.
  • Storage media and computer readable media for containing code, or portions of code can include any appropriate media known or used in the art, including storage media and communication media, such as but not limited to volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and/or transmission of information such as computer readable instructions, data structures, program modules, or other data, including RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, data signals, data transmissions, or any other medium which can be used to store or transmit the desired information and which can be accessed by the computer.
  • RAM random access memory
  • ROM read only memory
  • EEPROM electrically erasable programmable read-only memory
  • flash memory electrically erasable programmable read-only memory
  • CD-ROM compact disc read-only memory
  • DVD digital versatile disk
  • magnetic cassettes magnetic tape
  • magnetic disk storage magnetic disk storage devices
  • data signals
  • routines of particular embodiments including C, C++, Java, assembly language, etc.
  • Different programming techniques can be employed such as procedural or object oriented.
  • the routines can execute on a single processing device or multiple processors. Although the steps, operations, or computations may be presented in a specific order, this order may be changed in different particular embodiments. In some particular embodiments, multiple steps shown as sequential in this specification can be performed at the same time.
  • Particular embodiments may be implemented in a non-transitory computer readable storage medium for use by or in connection with the instruction execution system, apparatus, system, or device.
  • Particular embodiments can be implemented in the form of control logic in software or hardware or a combination of both.
  • the control logic when executed by one or more processors, may be operable to perform that which is described in particular embodiments.
  • Particular embodiments may be implemented by using a programmed general purpose digital computer, by using application specific integrated circuits, programmable logic devices and field programmable gate arrays. Optical, chemical, biological, quantum or nanoengineered systems, components and mechanisms may be used. In general, the functions of particular embodiments can be achieved by any means as is known in the art. Distributed, networked systems, components, and/or circuits can be used. Communication, or transfer, of data may be wired, wireless, or by any other means.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

A computer implemented algorithm performs introspection of an uploaded denormalized table and identifies candidate fact and dimension tables. The cardinality values of columns in a candidate dimension table are analyzed to identify simple/complex primary key candidates. Unused columns are further analyzed for assignment to candidate fact and/or dimension tables.

Description

PATENT APPLICATION
Bl CLOUD SERVICES DATA MODELING DENORMALIZED TABLE INTROSPECTION ALGORITHM
Background
[01] Cloud computing is a significant advancement in the delivery of information technology and services. By providing on-demand access to a shared pool of computing resources in a self service, dynamically scaled and metered manner, cloud computing offers compelling advantages in cost, speed and efficiency.
[02] Data modeling has typically been left to database administrators with a high level of understanding of database design and definitions. However, users without access to skilled database administrators have had to manually generate data models based on their own limited knowledge and expertise.
[03] With the addition of BI (Business Intelligence) cloud products, a larger audience of users, who may not have the technical knowledge previously required to create data models, will have the ability to create data models and reports.
Summary
[04] A further understanding of the nature and the advantages of particular embodiments disclosed herein may be realized by reference to the remaining portions of the specification and the attached drawings.
[05] In an example embodiment, the denormalized table introspection algorithm provides the ability to pre-populate models based on the data sets and database definitions that already exist in the database. This is done by analyzing the table definitions, including keys, table names and column names, as well as the data content.
[06] In another example embodiment, a method performed by one or more processors of a web server, comprises the steps of identifying columns of a source table having entries of data type "real" as measure column candidates, with the source table stored in an external database coupled to the web server by a network, and with the source table including a plurality of rows and columns with each column having a multicharacter name and having one or more entries, with entries in a single column constrained to being of a single data type and with each column having a cardinality value equal to the number of distinct entries in the column, combining non-measure column candidates identified as having names including a common character string into a dimension candidate group, running one or more structured query language (SQL) statements to determine a column cardinality value of each single column in the dimension candidate group and a group cardinality value of all the columns in the dimension candidate group, designating each single column having a column cardinality value equal to the group cardinality value as a simple key candidate column, executing one or more structured query language (SQL) statements to determine a column-pair cardinality value of each pair of columns in the dimension candidate group if no simple key candidate exists, designating a pair of columns in the dimension candidate group having a column-pair cardinality value equal to the group cardinality value as a complex key candidate pair of columns of the dimension candidate group and grouping measure column candidates and keys of dimension candidate groups to form a candidate fact table.
[07] In another example embodiment, only a limited number of rows of a source table are analyzed to minimize bandwidth consumption in a cloud operating environment.
[08] Other features and advantages of the invention will be apparent in view of the following detailed description and appended drawings. Brief Description of the Drawings
[09] Fig. 1 is a block diagram illustrating an example of a star schema;
[10] Fig. 2 is a flow chart illustrating the operation of an example algorithm;
[11] Figs. 3-18 are GUI screen shots of an example table and analysis output illustrating the operation of an example embodiment;
[12] Fig. 19 is a flow chart illustrating the operation of an example embodiment;
[13] Figs. 20 and 21 are example tables for illustrating the operation of an example algorithm;
[14] Fig. 22 is a GUI screen shot illustrating results obtained after applying an example algorithm to a denormalized table;
[15] Figs. 23 and 24 are GUI screens shots depicting a GUI for accepting input signals to move a column between dimension tables;
[16] Figs. 25 and 26 are GUI screens shots depicting a GUI for accepting input signals to merge first and second dimension tables;
[17] Fig. 27 is a block diagram illustrating components of an example operating environment in which various embodiments of the present invention may be implemented; and
[18] Fig. 28 illustrates an example computer system in which various embodiments of the present invention may be implemented. Detailed Description of Embodiments
[19] Although the invention has been described with respect to particular embodiments thereof, these particular embodiments are merely illustrative, and not restrictive.
[20] One aspect of data modeling is normalization of tables in a database.
Normalization is a series of steps followed to obtain a database design that allows for efficient access and storage of data. These steps reduce data redundancy and the chances of data becoming inconsistent.
[21] A database includes a number of tables with each table having a name and one or more rows. Each row may include one or more attributes (also called fields) stored in one or more columns.
[22] A functional dependency occurs when one attribute (e.g., A) uniquely determines another attribute (e.g., B). This relationship is written A -> B which is the same as stating that B is functionally dependent on A.
[23] The First Normal Form eliminates repeating groups by putting each group into a separate table and connecting them with a one-to-many relationship. Two rules follow this definition: (1) each table has a primary key made of one or several fields and uniquely identifying each record; and (2) each field is atomic, it does not contain more than one value.
[24] The Second Normal Form eliminates functional dependencies on a partial key by putting the fields in a separate table from those that are dependent on the whole key.
[25] The Third Normal Form eliminates functional dependencies on non-key fields by putting them in a separate table. At this stage, all non-key fields are dependent on the key, the whole key and nothing but the key. [26] The Fourth Normal Form separates independent multi-valued facts stored in one table into separate tables.
[27] The Fifth Normal Form breaks out data redundancy that is not covered by any of the previous normal forms.
[28] The star schema is the simplest data warehouse schema. A star schema model can be depicted as a simple star: a central table contains fact data and multiple tables radiate out from it, connected by the primary and foreign keys of the database.
[29] A star schema is characterized by one or more very large fact tables that contain the primary information in the data warehouse and a number of much smaller dimension tables (or lookup tables), each of which contains information about the entries for a particular attribute in the fact table.
[30] A typical fact table contains keys and measures. For example, a simple fact table might contain the measure Sales, and keys Time, Product, and Market. A measure is typically a numeric or character column, and can be taken from one column in one table or derived from two columns in one table or two columns in more than one table.
[31] Dimensions define characteristics of the fact table such as a time dimension describing when facts are entered, a geographical dimension describing location data, a product dimension describing product data and characteristics, an employee dimension describing employee characteristics and data or a customer dimension describing customer characteristics or data. In this case, there would be corresponding dimension tables for Time, Product, and Market. The Product dimension table, for example, would typically contain information about each product number that appears in the fact table.
[32] Fig. 1 depicts a graphical representation of a star schema. The fact table is named sales and includes units and prices fields. The dimensions tables are named products, time, customer and channel. [33] A star query is a join between a fact table and a number of lookup tables. Each lookup table is joined to the fact table using a primary-key to foreign-key join, but the lookup tables are not joined to each other.
[34] In the example of Fig. 1 each dimension table has a primary key in the form (dimension name)_ID. The fact table contains only foreign keys and the fact table is not required to have a primary key.
[35] A star join is a primary-key to foreign-key join of the dimension tables to a fact table. The fact table normally has a concatenated index on the key columns to facilitate this type of join.
[36] The main advantages of star schemas are that they: (1) provide a direct and intuitive mapping between the business entities being analyzed by end users and the schema design; and (2) provide highly optimized performance for typical data warehouse queries.
[37] A first embodiment of the invention will now be described with reference to the flow chart of Fig. 2. The algorithmic steps depicted in Fig. 2 and described below are implemented by software operating on a general purpose computing system. User interfaces, presented to a user, facilitate uploading source data into source tables and modeling the source table into a normalized form.
[38] In the presently described embodiment source data is analyzed to identify dimensions, facts and joins between identified facts and dimensions. Fig. 2 depicts a high-level, abstract description of an algorithm for modeling a denormalized table into a star schema. Detailed algorithmic processes for implementing the steps depicted in Fig. 2 will be described below.
[39] In process step 202 the algorithm for introspecting a source table is started. [40] In process step 204 the data type of the data in each column in the source table is examined and columns having data type real number are identified as candidates for being measures in a fact table.
[41] In process step 206 the names of columns in the source table not identified as measure candidates are examined to detect character strings indicating inclusion in typical dimensions. Examples of such character strings are CUST, PROD, PRODUCT, TIME, CUST, and CUSTOMER. Columns having text strings are grouped into dimension candidate groups.
[42] In process step 208 the columns in each dimension candidate group are analyzed to identify simple/complex key candidates.
[43] In process step 210 the algorithm branches back to process step 206 if all columns are not analyzed or advances to process step 212 which ends the algorithm if all columns are analyzed.
[44] An analysis of simple examples will now be presented with reference to Figs. 3- 18. In each example, the algorithm of the presently described embodiment will be applied to a denormalized table and the results of applying the analysis will be presented in a data model interface.
[45] Referring to Figs. 3 and 4, the source table "Denorm Table Analysis #1" contains a simple dimension where all three columns contain the same common character string "CUST ". In process step 204, the algorithm does not find any columns having data of type real. In process step 206, the algorithm uses all three columns for a dimensions search and the algorithm finds a valid dimension with the common character string "CUST". In process step 208, the algorithm finds the simple key "CUST_KEY". In this example the common character string is "CUST ", but the algorithm filters out the underscore character because it is highly probable that a user will use underscore as a names separator. [46] Referring to Figs. 5 and 6, the source table "Denorm Table Analysis #3" depicts a table having a complex key of two tables. In this example embodiment, the algorithm is able to find only complex keys having a maximum of two columns. The algorithm is so limited because the probability of a complex key having more than two columns is low and a large amount of computer resources is required to discover a complex key having more than two columns.
[47] Detailed algorithm steps for determining complex keys are described below.
[48] Referring to Figs. 7 and 8, the source table "Denorm Table Analysis #2" depicts a table that has a different key column name than the table of "Denorm Table Analysis #1" of Fig. 3. In process step 204 the algorithm does not find any columns having data type real. In process step 206 the algorithm finds the group including the
"CUST_NAME" and "CUST GENDER" columns with common text "CUST". But the group does not contain a valid simple key and is not a valid dimension candidate.
Therefore all three columns are unused at process step 210 and the algorithm analyzes all of them. Column "THE KEY" contains only integers, so it can be a measure. Columns "CUST GENDER" and "CUST NAME" are character columns, so they cannot be measures.
[49] Referring to Figs. 9 and 10, the source table "Denorm Table Analysis #10" contains three unique columns: "AIRPORT ID", "AIRPORT" and " AIPORT NAME" . Accordingly, each column can be a simple key. However, in process step 208 the algorithm detects that "AIPORT ID" is a simple key because it's more probable that an integer column is a key than that a string column is a key.
[50] In Fig. 11 "AIRPORT" and "AIRPORT NAME" are simple key candidates and the type for both columns is STRING. The average length of the column entries in "AIRPORT" is avg(AIRPORT) = 3 and the average length of the column entries in "AIRPORT NAME" is avg(AiRPORT NAME) = (6 + 29 + 9 + 15 + 15 + 36 + 28) / 7 = 19.7. Accordingly, "AIRPORT" is chosen because avg(AIRPORT) < avg(AIRPORT NAME).
[51] In this example the algorithm runs the following SQL queries to get the average length of column values. It happens only when dimension contains several columns for key candidates and all columns have string type. So column with lower average length is better candidate: select count(*), sum(LENGTH(COL)) from (select distinct %s COL from %s where %s is not null and rownum<=%d) where rownum<=:%d.
[52] Referring to Figs. 11 and 12, the source table "Denorm Table Analysis #11" contains two unique columns: "AIRPORT" and "AIPORT NAME". Accordingly, each column can be a simple key. However, the process step 208 of the algorithm detects that "AIPORT" is a simple key because it is more probable that the column with the lowest average column length is a key.
[53] Referring to Figs. 13 and 14, the source table "Denorm Table Analysis #7" contains a "CUST BILL" column having data of type real number. Process step 204 identifies the "CUST BILL" column as a measure and filters the column out because of the high probability that a column having entries of type real is a measure and analysis of additional columns consumes more computer resources. During process step 206 the algorithm finds a valid dimension with a simple key, but the dimension does not contain "CUST BILL" because that column is identified as a measure.
[54] Referring to Figs. 15 and 16, the source table "Denorm Table Analysis #8" contains the column "CATEGORY" instead of "CUST CATEGORY". In process step 202 the algorithm identifies "CUST BILL" as a measure. In process step 204 the algorithm then finds the dimension "CUST". The algorithm then analyzes the column "CATEGORY" which is unused during process step 206. The column "CATEGORY" contains integer numbers only and it is detected as a measure. Also the column is included in the "CUST" dimension because "CATEGORY" is functionally dependent on "CUST KEY".
[55] Referring to Figs. 17 and 18, the source table "Denorm Table Analysis #9" also contains information about a customer's category. In process step 204 the algorithm finds that "CUST BILL" is a measure. In process step 204 the algorithm then finds that "CUST" and "CATEGORY" are dimensions. The algorithm then analyzes the column "STATUS". The column "STATUS" contains only integers, and it is identified as a measure. Also the column "STATUS" can be included into both "CATEGORY" and "CUST" dimensions, but the dimension "CATEGORY" has the lowest cardinality and the column "STATUS" is included only in "CATEGORY" dimension.
[56] A detailed description of an example algorithm for modeling a denormalized table will now be described with reference to Figs. 19-25.
[57] The algorithm described below is designed to operate efficiently in a Business Intelligence (BI) cloud services operating environment. The source table may be very large, but in a classical operating environment the database is installed near a web server and communication between the database and web server does not present a problem. However, in a cloud operating environment transferring large amounts of data to the web server for analysis ties up cloud bandwidth and computing resources.
[58] In one example embodiment, the source table is stored in a database and the introspection algorithm application is deployed on a weblogic server, for example a JAVA Virtual Machine (JVM)). The source table is not transferred to the JVM runtime memory. Instead, the introspection algorithm runs simple SQL queries against only a limited number of rows of the source table required for accurate analysis. The entire source table is not analyzed. In a cloud operating environment, the analysis of all rows of a very large table is very time consuming. Collecting information from only a limited number of rows yields accurate results and avoids tying up cloud resources. [59] Statistic collection (e.g., cardinality evaluation, average length) is done by database software and only query results are transferred from the database to the JVM memory and collected statistics analysis is done by the JVM introspection algorithm application.
[60] Fig. 19 is a flow chart listing the steps of the algorithm. In the following description, examples illustrating the operation of the algorithm will refer to a table entitled "BICS_REVENUE_FT2" which has the following columns:
BICS_REVENUE_FT2, Column Names, ADDRESS 1, ADDRESS2, AREA,
CHANNEL NAME, CITY, COUNTRY_CODE, COUNTRY NAME,
CUST BIRTH DT, CUST_CRDT_RATE, CUST GENDER,
CUST MARITAL STATUS, CUST_NAME, CUST SEGMENT, CUST TYPE, ORDER STATUS, POSTAL_CODE, PRODUCT, PROD BRAND,
PROD_ITEM_DSC, PROD ITEM KEY, PROD_LOB, PROD_TYPE, REGION, STATE_PROV, TIME BILL DT, TIME PAID DT, ADDR KEY, COST_FIXED, COST VARIABLE, CUST NUMBER, DISCNT_VALUE, ORDER KEY, REVENUE, and UNITS.
[61] In process step 1900 the algorithm starts.
[62] In process step 1902 the data types of each column of the source table are analyzed. Columns with real data types are measure columns. Once a column is identified as a measure it is not analyzed again in the following process steps to conserve computer resources.
[63] Columns with integer or string data types are candidates for key or property columns, columns with datetime data types are candidates for property columns and other data types cannot be analyzed.
[64] Process step 1904 is a decision block. If there are no key or property candidate columns identified in process step 1902 then control moves to process block 1906; if key or property candidate columns are identified in process step 1902 then control moves to process block 1908.
[65] If there are no key or property candidate columns to be analyzed then all columns in the source table are measure columns and the algorithm ends at process step 1906.
[66] If there are key or property candidate columns to be analyzed then in process step 1908 the cardinality of each key or property candidate column is loaded. The term cardinality refers to the uniqueness of data values contained in a particular column (attribute) of a database table. The lower the cardinality, the more duplicated elements in a column. Thus, a column with the lowest possible cardinality would have the same value for every row. In this example process the cardinality of only the top 200*(number of columns in the source table) rows are analyzed to improve performance.
[67] Structured Query Language (SQL) queries are used to find cardinality. Note that the SQL query "select count (distinct column 1) from table" does not calculate NULL values and output will be incorrect in such case. The SQL query used to determine cardinality of a column is: card(columnl) = select count(*) from (select distinct columnl from table). The SQL query used to determine cardinality of entries in a multi-column, e.g., two-column) table is: card(columnl, column2) = select count(*) from (select distinct columnl, column2 from table).
[68] Process step 1910 is a decision block. If the source table does not contains data the control passes to process block 1906 and the process ends. If the source table contains data the control passes to process block 1912.
[69] In process step 1912 the algorithm analyzes the names of columns based on common character strings, common character position and word separation characters to build dimension candidate groups of columns. Each dimension candidate group contains columns with common character strings. The algorithm first finds all different groups with common character strings, then filters found groups based on word separation character usages, such as the underscore, in common character strings and then filters the groups based on common character string position.
[70] Three different example groups which are found during this step are:
[71] First Group: PROD_=[PROD_LOB, PROD TYPE, PROD BRAND,
PROD ITEM KEY, PROD ITEM DSC]
[72] Second Group: PROD=[PROD_LOB, PROD TYPE, PROD BRAND, PROD ITEM KEY, PROD_ITEM_DSC, PRODUCT]
[73] Third Group: _ITEM_=[PROD_ITEM_KEY, PROD_ITEM_DSC]
[74] The first group results from searching on the combination of the character string "PROD" and the underscore symbol and the second group results from searching on only the character string "PROD". These groups turn out to be the same. The third group results from searching on the character string "ITEM" preceded and followed by the underscore symbol. Note that the third group is a subset of both the first and second groups.
[75] In process step 1914 the algorithm loads the cardinality for each simple dimension candidate group. The cardinality of the combined columns in each dimension candidate group is determined.
[76] The algorithm constructs the following query to analyze the cardinalities of the first, second and third groups: select 0,count(*) from (select distinct
"PROD_LOB","PROD_BRAND","PROD_TYPE","PRODJTEM_KEY","PROD ITEM _DSC" from "BICS_REVENUE_FT2" where rownum<=6800) union all select l,count(*) from (select distinct "PROD_ITEM_KEY","PROD_ITEM_DSC" from "BICS REVENUE FT2" where rownum<=6800) union all select 2,count(*) from (select distinct "PROD_LOB", "PROD BRAND", "PROD TYPE", "PROD ITEM KEY", "PROD_ITEM_DSC", "PRODUCT" from "BICS_REVENUE_FT2" where
rownum<=6800).
[77] In this example process the cardinality of only the top 200*(number of columns in the source table) rows are analyzed to improve performance.
[78] In process step 1916 the column and cardinalities of the candidate dimension groups are analyzed to detect simple dimensions. This analysis is based on the fact that the key column cardinality must be equal to the group cardinality. A group for which a simple key is found is designated a simple dimension.
[79] Algorithm steps for determining the simple key of a group are illustrated with reference to Fig. 20 that depicts a table "DATASET" including columns "CUST KEY", "CUST_NAME" and "CUST GENDER".
[80] For the table "DATASET" a simple key can be determined using the following SQL query requests: card(CUST_KEY, CUST NAME, CUST GENDER) = 7; AND card (CUST_KEY) = 7; card (CUST_NAME) = 4; card (CUSTJ3ENDER) = 1.
[81] Therefore "CUST KEY" is a simple key because the cardinality of
"CUST_KEY" and the cardinality of all the columns of "DATASET" are the same, in this case card = 7. Only two SQL queries are required to determine the simple key.
[82] In process step 1916 simple dimensions are filtered to remove duplicates and subsets. Duplicate simple dimensions have the same key. A first dimension is a subset of a second dimension if the second dimension contains all the columns of the first dimension.
[83] After duplicates and subsets are filtered the algorithm finds the maximum disjoint set and removes excess dimensions. [84] A first example will illustrate filtering duplicate and excessive dimensions. The following seven groups are identified in a source table named "AIRLINE TRAFFIC" with group names: "ROUTE", "ROU", "ION", "DISTANCE", "DEP", "DEST" and "ORIG".
[85] {source: AIRLINE TRAFFIC; name: ROUTE; columns: [ROUTE,
ROUTE DESCRIPTION]; uniqueColumns: [ROUTE]; key: [ROUTE]}
[86] {source: AIRLINE TRAFFIC; name: ROU; columns: [DISTANCE GROUP, ROUTE, ROUTE_DESCRIPTION]; uniqueColumns: [ROUTE]; key: [ROUTE]}
[87] {source: AIRLINE TRAFFIC; name: ION; columns:
[DEST_DIVISION_NAME, ORIG REGION NAME, ROUTE_DESCRIPTION, ORIG_DIVISION_NAME]; uniqueColumns: [ROUTE_DESCRIPTION]; key:
[ROUTE_DESCRIPTION] }
[88] {source: AIRLINE TRAFFIC; name: DISTANCE; columns:
[DISTANCE_GROUP, DISTANCE_CLASS]; uniqueColumns: [DISTANCE_GROUP]; key: [DISTANCE_GROUP]}
[89] {source: AIRLINE TRAFFIC ; name: DEP; columns: [DEP MONTH, DEP DAY, DEP YEAR]; uniqueColumns: [DEP MONTH, DEPJDAY]; key:
[DEP MONTH] }
[90] {source: AIRLINE TRAFFIC; name: DEST; columns: [DEST AIRPORT, DEST US STATE NAME, DEST_DIVISION_NAME, DEST CITY NAME, DEST AIRPORT NAME] ; uniqueColumns: [DEST_AIRPORT,
DEST AIRPORT NAME] ; key: [DEST AIRPORT] }
[91] {source: AIRLINE TRAFFIC; name: ORIG; columns:
[ORIG AIRPORT NAME, ORIG_AIRPORT, ORIG REGION NAME, ORIG CITY NAME, ORIG US STATE NAME, ORIG_DIVISION_NAME];
uniqueColumns: [ORIG AIRPORT NAME, ORIG_AIRPORT]; key:
[ORIG_AIRPORT]}
[92] In this example, the dimension candidate "ION" is excessive because all the columns included in "ION" are present in one of the other groups.
[93] Also, in this example, the dimension candidates "ROU" and "ROUTE" are duplicate dimensions because they both have the same key. In this example, the algorithm filters out the "ROU" candidate group for the following reasons. First, it is more difficult to find a dimension candidate group with a greater common character length and, second, it is more probable that the user consciously defined a dimension with the longer common character length.
[94] The output of the algorithm after filtering is:
[95] {source: AIRLINE_TRAFFIC; name: ROUTE; columns: [ROUTE,
ROUTE_DESCRIPTION]; uniqueColumns: [ROUTE]; key: [ROUTE]}
[96] {source: AIRLINE TRAFFIC; name: DISTANCE; columns:
[DISTANCE_GROUP, DISTANCE CLASS]; uniqueColumns: [DISTANCE_GROUP]; key: [DISTANCE_GROUP]}
[97] {source: AIRLINE TRAFFIC; name: DEP; columns: [DEPJVIONTH, DEP DAY, DEP YEAR]; uniqueColumns: [DEPJVIONTH, DEP DAY]; key:
[DEPJVIONTH] }
[98] {source: AIRLINE TRAFFIC; name: DEST; columns: [DE ST AIRPORT, DEST US STATE NAME, DEST_DIVISION_NAME, DEST CITY NAME, DEST AIRPORT NAME] ; uniqueColumns: [DEST AIRPORT,
DEST AIRPORT NAME] ; key: [DEST AIRPORT] } [99] {source: AIRLINE TRAFFIC; name: ORIG; columns:
[ORIG_AIRPORT NAME, ORIG_AIRPORT, ORIG REGION NAME,
ORIG CITY NAME, ORIG US STATE NAME, ORIG_DIVISION_NAME];
uniqueColumns: [ORIG AIRPORT NAME, ORIG_AIRPORT]; key:
[ORIG_AIRPORT]}
[100] Columns included in found dimension are not further analyzed.
[101] A second example illustrates two iterations to identify sub-dimensions. The following seven groups are identified by the first iteration of the dimension candidate group search of the source table named "BICS REVENUE" with group names
"ORDER", "CUST", "DER", "KEY", "ADDR", "ITEM" and "COUNTRY".
[102] {source: BICS_REVENUE_FT2; name: ORDER; columns: [ORDER KEY, ORDER STATUS] ; uniqueColumns: [ORDER KEY]; key: [ORDER KEY]}
[103] {source: BICS_REVENUE_FT2; name: CUST; columns: [CUST NAME, CUST MARITAL STATUS, CUST BIRTH DT, CUST NUMBER, CUST GENDER, CUST CRDT RATE, CUST_TYPE, CUST SEGMENT] ; uniqueColumns:
[CUST_NAME, CUST NUMBER] ; key: [CUST_NUMBER] }
[104] {source: BICS_REVENUE_FT2; name: DER; columns: [ORDER KEY, ORDER STATUS , CUST GENDER] ; uniqueColumns: [ORDER KE Y] ; key:
[ORDER KEY] }
[105] {source: BICS_REVENUE_FT2; name: KEY; columns: [ORDER KEY, PROD ITEM KEY, ADDR KEY]; uniqueColumns: [ORDER KE Y] ; key:
[ORDER KE Y] }
[106] {source: BICS_REVENUE_FT2; name: ADDR; columns: [ADDRESS2, ADDRESS l, ADDR KEY]; uniqueColumns: [ADDR KEY]; key: [ADDR KEY]} [107] {source: BICS_REVENUE_FT2; name: ITEM; columns: [PROD ITEM KEY, PRODJTEMJDSC]; uniqueColumns: [PROD ITEM KEY, PROD_ITEM_DSC]; key:
[PROD ITEM KE Y] }
[108] {source: BICS_REVENUE_FT2; name: COUNTRY; columns:
[COUNTRY_CODE, COUNTRY NAME] ; uniqueColumns: [COUNTRY CODE, COUNTRY NAME] ; key: [COUNTRY_CODE]}
[109] The duplicate dimensions are "DER", "ORDER" and "KEY" because they have the same key. Since the average length of the column entries in "ORDER" is greater than the average length of the column entries in "DER" and in "KEY" and algorithm filters out the "DER" and "KEY" dimension candidate groups.
[110] The output after filtering is:
[111] {source: BICS_REVENUE_FT2; name: ORDER; columns: [ORDER KEY, ORDER STATUS] ; uniqueColumns: [ORDER KEY]; key: [ORDER KEY]}
[112] {source: BICS_REVENUE_FT2; name: CUST; columns: [CUST_NAME, CUST_MARITAL_STATUS, CUST BIRTH DT, CUST NUMBER, CUST GENDER, CUST_CRDT_RATE, CUST_TYPE, CUST_SEGMENT] ; uniqueColumns:
[CUST NAME, CUST NUMBER] ; key: [CUST NUMBER] }
[113] {source: BICS_REVENUE_FT2; name: ADDR; columns: [ADDRESS2, ADDRESS 1, ADDR KEY]; uniqueColumns: [ADDR KEY]; key: [ADDR KEY]}
[114] {source: BICS_REVENUE_FT2; name: ITEM; columns: [PROD ITEM KEY, PROD_ITEM_DSC]; uniqueColumns: [PROD ITEM KEY, PRODJTEM_DSC]; key:
[PROD ITEM KEY] } [115] {source: BICS_REVENUE_FT2; name: COUNTRY; columns:
[COUNTRY_CODE, COUNTRY NAME]; uniqueColumns: [COUNTRY_CODE, COUNTRY NAME] ; key: [COUNTRY_CODE]}
[116] A second iteration of the simple dimension candidate search identifies two dimension candidate group with names "PROD " and "PROD". The output of the search is:
[117] {source: BICS_REVENUE_FT2; name: PROD_; columns: [PROD_LOB, PROD TYPE, PROD BRAND] ; uniqueColumns: [PROD TYPE]; key:
[PROD TYPE]}
[118] {source: BICS_REVENUE_FT2; name: PROD; columns: [PROD_LOB, PROD TYPE, PROD BRAND, PRODUCT]; uniqueColumns: [PRODUCT]; key: [PRODUCT]}
[119] In this example the dimension candidate group "PROD " is a sub-dimension of "PROD" because all of its columns are included in "PROD". The algorithm filters out "PROD " and the filtered output is:
[120] {source: BICS_REVENUE_FT2; name: PROD; columns: [PROD_LOB, PROD TYPE, PROD BRAND, PRODUCT]; uniqueColumns: [PRODUCT]; key: [PRODUCT] }
[121] Process step 1920 is a decision block. If a simple dimension is found during the last iteration of process steps 1912-1916 the control passes back to process step 1912. If no simple dimension is found control passes to process step 1922.
[122] In process step 1922 names of columns not included in simple dimensions are analyzed again to build complex dimension candidate groups as in process step 1912. [123] In process step 1924 the cardinality of each complex dimension candidate group is loaded and the candidate groups are filtered using the algorithmic steps described above with reference to process step 1914.
[124] In process step 1926 the column and group cardinalities are analyzed to determine complex keys for the dimension candidate groups that are not simple dimensions. Groups having complex keys are designated as complex dimensions.
[125] The algorithmic steps for determining a complex key will now be described with reference to the table "GENDER" depicted in Fig. 21.
[126] In "GENDER" the cardinalities of the entire table and each column are:
card(KEY, NAME, TYPE, GENDER) = 12; card(KEY) = 6; card(NAME)=4;
card(TYPE)=3; card(GENDER)=2.
[127] A complex key formed from two columns must have the cardinality of the entire group. The cardinalities of each combination of two columns are: card(NAME, TYPE)=12; card(KEY, TYPE)=10; card(KEY, NAME) = 8; card(KEY, GENDER)=6.
[128] Accordingly, the column pair of NAME and TYPE can function as a complex key because the combined cardinality of the pair of columns is the same as the group cardinality.
[129] Process step 1928 is a decision block. If all columns have been analyzed then control passes to process block 1930 and the process ends. If all columns have not been analyzed then control passes to process block 1932.
[130] In process step 1932 columns not included in any simple or complex dimensions are analyzed. Integer columns are added to measures but not removed from analysis. If an unused column is functionally dependent on a dimension key of only a particular dimension candidate group then the algorithm adds the unused column to that particular dimension candidate group. If an unused column can be added to several dimension candidate group then the algorithm adds the unused column to the dimension candidate group with the lowest cardinality.
[131] To understand whether an unused analyzed column is functionally dependent upon a key the algorithm loads the cardinality for a group formed of the key columns and the unused analyzed column. For example, a first dimension candidate group has columns (CUSTJ EY, CUST NAME, CUST GENDER) and a simple key "CUST_KEY". The algorithm analyzes the unused column "CATEGORY" to determine whether to add it to the first dimension category group. If CATEGORY is functionally dependent upon CUSTJCEY then card(CUST_KEY, CATEGORY) = card(CUST KEY) and the column "CATEGORY" is added to the first dimension candidate group.
[132] A similar analysis is done for case where the first dimension candidate group has a complex key (CUSTJCEY, CUST NAME). In this case, if CATEGORY is functionally dependent upon (CUSTJCEY, CUST_NAME) then card(CUST KEY, CUSTJSfAME, CATEGORY) = card(CUST KEY, CUST_NAME) and the column "CATEGORY" is added to the first dimension candidate group.
[133] When process step 1932 completes control is passed to process step 1930 and the process ends.
[134] As a result of applying the process steps of Fig. 19 to the table
"BICS_REVENUE_FT2", the recommended measures are UNITS, COST VARJABLE, REVENUE, COST_FIXED, DISCNT VALUE and the recommended dimensions are: (1) name: ADDR; columns: [ADDRESS2, ADDRESS 1, ADDR KEY,
POSTAL_CODE, CITY, STATE_PROV]; uniqueColumns: [ADDR KEY]; key:
[ADDR KEY]; (2) name: ORDER; columns: [UNITS, ORDER KEY,
ORDER STATUS, TIME BILL DT, TIME PAID DT, CHANNEL J4AME];
uniqueColumns: [ORDER JCEY] ; key: [ORDER JCEY] ; (3) name: COUNTRY; columns: [AREA, COUNTRY CODE, REGION, COUNTRY NAME] ; uniqueColumns: [COUNTRY_CODE, COUNTRY NAME] ; key: [COUNTRY_CODE]; (4) name: CUST; columns: [CUST_NAME, CUST MARITAL STATUS,
CUS T_B IRTH DT, CUST NUMBER, CUST GENDER, CUST CRDT RATE, CUST TYPE, CUST_SEGMENT] ; uniqueColumns: [CUST NAME,
CUST NUMBER]; key: [CUST_NUMBER] ; and (5) name: PROD; columns:
[PROD LOB, PROD TYPE, PROD BRAND, PRODUCT]; uniqueColumns:
[PRODUCT]; key: [PRODUCT].
[135] In an example embodiment, the software system generates display data for presenting user interfaces allowing a user to review the recommended measures candidates, dimension candidates and key candidates and to modify recommendations as necessary.
[136] Fig. 22 depicts a review user interface 2200 presenting the fact and dimension tables recommended after applying the process steps of Fig. 19 to the table
"BICS REVENUE FT2". The review user interface 2200 displays several windows.
[137] A name window 2202 shows the name of the table that has been analyzed and a comment window 2204 summarizes the results of the analysis.
[138] A source table window 2206 lists the column names of the source table and shows a check mark next to columns that are included in recommended facts or dimensions. If a column cannot be analyzed and is not included in a recommended fact or dimension table then a warning symbol instead of a check is displayed next to the column and a warning is included in the comment window.
[139] A fact table window 2208 shows the name of the fact table, the measure column candidate names and check marks next to foreign keys in the fact table that reference the primary keys of the dimensions tables. [140] The dimension tables window 2210 shows names of the recommended dimension candidates, the column names included in each dimension candidate and check marks next to simple/complex key candidates.
[141] If the information to be displayed in a given window exceeds the size of the window scroll bars are displayed to allow scrolling to view all the information.
[142] The review user interface 2200 includes a next control button to review the next table analyzed and an add button to add the currently shown table to the data model.
[143] The review user user 2200 also facilitates user interaction to edit and change the contents of the recommended tables. As depicted in Figs. 23 and 24, the review user interface 2200 is responsive to input signals to allow selecting column candidates and using drop down menus 2310 depicting actions to remove or move selected columns to an existing or new dimension.
[144] In Fig. 24 columns "PROD LOB" and "PROD TYPE" are shown removed from the Fig. 23 dimension "PROD" and added into the dimension "ITEM".
[145] The review user interface 2200 also facilitates user interaction to merge one recommended dimension into another. In Fig. 25, the review user interface 2200 is responsive to input signals to select a dimension table display drop down menu 2510 depicting actions to merge a selected dimension into another dimension.
[146] In Fig. 26 the dimension "PROD" is shown removed and all columns moved into the dimension "ITEM".
[147] Fig. 27 is a block diagram illustrating components of an example operating environment in which various example embodiments may be implemented. The system 2700 can include one or more user computers, computing devices, or processing devices 2712, 2714, 2716, 2718, which can be used to operate a client, such as a dedicated application, web browser, etc. The user computers 2712, 2714, 2716, 2718 can be general purpose personal computers (including, merely by way of example, personal computers and/or laptop computers running various versions of Microsoft Windows and/or Apple Macintosh operating systems), cell phones or PDAs (running software such as Microsoft Windows Mobile and being Internet, e-mail, SMS, Blackberry, or other communication protocol enabled), and/or workstation computers running any of a variety of
commercially-available UNIX or UNIX-like operating systems (including without limitation, the variety of GNU/Linux operating systems). These user computers 2712, 2714, 2716, 2718 may also have any of a variety of applications, including one or more development systems, database client and/or server applications, and Web browser applications. Alternatively, the user computers 2712, 2714, 2716, 2718 may be any other electronic device, such as a thin-client computer, Internet-enabled gaming system, and/or personal messaging device, capable of communicating via a network (e.g., the network 2710 described below) and/or displaying and navigating Web pages or other types of electronic documents. Although the example system 2700 is shown with four user computers, any number of user computers may be supported.
[148] In most embodiments, the system 2700 includes some type of network 2710. The network may be any type of network familiar to those skilled in the art that can support data communications using any of a variety of commercially-available protocols, including without limitation TCP/IP, SNA, IPX, AppleTalk, and the like. Merely by way of example, the network 2710 can be a local area network ("LAN"), such as an Ethernet network, a Token-Ring network and/or the like; a wide-area network; a virtual network, including without limitation a virtual private network ("VPN"); the Internet; an intranet; an extranet; a public switched telephone network ("PSTN"); an infra-red network; a wireless network (e.g., a network operating under any of the IEEE 802.1 1 suite of protocols, the Bluetooth protocol known in the art, and/or any other wireless protocol); and/or any combination of these and/or other networks. [149] The system may also include one or more server computers 2702, 2704, 2706 which can be general purpose computers, specialized server computers (including, merely by way of example, PC servers, UNIX servers, mid-range servers, mainframe computers rack-mounted servers, etc.), server farms, server clusters, or any other appropriate arrangement and/or combination. One or more of the servers (e.g., 2706) may be dedicated to running applications, such as a business application, a Web server, application server, etc. Such servers may be used to process requests from user computers 2712, 2714, 2716, 2718. The applications can also include any number of applications for controlling access to resources of the servers 2702, 27027, 2706.
[150] The Web server can be running an operating system including any of those discussed above, as well as any commercially-available server operating systems. The Web server can also run any of a variety of server applications and/or mid-tier applications, including HTTP servers, FTP servers, CGI servers, database servers, Java servers, business applications, and the like. The server(s) also may be one or more computers which can be capable of executing programs or scripts in response to the user computers 2712, 2714, 2716, 2718. As one example, a server may execute one or more Web applications. The Web application may be implemented as one or more scripts or programs written in any programming language, such as Java, C, C# or C++, and/or any scripting language, such as Perl, Python, or TCL, as well as combinations of any programming/scripting languages. The server(s) may also include database servers, including without limitation those commercially available from Oracle, Microsoft, Sybase, IBM and the like, which can process requests from database clients running on a user computer 2712, 2714, 2716, 2718.
[151] The system 2700 may also include one or more databases 2720. The database(s) 2720 may reside in a variety of locations. By way of example, a database 2720 may reside on a storage medium local to (and/or resident in) one or more of the computers 2702, 2704, 2706, 2712, 2714, 2716, 2718. Alternatively, it may be remote from any or all of the computers 2702, 2704, 2706, 2712, 2714, 2716, 2718, and/or in communication (e.g., via the network 2710) with one or more of these. In a particular set of
embodiments, the database 2720 may reside in a storage-area network ("SAN") familiar to those skilled in the art. Similarly, any necessary files for performing the functions attributed to the computers 2702, 2704, 2706, 2712, 2714, 2716, 2718 may be stored locally on the respective computer and/or remotely, as appropriate. In one set of embodiments, the database 2720 may be a relational database, such as Oracle lOg, that is adapted to store, update, and retrieve data in response to SQL-formatted commands.
[152] FIG. 28 illustrates an example computer system 2800, in which various example embodiments may be implemented. The system 2800 may be used to implement any of the computer systems described above. The computer system 2800 is shown comprising hardware elements that may be electrically coupled via a bus 2824. The hardware elements may include one or more central processing units (CPUs) 2802, one or more input devices 2804 (e.g., a mouse, a keyboard, etc.), and one or more output devices 2806 (e.g., a display device, a printer, etc.). The computer system 2800 may also include one or more storage devices 2808. By way of example, the storage device(s) 2808 can include devices such as disk drives, optical storage devices, solid-state storage devices such as a random access memory ("RAM") and/or a read-only memory ("ROM"), which can be programmable, flash-updateable and/or the like.
[153] The computer system 2800 may additionally include a computer-readable storage media reader 2812, a communications system 2814 (e.g., a modem, a network card (wireless or wired), an infra-red communication device, etc.), and working memory 2818, which may include RAM and ROM devices as described above. In some embodiments, the computer system 2800 may also include a processing acceleration unit 2816, which can include a digital signal processor DSP, a special-purpose processor, and/or the like. [154] The computer-readable storage media reader 2812 can further be connected to a computer-readable storage medium 2810, together (and, optionally, in combination with storage device(s) 2808) comprehensively representing remote, local, fixed, and/or removable storage devices plus storage media for temporarily and/or more permanently containing computer-readable information. The communications system 2814 may permit data to be exchanged with the network and/or any other computer described above with respect to the system 2800.
[155] The computer system 2800 may also comprise software elements, shown as being currently located within a working memory 2818, including an operating system 2820 and/or other code 2822, such as an application program (which may be a client application, Web browser, mid-tier application, RDBMS, etc.). It should be appreciated that alternate embodiments of a computer system 2800 may have numerous variations from that described above. For example, customized hardware might also be used and/or particular elements might be implemented in hardware, software (including portable software, such as applets), or both. Further, connection to other computing devices such as network input/output devices may be employed.
[156] Storage media and computer readable media for containing code, or portions of code, can include any appropriate media known or used in the art, including storage media and communication media, such as but not limited to volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and/or transmission of information such as computer readable instructions, data structures, program modules, or other data, including RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, data signals, data transmissions, or any other medium which can be used to store or transmit the desired information and which can be accessed by the computer. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the various embodiments.
[157] Any suitable programming language can be used to implement the routines of particular embodiments including C, C++, Java, assembly language, etc. Different programming techniques can be employed such as procedural or object oriented. The routines can execute on a single processing device or multiple processors. Although the steps, operations, or computations may be presented in a specific order, this order may be changed in different particular embodiments. In some particular embodiments, multiple steps shown as sequential in this specification can be performed at the same time.
[158] Particular embodiments may be implemented in a non-transitory computer readable storage medium for use by or in connection with the instruction execution system, apparatus, system, or device. Particular embodiments can be implemented in the form of control logic in software or hardware or a combination of both. The control logic, when executed by one or more processors, may be operable to perform that which is described in particular embodiments.
[159] Particular embodiments may be implemented by using a programmed general purpose digital computer, by using application specific integrated circuits, programmable logic devices and field programmable gate arrays. Optical, chemical, biological, quantum or nanoengineered systems, components and mechanisms may be used. In general, the functions of particular embodiments can be achieved by any means as is known in the art. Distributed, networked systems, components, and/or circuits can be used. Communication, or transfer, of data may be wired, wireless, or by any other means.
[160] It will also be appreciated that one or more of the elements depicted in the drawings/figures can also be implemented in a more separated or integrated manner, or even removed or rendered as inoperable in certain cases, as is useful in accordance with a particular application. It is also within the spirit and scope to implement a program or code that can be stored in a machine readable medium to permit a computer to perform any of the methods described above.
[161] As used in the description herein and throughout the claims that follow, "a", "an", and "the" include plural references unless the context clearly dictates otherwise. Also, as used in the description herein and throughout the claims that follow, the meaning of "in" includes "in" and "on" unless the context clearly dictates otherwise.
[162] Thus, while particular embodiments have been described herein, latitudes of modification, various changes, and substitutions are intended in the foregoing disclosures, and it will be appreciated that in some instances some features of particular embodiments will be employed without a corresponding use of other features without departing from the scope and spirit as set forth. Therefore, many modifications may be made to adapt a particular situation or material within the essential scope and spirit.

Claims

Claims We claim:
1. A method, performed by one or more processors of a web server, comprising the steps of:
identifying columns of a source table having entries of data type "real" as measure column candidates, with the source table stored in an external database coupled to the web server by a network, and with the source table including a plurality of rows and columns with each column having a multi-character name and having one or more entries, with entries in a single column constrained to being of a single data type and with each column having a cardinality value equal to the number of distinct entries in the column;
combining non-measure column candidates identified as having names including a common character string into a dimension candidate group;
running one or more structured query language (SQL) statements to determine a column cardinality value of each single column in the dimension candidate group and a group cardinality value of all the columns in the dimension candidate group;
designating each single column having a column cardinality value equal to the group cardinality value as a simple key candidate column;
executing one or more structured query language (SQL) statements to determine a column-pair cardinality value of each pair of columns in the dimension candidate group if no simple key candidate exists;
designating a pair of columns in the dimension candidate group having a column-pair cardinality value equal to the group cardinality value as a complex key candidate pair of columns of the dimension candidate group; and
grouping measure column candidates and keys of dimension candidate groups to form a candidate fact table.
2. The method of claim 1 further comprising the step of:
determining a column cardinality value based on a limited number of rows of the source table.
3. The method of claim 1 further comprising the step of:
determining a group cardinality value based on a limited number of rows of the source table.
4. The method of claim 1 further comprising the step of:
determining a column-pair cardinality value based on a limited number of rows of the source table.
5. The method of claim 1 further comprising:
identifying a column having data type integer and not identified as a measure or included in a dimension candidate group as a measure column candidate.
6. The method of claim 1 further comprising:
identifying a plurality of different dimension candidate groups, with each dimension candidate group including columns having names including a common character string and a simple/complex key candidate column or pair of columns.
7. The method of claim 6 further comprising:
adding a column that is functionally dependent on a simple/complex key of a particular dimension candidate group in the plurality of dimension candidate groups and not identified as a measure or included in any dimension candidate group of the plurality to the particular dimension group.
8. The method of claim 1 further comprising:
adding a column that is functionally dependent on simple/complex keys of a subset of the dimension candidate groups in the plurality of dimension candidate groups and not identified as a measure or included in any dimension candidate group of the plurality to the dimension candidate group in the subset having the lowest cardinality.
9. The method of claim 1 further comprising:
for one or more discovered simple key candidate columns of the dimension candidate group, selecting a simple key candidate column having a lowest average length of the column entries as a simple primary key.
10. The method of claim 6 further comprising:
eliminating duplicate dimension candidate groups;
eliminating a dimension candidate group that is a subgroup of another dimension candidate group; and
eliminating excessive dimension candidate groups.
11. The method of claim 1 further comprising:
for one or more discovered simple key candidate columns of a dimension candidate group, selecting a simple key candidate column having entries of type integer as a simple key column.
12. The method of claim 1 further comprising:
moving, in response to input signals, a selected column from a first to a second dimension candidate group.
13. The method of claim 1 further comprising:
merging, in response to input signals, a first dimension candidate group into a second dimension candidate group.
14. One or more non-transitory computer readable storage media storing program code for execution by one or more processors included in web server, where the program code, when executed by the one or more processors, performs the following acts:
identifying columns of a source table having entries of data type "real" as measure column candidates, with the source table stored in an external database coupled to the web server by a network, and with the source table including a plurality of rows and columns with each column having a multi-character name and having one or more entries, with entries in a single column constrained to being of a single data type and with each column having a cardinality value equal to the number of distinct entries in the column;
combining non-measure column candidates identified as having names including a common character string into a dimension candidate group;
running one or more structured query language (SQL) statements to determine a column cardinality value of each single column in the dimension candidate group and a group cardinality value of all the columns in the dimension candidate group;
designating each single column having a column cardinality value equal to the group cardinality value as a simple key candidate column;
executing one or more structured query language (SQL) statements to determine a column-pair cardinality value of each pair of columns in the dimension candidate group if no simple key candidate exists;
designating a pair of columns in the dimension candidate group having a column-pair cardinality value equal to the group cardinality value as a complex key candidate pair of columns of the dimension candidate group; and grouping measure column candidates and keys of dimension candidate groups to form a candidate fact table.
15. The one or more non-transitory computer readable storage media of claim 14 with the program code, when executed by the one or more processors, further performing the act of:
determining a column cardinality value based on a limited number of rows of the source table.
16. The one or more non -transitory computer readable storage media of claim 14 with the program code, when executed by the one or more processors, further performing the act of:
determining a group cardinality value based on a limited number of rows of the source table.
17. The one or more non-transitory computer readable storage media of claim 14 with the program code, when executed by the one or more processors, further performing the act of:
determining a column-pair cardinality value based on a limited number of rows of the source table.
18. The one or more non-transitory computer readable storage media of claim 14 with the program code, when executed by the one or more processors, further performing the act of:
identifying a column having data type integer and not identified as a measure or included in a dimension candidate group as a measure column candidate.
19. The one or more non-transitory computer readable storage media of claim 14 with the program code, when executed by the one or more processors, further performing the act of:
identifying a plurality of different dimension candidate groups, with each dimension candidate group including columns having names including a common character string and a simple/complex key candidate column or pair of columns.
20. The one or more non-transitory computer readable storage media of claim 19 with the program code, when executed by the one or more processors, further performing the act of:
adding a column that is functionally dependent on a simple/complex key of a particular dimension candidate group in the plurality of dimension candidate groups and not identified as a measure or included in any dimension candidate group of the plurality to the particular dimension group.
21. The one or more non-transitory computer readable storage media of claim 14 with the program code, when executed by the one or more processors, further performing the act of:
adding a column that is functionally dependent on simple/complex keys of a subset of the dimension candidate groups in the plurality of dimension candidate groups and not identified as a measure or included in any dimension candidate group of the plurality to the dimension candidate group in the subset having the lowest cardinality.
22. The one or more non-transitory computer readable storage media of claim 14 with the program code, when executed by the one or more processors, further performing the act of: for one or more discovered simple key candidate columns of the dimension candidate group, selecting a simple key candidate column having a lowest average length of the column entries as a simple primary key.
23. The one or more non-transitory computer readable storage media of claim 19 with the program code, when executed by the one or more processors, further performing the act of:
eliminating duplicate dimension candidate groups;
eliminating a dimension candidate group that is a subgroup of another dimension candidate group; and
eliminating excessive dimension candidate groups.
24. The one or more non-transitory computer readable storage media of claim 14 with the program code, when executed by the one or more processors, further performing the act of:
for one or more discovered simple key candidate columns of a dimension candidate group, selecting a simple key candidate column having entries of type integer as a simple key column.
25. The one or more non-transitory computer readable storage media of claim 14 with the program code, when executed by the one or more processors, further performing the act of:
moving, in response to input signals, a selected column from a first to a second dimension candidate group.
26. The one or more non-transitory computer readable storage media of claim 14 with the program code, when executed by the one or more processors, further performing the act of:
merging, in response to input signals, a first dimension candidate group into a second dimension candidate group.
27. A web server including one or more processors and a memory storing program code, where the processor executes the program code to perform the following acts:
identifying columns of a source table having entries of data type "real" as measure column candidates, with the source table stored in an external database coupled to the web server by a network, and with the source table including a plurality of rows and columns with each column having a multi-character name and having one or more entries, with entries in a single column constrained to being of a single data type and with each column having a cardinality value equal to the number of distinct entries in the column;
combining non-measure column candidates identified as having names including a common character string into a dimension candidate group;
running one or more structured query language (SQL) statements to determine a column cardinality value of each single column in the dimension candidate group and a group cardinality value of all the columns in the dimension candidate group;
designating each single column having a column cardinality value equal to the group cardinality value as a simple key candidate column;
executing one or more structured query language (SQL) statements to determine a column-pair cardinality value of each pair of columns in the dimension candidate group if no simple key candidate exists; designating a pair of columns in the dimension candidate group having a column-pair cardinality value equal to the group cardinality value as a complex key candidate pair of columns of the dimension candidate group; and
grouping measure column candidates and keys of dimension candidate groups to form a candidate fact table.
PCT/RU2015/000476 2015-07-24 2015-07-24 Bi cloud services data modeling denormalized table introspection algorithm Ceased WO2017018904A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/RU2015/000476 WO2017018904A1 (en) 2015-07-24 2015-07-24 Bi cloud services data modeling denormalized table introspection algorithm
US14/785,677 US10437793B2 (en) 2015-07-24 2015-07-24 BI cloud services data modeling denormalized table introspection algorithm

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/RU2015/000476 WO2017018904A1 (en) 2015-07-24 2015-07-24 Bi cloud services data modeling denormalized table introspection algorithm

Publications (1)

Publication Number Publication Date
WO2017018904A1 true WO2017018904A1 (en) 2017-02-02

Family

ID=54540151

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/RU2015/000476 Ceased WO2017018904A1 (en) 2015-07-24 2015-07-24 Bi cloud services data modeling denormalized table introspection algorithm

Country Status (2)

Country Link
US (1) US10437793B2 (en)
WO (1) WO2017018904A1 (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10102236B2 (en) * 2011-11-15 2018-10-16 Pvelocity Inc. Method and system for providing business intelligence data
US11074235B2 (en) * 2017-08-10 2021-07-27 Io-Tahoe Llc Inclusion dependency determination in a large database for establishing primary key-foreign key relationships
US10942908B2 (en) * 2019-01-14 2021-03-09 Business Objects Software Ltd. Primary key determination
US12118041B2 (en) * 2019-10-13 2024-10-15 Thoughtspot, Inc. Query execution on compressed in-memory data
US11494363B1 (en) * 2021-03-11 2022-11-08 Amdocs Development Limited System, method, and computer program for identifying foreign keys between distinct tables
EP4334823A4 (en) * 2021-06-19 2024-12-11 Huawei Technologies Co., Ltd. METHOD AND SYSTEM FOR RECOMMENDING A STORAGE FORMAT FOR MIGRATION OF RDBMS

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060036637A1 (en) * 2004-08-13 2006-02-16 Mehmet Sayal System and method for developing a star schema

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6768986B2 (en) 2000-04-03 2004-07-27 Business Objects, S.A. Mapping of an RDBMS schema onto a multidimensional data model
US20030004971A1 (en) 2001-06-29 2003-01-02 Gong Wen G. Automatic generation of data models and accompanying user interfaces
US7412439B2 (en) * 2004-01-07 2008-08-12 International Business Machines Corporation Method for statistics management
US7505888B2 (en) 2004-11-30 2009-03-17 International Business Machines Corporation Reporting model generation within a multidimensional enterprise software system
JP4159099B2 (en) * 2005-05-16 2008-10-01 インターナショナル・ビジネス・マシーンズ・コーポレーション Dimension table processing apparatus, dimension hierarchy extraction apparatus, dimension table processing method, dimension hierarchy extraction method, and program
US7478083B2 (en) * 2006-04-03 2009-01-13 International Business Machines Corporation Method and system for estimating cardinality in a database system
US20080059412A1 (en) * 2006-08-31 2008-03-06 Tarin Stephen A Value-instance connectivity computer-implemented database
US20080140696A1 (en) * 2006-12-07 2008-06-12 Pantheon Systems, Inc. System and method for analyzing data sources to generate metadata
US7856416B2 (en) * 2008-04-22 2010-12-21 International Business Machines Corporation Automated latent star schema discovery tool
US8996915B2 (en) * 2012-06-29 2015-03-31 International Business Machines Corporation Test data generation and scale up for database testing
US9519701B2 (en) * 2012-12-26 2016-12-13 Sap Se Generating information models in an in-memory database system
US20160019251A1 (en) * 2014-07-17 2016-01-21 Lexmark International Technology, SA System and Methods for Efficiently Storing Heterogeneous Data Records Having Low Cardinality

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060036637A1 (en) * 2004-08-13 2006-02-16 Mehmet Sayal System and method for developing a star schema

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"CHAPTER 15: Basics of Functional Dependencies and Normalization for Relational Databases ED - Ramez Elmasri; Shamkant B Navathe (eds)", 1 January 2011, FUNDAMENTALS OF DATABASE SYSTEMS (SIXTH EDITION), ADDISON-WESLEY, PAGE(S) 501 - 542, ISBN: 978-0-13-608620-8, XP009171419 *
"CHAPTER 2: Database System Concepts and Architecture ED - Elmasri R; Navathe S B (Eds)", 1 January 2011, FUNDAMENTALS OF DATABASE SYSTEMS (SIXTH EDITION),, PAGE(S) 29 - 55, ISBN: 978-0-13-608620-8, XP009171284 *
"CHAPTER 29: Overview of Data Warehousing and OALP ED - Ramez Elmasri; Shamkant B Navathe (eds)", 1 January 2011, FUNDAMENTALS OF DATABASE SYSTEMS (SIXTH EDITION), ADDISON-WESLEY, PAGE(S) 1067 - 1082, ISBN: 978-0-13-608620-8, XP009171529 *
CHAUDHURI S ET AL: "An overview of data warehousing and OLAP technology", SIGMOD RECORD, ACM, NEW YORK, NY, US, vol. 26, no. 1, 1 March 1997 (1997-03-01), pages 65 - 74, XP002115173, ISSN: 0163-5808, DOI: 10.1145/248603.248616 *

Also Published As

Publication number Publication date
US10437793B2 (en) 2019-10-08
US20170024421A1 (en) 2017-01-26

Similar Documents

Publication Publication Date Title
US11625415B2 (en) Data engine integration and data refinement
US10437793B2 (en) BI cloud services data modeling denormalized table introspection algorithm
CN106687952B (en) Techniques for Similarity Analysis and Data Enrichment Using Knowledge Sources
US20200012638A1 (en) Search integration
US20210318851A1 (en) Systems and Methods for Dataset Merging using Flow Structures
US10261762B2 (en) User interface template generation using dynamic in-memory database techniques
US11256852B2 (en) Converting portions of documents between structured and unstructured data formats to improve computing efficiency and schema flexibility
US10235468B2 (en) Indirect filtering in blended data operations
CN107408114B (en) Identifying join relationships based on transactional access patterns
JP6862531B2 (en) Guided data exploration
US10255376B2 (en) Computer implemented systems and methods for processing semi-structured documents
US10776401B2 (en) Efficient database query aggregation of variable length data
US20150379073A1 (en) Virtual split dictionary for search optimization
US10824620B2 (en) Compiling a relational datastore query from a user input
US11586616B2 (en) Automatically updating column data type
US20170109402A1 (en) Automated join detection
US20150178367A1 (en) System and method for implementing online analytical processing (olap) solution using mapreduce
US10380134B2 (en) Integrated predictive analysis
WO2021024966A1 (en) Company similarity calculation server and company similarity calculation method
US9619458B2 (en) System and method for phrase matching with arbitrary text
EP4334827A1 (en) Efficient storage and query of schemaless data
US10311049B2 (en) Pattern-based query result enhancement
US20180336214A1 (en) Worker thread processing
US12189664B2 (en) Using an object model to view data associated with data marks in a data visualization
US10846317B2 (en) Method and system for data processing and structural categorizing

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 14785677

Country of ref document: US

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15793923

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15793923

Country of ref document: EP

Kind code of ref document: A1