Generating multidimensional combination data

A set of available values is obtained corresponding to a set of data fields associated with a dimension member in a set of dimension members corresponding to a dimension in a set of dimensions of an object. Each possible combination of dimension members is computed for the object. For a data field of a dimension member of a dimension, a normalized value is computed based on values of the data field for each dimension member in the dimension. A combined data field value is computed for a possible combination of the object as a product of the normalized value of the data field in each dimension member that participates in the possible combination. A set of combined data field values corresponding to all possible combinations is analyzed to identify a possible combination having a property. A control component of a physical environment is adjusted according to the identified possible combination.

TECHNICAL FIELD

The present invention relates generally to a method, system, and computer program product for filling gaps in collected data. More particularly, the present invention relates to a method, system, and computer program product for generating multidimensional combination data.

BACKGROUND

Objects in many subject matter areas are related to each other in many different ways. For example, a server space involves an operating system, a server hardware platform, a virtualization hypervisor, a data center environment, a clustering solution, or some combination of these and other features. For example, a data processing system is related to an operating system and a type of hardware; and a type of hardware is related to a type of processor, a hypervisor, a data processing environment, and a cluster. A hypervisor can be of various types; a data processing environment can be of various configurations; and a cluster can use any of the various clustering solutions.

As another example, a phone can be of different sizes. A phone can also be of different colors. A phone can also have different configurations of memory and other features.

A dimension is a feature or another object to which an object is related, on which the object depends, or which describes all or a part of the object. For example, when the object is a server space, the operating system executing in that server space, the hardware platform deployed in that server space, the hypervisor in use with that server space, the clustering solution in use with that server space, and the type of data processing environment in which that server space participates are each a dimension of the server space. Similarly, when a phone is the object, the size, the color, and the memory of the phone are each a dimension of the phone.

A dimension can have dimension members. For example, the dimension members of an operating system dimension can be the specific operating systems that can be used. Accordingly, for a server space object, Windows™, AIX™ Linux™, PowerLinux™, Solaris™, HP-UX™ and zLinux™ are some example dimension members of a dimension that is the operating system (the trademarks are the property of their respective owners). Similarly, Intel™, zSeries™, PureAS™, Cisco UCS™, VCE vBlock™, and PureFlex™ are some example dimension members of a dimension that is the hardware platform (the trademarks are the property of their respective owners). Similarly, VMware™, PowerVM™, PowerKVM™, KVM™, Hyper RHEV™, Xenserver™, Z/VM™ and others are some example dimension members of a dimension that is the hypervisor (the trademarks are the property of their respective owners). MSCS™, Veritas™, Power HA™, and Oracle RAC™ are some example dimension members of a dimension that is the clustering solution (the trademarks are the property of their respective owners). Similarly, public cloud, private cloud, CMS™ and Softlayer™ are some example dimension members of a dimension that is the data processing environment (the trademarks are the property of their respective owners).

In a like manner, a phone object can have small, medium, and large as some example dimension members for the dimension that is the size of the phone. Red, blue, green, and orange can be some example dimension members for the dimension that is the color of the phone. 16 Gigabytes (GB), and 32 GB can be some example dimension members for the dimension that is the memory or storage space in the phone.

SUMMARY

The illustrative embodiments provide a method, system, and computer program product for generating multidimensional combination data. An embodiment includes a method. The embodiment obtains a set of available values corresponding to a set of data fields, the set of data fields being associated with a dimension member in a set of dimension members, the set of dimension members corresponding to a dimension in a set of dimensions of an object. The embodiment computes, using a processor and a memory, each possible combination of dimension members for the object. The embodiment computes, for a data field in the set of data fields of a dimension member in the set of dimension members of a dimension in the set of dimensions, a normalized value based on values of the data field for each dimension member in the dimension. The embodiment computes a combined data field value for a possible combination of the object, wherein the combined data field value is a product of the normalized value of the data field in each dimension member that participates in the possible combination. The embodiment analyzes a set of combined data field values corresponding to all possible combinations, to identify a possible combination having a property. The embodiment adjusts a control component of a physical environment according to the identified possible combination having the property.

Another embodiment includes a computer program product comprising one or more computer-readable storage devices, and program instructions stored on at least one of the one or more storage devices.

