
Reaching New Heights: How Exasol’s Skyline Feature Elevates Decision Making

Making the right decision can be challenging—whether choosing between a lower-cost or higher-quality product in daily life or tackling complex business challenges like cloud resource optimization, risk assessment, or portfolio management. In these cases, manually weighing all possible options is impractical due to the sheer volume of alternatives and competing priorities.
The Limits of Traditional Analytics
Traditional analytical databases struggle with this complexity because they are designed to find exact matches based on rigid filter criteria. But in real-world business scenarios, perfect solutions rarely exist. Instead, decision-makers must evaluate trade-offs to identify the best possible options. Without the right tools, businesses often resort to inefficient workarounds, such as exporting massive datasets for external analysis or developing complex, domain-specific scoring models.
Meet Exasol’s Skyline Feature
Exasol’s Skyline feature changes the game. It enables analysts to define both must-have (hard) criteria and nice-to-have (soft) criteria, allowing them to instantly surface the best alternatives without complex workarounds. Whether optimizing cloud costs, mitigating financial risks, or selecting the most promising investment opportunities, Skyline empowers businesses to make smarter, faster, and more informed decisions—directly within the database.
Let’s take a closer look at the technology behind Exasol’s Skyline feature. Exasol extends standard SQL—where traditional SELECT
and WHERE
clauses filter results based on hard constraints—by introducing a PREFERRING
clause. This clause enables analysts to define soft constraints, allowing the database to prioritize results that best match multiple competing criteria.
The execution process happens in two stages: First, the database applies standard SQL filtering to narrow down the dataset. Then, the Skyline algorithm refines the remaining results based on the specified soft constraints to find so-called Pareto-optimal solutions. This process is computationally complex, as a naïve approach would require pairwise comparisons between all possible alternatives, resulting in O(n²) complexity—which quickly becomes impractical at scale. To solve this efficiently, Exasol leverages built-in parallelization and advanced distributed algorithms developed in collaboration with leading researchers in the field. This ensures that Skyline queries run efficiently, even on large datasets, making multi-criteria optimization feasible directly within the database—without expensive data extraction or custom post-processing.
Let’s dive into a practical example and imagine we want to analyse the dataset investment_options:
id | inv_type | expected _return | volatility | dividend | esg | cost |
---|---|---|---|---|---|---|
1 | Currency | 2.37 | Low Risk | 7.27 | 78 | 1.23 |
2 | Fund | 19.46 | Low Risk | 1.92 | 55 | 0.84 |
3 | Stock | 16.98 | Low Risk | 1.16 | 38 | 0.80 |
4 | Currency | 5.82 | High Risk | 3.92 | 86 | 0.37 |
5 | Currency | 5.27 | High Risk | 7.89 | 38 | 0.15 |
6 | Fund | 5.30 | High Risk | 1.94 | 39 | 1.35 |
7 | Stock | 7.48 | Medium Risk | 5.38 | 90 | 1.35 |
8 | Stock | 11.45 | Low Risk | 6.09 | 71 | 0.95 |
9 | Currency | 9.78 | High Risk | 1.90 | 52 | 0.52 |
10 | Crypto | 7.24 | Medium Risk | 5.83 | 59 | 0.53 |
We want to retrieve the datapoints with the highest expected return and with lowest transaction cost. We also want to exclude Crypto from our evaluation:
SELECT id, inv_type, expected_return, cost
FROM investment_options
WHERE inv_type NOT IN ('Crypto')
PREFERRING HIGH expected_return PLUS LOW cost;
Let’s have a closer look at the result in green:
id | inv_type | expected _return | cost |
---|---|---|---|
1 | Currency | 2.37 | 1.23 |
2 | Fund | 19.46 | 0.84 |
3 | Stock | 16.98 | 0.80 |
4 | Currency | 5.82 | 0.37 |
5 | Currency | 5.27 | 0.15 |
6 | Fund | 5.30 | 1.35 |
7 | Stock | 7.48 | 1.35 |
8 | Stock | 11.45 | 0.95 |
9 | Currency | 9.78 | 0.52 |
10 | Crypto | 7.24 | 0.53 |
We easily see that all the returned data points are better in at least one dimension and not worse in the other dimension compared to the rejected options. We also clearly see trade-offs between higher return and lower cost.
Now let’s create a different query. We are preferring low risk investments with a high dividend. For the dividend percentage we don’t care about slight differences, 2% points up or down shouldn’t matter. We want to include the esg score as a tiebreaker:
SELECT id, inv_type, volatility, dividend, esg
FROM investment_options
WHERE inv_type NOT IN ('Crypto')
PREFERRING (HIGH (volatility IN ('Low Risk'))) PLUS HIGH (CEIL(dividend/2)) PRIOR TO HIGH esg;
id | inv_type | volatility | dividend | esg |
---|---|---|---|---|
1 | Currency | Low Risk | 7.27 | 78 |
2 | Fund | Low Risk | 1.92 | 55 |
3 | Stock | Low Risk | 1.16 | 38 |
4 | Currency | High Risk | 3.92 | 86 |
5 | Currency | High Risk | 7.89 | 38 |
6 | Fund | High Risk | 1.94 | 39 |
7 | Stock | Medium Risk | 5.38 | 90 |
8 | Stock | Low Risk | 6.09 | 71 |
9 | Currency | High Risk | 1.90 | 52 |
10 | Crypto | Medium Risk | 5.83 | 59 |
The constraint for volatility and dividend would return datapoints 1 and 8, the esg as tiebreaker leaves 1 as best solution. By using PRIOR TO instead of PLUS we state that the last constraint is less important than the other ones.
There are plenty of more opportunities to define any distance function per attribute to minimize or maximize. Skyline even handles the most complex optimization problems with ease, helping your organization to make smarter decisions faster. Check out our documentation for more information and get started with our community edition to test for yourself.