How to determine what components make up a complex mixture based on a summary of that mixture? Any wine can be made up of many components. Each component is basically  a bunch of grapes from a specific place and time, so each component has three attributes: vintage, varietal, and appellation. 
While grapes come in to a winery as single components (eg. 2016 Russian River Valley Cabernet Sauvignon), a wine may end up composed of many components (after blending).
Given a summary of a finished wine's properties, how can you find a set of components — and their percentage contribution to the finished wine — that add up to that wine?
Here's what we have:
VINTAGE       %           VARIETY           %         APPELLATION               %
2014        98.00         Cab Sauv.       78.95       Russian River Valley    37.02
2015         1.50         Petit Sirah      9.12       Lake County             35.81
2016         0.50         Syrah            7.34       Sonoma Coast            22.79
                          Petit Verdot     4.42       Sonoma                   4.07
                          Sauv. Blanc      0.14       Napa                     0.31
                          Concentrate      0.03

Ideally we are able to find the smallest set of components, but any set of components that could solve this would be acceptable.
What is the answer(s) for this specific data set, and what is the right approach for this problem in general?

One solution is take all $3\times 6 \times 5 = 90$ possible combinations and simply multiply the relevant percentages together to give an overall percentage for each particular combination. For your example of a 2016 Cabernet Sauvignon from Russian River Valley, that would give $0.50\%\times   78.95\% \times 37.02\% = 0.14613645\%$
Another solution would be to draw from choices until they are used up to give $3+ 6 + 5 - 2=12$ possible combinations, for example using $37.02\%$ as 2014 Cabernet Sauvignon from Russian River Valley, which uses all the Russian River Valley, so the next choice is Lake County, and so on to give something like 
                                                  %
2014    Cab Sauv.       Russian River Valley    37.02 Russian River Valley used up 
2014    Cab Sauv.       Lake County             35.81 Lake County used up   
2014    Cab Sauv.       Sonoma Coast             6.12 Cab Sauv. used up  
2014    Petit Sirah     Sonoma Coast             9.12 Petit Sirah used up 
2014    Syrah           Sonoma Coast             7.34 Syrah used up 
2014    Petit Verdot    Sonoma Coast             0.21 Sonoma Coast used up 
2014    Petit Verdot    Sonoma                   2.38 2014 used up 
2015    Petit Verdot    Sonoma                   1.50 2015 used up 
2016    Petit Verdot    Sonoma                   0.19 Sonoma used up  
2016    Petit Verdot    Napa                     0.14 Petit Verdot used up 
2016    Sauv. Blanc     Napa                     0.14 Sauv. Blanc used up 
2016    Concentrate     Napa                     0.03 all used up 

If the percentages are random real numbers, you are unlikely to be able to produce a shorter list than this, though many other lists of $12$ are possible and can be generated by reordering the input data. The question of whether there are shorter lists from a particular set of data may be computationally complicated (my guess is it could be an NP problem)   