Another embodiment includes a computer system comprising one or more processors, one or more computer-readable memories, and one or more computer-readable storage devices, and program instructions stored on at least one of the one or more storage devices for execution by at least one of the one or more processors via at least one of the one or more memories.

DETAILED DESCRIPTION

Consider a server operating in a server space. Temporarily ignoring any configuring restrictions, any given server instance can be executing potentially any operating system on any hardware platform in any data processing environment. The server may also be hosted by any hypervisor and may be managed by any clustering solution. There, of course, can be many other dimensions and dimension members that are applicable to the server instance.

Generally, if there are x dimensions and each dimension has y dimension members, then the possible number of combinations in which an object can be related to the dimensions is (y)x. The illustrative embodiments recognize that the dimensionality of such relationship data can quickly become extremely large. For example, just 3 dimensions each having 4 dimension members produces 4*4*4=64 possible combinations. Thus, when the object is a server space, given 6 possible operating systems, 7 possible hardware platforms, 8 possible hypervisors, 4 possible clustering solutions, and 4 possible data processing environments that can be configured for that server space results in 6*7*8*4*4=5376 possibilities.

The illustrative embodiments recognize that given such rapid increase in the numbers, which configuration to use/deploy/recommend/remove/disregard is a difficult question to answer in a datacenter. Similarly, with the phone object, which size, color, and memory configuration to produce/source/market/supply/procure/remove/discontinue is a difficult question to answer in a manufacturing or supply chain environment.

The illustrative embodiments recognize that each dimension member has one or more data values in the corresponding one or more data fields. For example, while six different operating systems may be available as options, not all of them are suitable or desirable in a given server space depending on the workload, customer, preferences, policies, and many other factors. For example a data value might be available representing the number of users that prefer a given operating system. Following this example, 57 users might prefer Windows (dimension member Window has value 57). Similarly, Linux might be preferred in 17 instances, PowerLinux in 1 case, AIX by 15 users, Solaris in 4 circumstances, HP-UX in 1 case, and zLinux in 2 cases.

Generally, any number of data fields may be associated with a dimension and dimension member. If a data field is available for a particular dimension or dimension member, that data field is available for all dimensions and dimension members in consideration, but may have null or invalid values when that data files is not applicable to or unavailable for a dimension or dimension member. Furthermore, a value in a data field can be numeric or non-numeric, such as alphabetic, alphanumeric, symbolic, or encoded in other ways e.g. by using color codes. Regardless of the type of value stored in a data field, an embodiment can be adapted to convert such value to a numeric value for use in an operation described herein, and such adaptations are contemplated within the scope of the illustrative embodiments.

The illustrative embodiments recognize that data is available from certain data sources about certain combinations of dimensions and dimension members but the data about many dimensional combinations is not available because either the data is not collected at each combination, or many combinations are not even used. For example, user preference data about small blue phones may be available but medium orange phones with 16 GB memory may not be available. A phone manufacturer has no information about medium orange phones with 16 GB memory, unless such a product was actually produced, sold, and its data collected, to determine whether such a product should be manufactured or removed from their offering.

Similarly, a datacenter may have volumes of usage data about Windows servers on Intel Hardware running under the Xen hypervisor in Cloud data centers with Oracle RAC used for clustering. But if an administrator wishes to compare the usage data of this configuration with the usage data of dedicated AIX servers running on PureFlex hardware in private data centers with no clustering solution, the latter data may simply not be available for the comparison.

The illustrative embodiments recognize that the availability of data about multidimensional combinations is usually sparse, with data being available for only some combinations of the dimensions. A need exists for generating logically reasonable data for the missing multidimensional combinations, which might easily number in the thousands. Furthermore, such data has to be based on the available actual data about the actual dimensional combinations.

The illustrative embodiments used to describe the invention generally address and solve the above-described problems and other problems related to the scarcity of data about multidimensional combinations. The illustrative embodiments provide a method, system, and computer program product for generating multidimensional combination data.

An embodiment can be implemented as a software application. The application implementing an embodiment can be configured as a modification of an analytics engine or a control component, as a separate application that operates in conjunction with an existing analytics engine or control component, a standalone application, or some combination thereof.

An analytics engine is a software tool usable for performing a data analysis according to an analytical model or algorithm. A control component is a component that is usable for controlling or configuring a data processing environment, a manufacturing process, a supply chain process, and the like.

Returning to the example comparison that an administrator in a datacenter wishes to perform, presently, the data needed to perform that comparison is unavailable. However, data for some dimension members independently, or in some dimensional combinations, is available. For example, the relative usage of operating systems is available. Data about the relative usage of hypervisors, hardware platforms, data processing environments, and clustering solutions is also available.

Given the available data of certain independent dimensions, certain combinations of certain dimensions, or some combination thereof, an embodiment derives or generates the data for the possible or needed multidimensional combinations. One example consideration in the generation of such data is that certain combinations of dimensions may not be possible or may not be allowed. For example, the operating system dimension of “Windows” may not be combined with the hardware Platform dimension of “Unix”. An embodiment has the ability to exclude certain combinations of dimensions from the data generation process.

Another example consideration in the generation of such data is that certain dimensions must be weighted when combined. In the datacenter example, all servers have the dimension of operating system, hardware platform, and the data processing environment, but only some of the servers have the dimension of hypervisor and clustering. One embodiment weights the hypervisor and the clustering dimensions in this example to allow for combinations that have no hypervisor and no clustering. Another embodiment addresses this aspect—where some dimensions apply in some combinations but not all—by defining a dimension member of “None” for such dimensions. The “none” dimension member is used for the dimension in the combination where the dimension does not apply. The embodiment assigns the “none” dimension member a suitable value.

Another example consideration in the generation of such data is that the values of different dimension members may have different baselines. For example, Windows servers may be used 100,000 times and AIX server instances may be 30,000. An embodiment translates such different baseline numbers to a percentage for the dimension in question. For example, if the total server count is 500,000 then Windows servers are 20 percent and AIX servers are 6 percent. Such translation puts each dimension member value on a common baseline of 0 percent-100 percent and allows the embodiment to generate logically accurate data for the various combinations of dimensions.

An embodiment modifies this base-lining process to accommodate exclusions. The percentage value of the dimension combinations that are to be excluded are zeroed. The embodiment then proportionately redistributes the remaining percentages over the 0-100 percent baseline.

When the data of all desired multidimensional combinations has been generated, an embodiment invokes an analytics engine to perform a desired analytical operation on the generated data. An embodiment uses a result of the analytical operation to send a corresponding command to a control component. For example, an embodiment may find that even though medium sized orange phones with 16 GB are not produced or data is not available for that combination, such a multidimensional combination would be preferred by a higher than a threshold percentage of users. Accordingly, the embodiment sends a command to a control component to initiate the manufacturing, or trigger a supply chain, for such a combination.

A method of an embodiment described herein, when implemented to execute on a device or data processing system, comprises substantial advancement of the functionality of that device or data processing system in generating multidimensional combination data. For example, presently available data about multidimensional combinations is limited to only certain combinations of certain dimensions. An embodiment provides a method for generating logically sound and coherent data about other multidimensional combinations from the available data about multidimensional combinations. An embodiment applies one or more analytical techniques to the generated multidimensional combinations data to produce a result of the desired analysis. An embodiment further uses the result of the analysis to send a command to a control component. This manner of generating multidimensional combination data is unavailable in the presently available methods. Thus, a substantial advancement of such devices or data processing systems by executing a method of an embodiment is in enabling a comprehensive analysis of multidimensional combinations regardless of whether actual data is available for such analysis.

The illustrative embodiments are described with respect to certain dimensions, dimension members, values, multidimensional combinations, available data, generated data, analytical operations, commands, devices, data processing systems, environments, components, and applications only as examples. Any specific manifestations of these and other similar artifacts are not intended to be limiting to the invention. Any suitable manifestation of these and other similar artifacts can be selected within the scope of the illustrative embodiments.

Application105implements an embodiment described herein. Data source111is a data source, such as a database of survey information, performance information, preference information, usage information, or some combination of these and other similarly purposed data. The data in data source111is the available data of some actual multidimensional combinations. Application105uses data from data source111to generate derived data of other multidimensional combinations. Application105uses analytics engine107to produce a result of an analytical operation, such as those described herein via certain examples. Application105sends a control command, or causes a control command to be sent to one or more control components, such as to manufacturing control113, datacenter administration115, or supply chain control134.

With reference toFIG. 3, this figure depicts a block diagram of an example application for generating multidimensional combination data in accordance with an illustrative embodiment. Application302is an example of application105inFIG. 1. Input304is the available data of some dimensions, some multidimensional combinations, or a combination thereof. Input304is available from data source111inFIG. 1. Analytics engine306is an example of analytics engine107inFIG. 1.

The operations ofFIG. 3are described using the example of the phone object described earlier. From this disclosure, those of ordinary skill in the art will be able to adapt an embodiment to other objects, dimensions, and multidimensional combinations, and such adaptations are contemplated within the scope of the illustrative embodiments.

With reference toFIG. 4, this figure depicts an example phase in generating multidimensional combination data in accordance with an illustrative embodiment. Table402depicts available data from data source111for an example phone object. Table452depicts transformed and normalized data produced during the process of generating multidimensional combination data described with respect to application302herein. A dimension can have more than one value. A dimension member can have more than one value as shown. For example, dimension member “small” of dimension “size” can have a sales value indicating a volume of sales of phone objects having that dimension member, and a preference value indicating a preference for the phone objects having that dimension member.

Component308performs a transformation and normalization of input304. For example, given the three sizes of the phone object in row404—small, medium, and large, given the four colors of the phone object in row406—red blue, green, and orange, and given the two memory configurations in row408—16 GB and 32 GB, component308computes all the possible multidimensional combinations.

Assume that some phones are not configured with storage memory. Therefore, component308inserts a third memory configuration “none” (not shown), making the number of memory dimension members3. In this example, component308would compute the 3*4*3=36 possible multidimensional combinations for the phone. Some of the possible multidimensional combinations are listed in table472inFIG. 4.

Component308performs the translation of the raw data inputs from table402into relative percentages of table452. Using the example data in table402, the input for Sales of Small phones is 4. According to row404, the total for the entire dimension of Size is 4+10+25=39. Therefore, component308computes a transformed and normalized Sales value for dimension member Small as 4/39=10.26%

Similarly, the Preference value for Green dimension member is 6. The total for the dimension of Color according to row406is 4+4+6+10=24. Therefore, component308computes Preference value of Green dimension member as 6/24=25.00%

Not shown in table402is one additional dimension member—None—in dimension Memory. Suppose 75% of phones have no memory or storage space for users. Therefore, component308creates a dimension member of “None” (460) and assigns a value 75%. Because 75% of phones do not have memory the sales value of row408is representing only the remaining 25% of the phones. In other words, the dimension “memory” has only 25% weight because its actual data accounts for only 25% of the phone objects that do have memory. Generally, if a dimension has a “none” member, the weight of the dimension is 1 minus the value of the None member, or 100% minus the percentage value of the None member.

Component308computes the remaining dimension members as:
(Value/Total)*Dimension weight

Using the example values from table402, the total for the entire dimension of Memory is 0.75+1=1.75 and the weight of the Memory dimension is 25%. Accordingly, the value for Sales dimension member of 16 GB phones is transformed from 0.75 to (0.75/1.75)*25%=10.71%, as shown in row458. Component308performs the transformation and normalization computations for the Sales values and the Preference values in rows454and456in table452in a similar manner. The total percent value of a dimension is a sum of all the percentages of all dimension members in that dimension.

Component308further computes the relative percentages for each possible multidimensional combination.

Using the example data in table452, the combination of Large, Blue, 16 GB phones using percentage values of Sales in column462is a product of each dimension member that participates in that multidimensional combination, i.e., % of Large sales % of Blue sales % of 16 GB sales:
64.10%*25.81%*10.71%=1.77%

In a similar manner, component308computes the Preference percentage value in column464for the combination of Large Green 32 GB phones as:
20.18%*25.00%*3.75%=0.19%

Again, the sum of all Sales or Preference percentages in columns462or464, respectively, is 100%.

Component310uses the computed percentages for all multidimensional combinations to accommodate exclusions, i.e., combinations that have to be excluded from the possible multidimensional combinations. As an example, assume that Large Green phones may not have 32 GB of Memory as a possible add-on. Using the percentages in table472, component310eliminates one row from table472—the row that corresponds to Large Green 32 GB multidimensional combination. The value of Sales is 5.91% and Preference is 0.19% for this combination.

Because all percentages in columns462and464must add up to 100%, component310adjusts all other percentages in all remaining rows in table472after the removal of the row corresponding to Large Green 32 GB combination. As an example, consider the Large Blue 16 GB combination, whose sales and Preference percentages have to be adjusted because Large Green 32 GB combination is being excluded.

Large Blue 16 GB phones are 1.77% of 100% total for Sales without any exclusions. Therefore, component310adjusts 1.77% value by adding to it 1.77% 5.91%, i.e., the Large Blue 16 GB phone's proportion of 5.91% which is removed:
0.0177*0.0591=0.00104607
0.0177+0.00104607=0.01874607 (1.87%)

Other values of Sales and preference percentages of the remaining multidimensional combinations are adjusted in a similar manner.

If multiple combinations are to be excluded, the removed value is a sum of the values of the removed combinations, and the removed total is distributed proportionately among all remaining values. For example, if the Large Green 16 GB phones were to be excluded as well, component310would remove 5.91%+0.4.43%=10.34%. The adjustment to Large Blue 16 GB combination would be:
0.0177*0.1034=0.00183018
0.0177+0.00183018=0.01953018 (1.95%)

Application302outputs set312of generated values for the possible multidimensional combinations after any exclusions have been applied. Component314produces one or more analytic views from set312. For example, suppose a manufacturer wanted to identify a phone model that would be the best seller among all possible multidimensional combinations. Using set312, and analytics engine306, component314identifies the Large Green None memory combination with a computed normalized sales value of 31.02%, which is the highest computed sales value for any combination. As another example, suppose that the manufacturer wanted to identify a phone model that would be the worst seller among all possible multidimensional combinations. Using set312, and analytics engine306, component314identifies the Small Orange 16 GB combination with a computed normalized sales value of 0.04%, which is the lowest computed sales value for any combination.

Similarly, component314and analytics engine306would identify the Medium Orange 16 GB combination as the best preferred, with 4.06% computed preference value, which is the highest computed preference value for any combination. Component314and analytics engine306would identify the Large Blue 32 GB combination as the least preferred, with 0.13% computed preference value, which is the lowest computed preference value for any combination. A result of an analysis is produced as output316.

Component318sends control command320, or causes control command320to be sent from another system to a control component. For example, if an analysis result identifies the Medium Orange 16 GB combination as the best preferred, control command320directs a manufacturing process to increase a production of the Medium Orange 16 GB combination. If the analysis result identifies the Large Blue 32 GB combination as the least preferred, control command320directs a supply chain process to decrease the parts supply for the Large Blue 32 GB combination.

These examples of analyses, analytical operations, and control commands are not intended to be limiting. From this disclosure, those of ordinary skill in the art will be able to conceive many other analyses, analytical operations, and control commands, and the same are contemplated within the scope of the illustrative embodiments.

With reference toFIG. 5, this figure depicts a flowchart of an example process for generating multidimensional combination data in accordance with an illustrative embodiment. Process500can be implemented in application302inFIG. 3.

The application identifies a set of dimensions, each dimension in the set having a set of dimension members (block502). The application further identifies a set of data fields, where the set of data fields is applicable to each dimension member in the set of dimension members and to all dimensions related to the object (block504). A data field holds a specific value for a dimension member.

The application accepts an available input value for each data field for each dimension member (block506). The application accepts an available input value representing a dimension weight according to a selected range, e.g., 0-100% (block508). The application receives as input any excluded combinations of dimension members (block510).

The application derives all possible dimension member combinations (block512). The application computes relative percentages for each dimension member based on the available input values (block514). The Application computes a set of products (multiplication), each product being of the relative percentages of each dimension member participating in a particular multidimensional combination (block516).

The application removes a subset of products from the set computed in block516(block518). A removed product corresponds to an excluded combination. The application adjusts the products in the remaining subset of products to ensure that the sum of the remaining product values of a type remains 100%.

The application performs an analysis of the remaining subset of adjusted products, and sends a control command to cause a change to occur in a manufacturing or data processing environment (block520). The application ends process500thereafter.

Where an embodiment is described as implemented in an application, the delivery of the application in a Software as a Service (SaaS) model is contemplated within the scope of the illustrative embodiments. In a SaaS model, the capability of the application implementing an embodiment is provided to the consumer by executing the application on a cloud infrastructure. The application is accessible from various client devices through a thin client interface such as a web browser (e.g., web-based e-mail). The user does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even the capabilities of the application, with the possible exception of limited user-specific application configuration settings.