September 2011 - Posts

Native Support for Amazon Redshift Databases Coming to DevExpress Dashboards

Analyzing large amounts of data is rather difficult. We have added a number of features to make this much easier with our dashboard component. Coming in the next minor release we will add support for Amazon Redshift. The beauty of this addition is that there really isn’t much to do to hook up a dashboard to Redshift:

Data Provider Wizard

It is simply a new data provider that will be available soon!

Amazon Redshift Provider Parameters

Why The Fuss?

Great question! Amazon Redshift “is a fast, fully managed, petabyte-scale data warehouse solution that makes it simple and cost-effective to efficiently analyze all your data using your existing business intelligence tools” (emphasis added). In essence the DevExpress Dashboard Component can interact with a system that can potentially store petabytes of data and allow the type of analysis that can reveal real insight. Clearly there are memory limitations on the client, so how can this be accomplished? The key is in the amount of data that the dashboard needs to render the actual elements: it is generally much less than the whole data set on the server. In an earlier release we added Server Mode support to the dashboard. Let me show you how this works in the context of Redshift.

Consider the following dashboard (bound to a Redshift Database):

Amazon Redshift Bound Dashboard

In a traditionally bound dashboard, any filtering would trigger aggregations to happen on the web server (or client machine) directly in memory in order to return updated visualizations. In contrast, the server mode setting essentially “dumbs-down” the web server (or client) by offloading the filtering and aggregation to the provider (or database server). Any click to filter in the case of this revenue dashboard generated a query that was returned to the server:

Amazon Redshift Query Log

This is also the case for the Amazon Redshift provider! In fact, the query trace above was generated by exploring several different combinations of filters. Each time a filter was set, a new query was generated and sent back to the provider.

A Word on Speed

As you peruse the log of queries issued back to Redshift, notice that we are completely at the mercy of the database provider. In other words, we can only render the dashboard elements as fast as the data is returned (notice a couple of queries took ~3s to complete). Please use common sense and best practices for optimizing query speed in order to reduce refresh latency of dashboard elements.

We are very excited about this new addition!

As always, if there are any comments and/or questions, feel free to get a hold of me!

Seth Juarez
Twitter: @SethJuarez

.NET Reporting: Cascading Parameters, Sub-Bands, and More (Coming soon in v14.2)

Since we’re on a reporting binge this week I thought I would mention a couple of new features we are adding to the reporting core.

Cascading Parameters

Sometimes parameters depend on the values of other parameters. While this was technically possible before, it required a bit of coding. In v14.2 we are adding the ability to have cascading parameters.

Cascading Parameter Filter String Editor

Notice how the rightSideParameter uses the leftSideParameter value to filter the set of data that will be shown. The resulting parameter behaves as a sub-parameter (of sorts):


Cascading Parameter

Steve is now nowhere to be found in the cascaded parameter. This approach could also be used to create a master-detail type dependency within the parameters themselves!

Sub Bands

This feature solves a ton of issues when it comes to having conditional data within a given band. Consider the scenario where you have a collection of items but certain items have additional detail and/or elements that need to be rendered. A concrete example:

Student Report

When a student is older than 35 there is additional information that needs to be shown. This can include additional fields, a block of text, pretty much a new band that contains stuff (technical term). How would this be done currently? With a lot of work. With the introduction of sub-bands this task becomes super simple!

Sub Band Menu Item

This sub-band is part of the parent band but can be conditionally, well, anything. It can be colored a certain way, have a different font, or be hidden altogether. In our case we want to show additional information when the Student is over 35:

Sub Band Example

In this case we set the visibility of the sub band to false (by default) and add a formatting style rule to make the appropriate checks:

Sub Band Style Rule

and the rule:

Formatting Rule

The result is exactly what we were looking to do:

Resulting Report with Sub Bands

With this feature you could even create alternate versions of how the data should be visualized per row and use conditional styling to enable the sub band. Technically speaking you can have as many bands as you like!

Horizontal Anchoring

Take a look at this gem:

Horizontal Anchoring

That’s right – we have finally added horizontal anchoring to our report controls!

Anchoring Properties

In the case above, I set the the top table to anchor to both the left and the right (while the bottom table’s horizontal anchoring is set to None).

Table Improvements

I’m going to be honest here, working with tables in our reporting suite is not all that fun. Let me correct that, was not that fun. We are introducting a number of table improvements which should help a ton!


  1. The ‘Insert Column’ command now inserts a new column (having its width equal to that of the current cell) and shifts the table relative to the current cell in the corresponding direction (to the left, or to the right from the current cell). This new behavior is similar to that of the ‘Insert Row’ command.
  2. The ‘Insert Row Above’ command now inserts a new row about the current cell and changes the layout of the top part of the table. If there is sufficient empty space between the table and the band’s top edges, the table’s bottom part is left intact.
  3. Cell insertion has not been affected, except that the newly added cells now inherit the appearance properties of a source cell. The following properties were affected: BackColor, BorderColor, BorderDashStyle, Borders, BorderWidth, Font, ForeColor, Padding, and TextAlignment.
  4. The ‘Delete Column’ command now deletes a column and correspondingly changes the table width (by shifting the existing columns to the right from the one that is being deleted). Selecting a column and removing it by pressing the DELETE key has the same effect on the table layout (as opposed to the previous implementation when this resulted in cell removal and then resizing of cells located to the right from the current cell).

The following new features have also been implemented.

  • Pressing and holding the SHIFT key while resizing a column, changes the table width in the corresponding direction (the columns to the right from the current column are shifted to the left).

Shift Resize

  • Pressing and holding the CTRL key while resizing a column, changes the width of cells in the corresponding side of this column proportionally (to maintain their width relative to the overall table width), leaving the table dimensions intact.

Control Resize

Final Thoughts

Lest I forget! We have also added support to design-time report zooming when using the mouse wheel in conjunction with the control button. While a simple feature, I think it goes along with standard conventions and will help ease of use at design time.

Overall I think v14.2 is a really strong release for our analytics’ components. I hope you do too!

As always, if there are any comments and/or questions, feel free to get a hold of me!

Seth Juarez
Twitter: @SethJuarez

DevExpress Report Designer for the Web (Coming soon in v14.2)

Version 14.1 saw the release of our new end user report designer built from the ground up using html5 and JavaScript. As mentioned previously, this was a CTP (or beta) release: we wanted to see how you felt about it and how the overall technology behaved. This time around we finished polishing up the designer and will be releasing a completed end user tool in v14.2 (with a new shiny “light” theme to boot).

HTML5 End User Designer

The new Report Designer for ASP.NET is targeted at WebForms and MVC applications. For those on the cusp of innovation, the designer has also been successfully tested with ASP.NET vNext (we are indeed forward thinking).


  • a responsive user interface for in-browser reporting on the client, provided by a brand new JavaScript/HTML5 engine
  • rich user interface includes an integrated Property Grid (equipped with a Quick Access panel to access the most common options), Data Explorer and Parameters panels
  • a brand new integrated Print Preview created from scratch to use an HTML5 engine

HTML5 Report Preview

  • Remember the limitations? We’ve worked hard to make sure all report controls are available (including the Pivot Grid, Chart and Sparklines)

Chart Design

  • support for snap lines and a snap grid (for easy location and alignment of report elements);
  • support for localization and switchable visual themes;
  • guaranteed cross-browser compatibility, and more.

Report Server Integration

As mentioned in a previous post, we were so concerned about functionality and usability that we included the new designer directly into our Report Server product. Doing so allowed the engineering team to have an internal client, of sorts, to critically take a look at implementation details as well as an objective eye towards user perspective.

The Future

We were also extremely forward thinking! This is a pure html5/js implementation which, as mentioned earlier, will work in ASP.NET vNext. When considering the proliferation of devices, imagine a scenario where ad-hoc reporting can even be taken to the device itself!

Overall we are pretty excited at the type of Business Intelligence applications possible with the suite of components we are providing (and aim to improve in the future).

As always, if there are any comments and/or questions, feel free to get a hold of me!

Seth Juarez
Twitter: @SethJuarez

.NET Reporting: Data Access Enhancements (Coming soon in v14.2)

This is huge. I usually don’t start blog posts this way but something about our reporting suite nagged at me: I don’t like binding reports directly to database. In fact, I’ve always advocated a multi-tiered approach for accessing data – I’ve long said binding to an IEnumerable<T> was the way to go. While our reporting suite can certainly handle this scenario, it tended to be a bit kludgy. In fact, using the BindingSource in an ASP.NET application with XtraReports required taking a dependency on System.Windows.Forms (eww).

In our upcoming 14.2 release we swung for the fence when cleaning up this area and have hit a home run.

Object Binding Source

Since a picture is worth a thousand words, I thought I would take you through the process of creating an object bound report.

Bind to Object

After choosing an assembly you can choose the appropriate data type (still the same as before – kind of).

Select Object

Usually one would pick the Student class in this case given that it is that type to which we wish to bind. But since we’re swinging for the fence, I will choose the StudentService class.

Select Method

Yes, soak that previous screenshot in – we are binding to methods for this report. WAT?! How does it know what to bind to?? What will it pass in to the method??

The answer to the first question is not too hard: we look at the return type. The second question is not as easy.

Manage Method Parameters

Just kidding, it is easy. You can either specify a value, use an expression, or tell the report to use parameters (the kind already available in XtraReports).

Object Bound Report

All that can be said is this:


Now reports can form part of your application in a natural way – not as an afterthought. All of the ingenuity you use to create service classes and overall application logic can now be easily leveraged across all of your reports.

Final Thoughts

I am really excited about the way we are both enlarging and yet simplifying the way you access, present, and analyze data.

As always, if there are any comments and/or questions, feel free to get a hold of me!

Seth Juarez
Twitter: @SethJuarez

WinForms and WPF Map Controls: Coordinate Systems, SQL Server Spatial Data and More (Coming soon in v14.2)

I wanted to talk a bit more about maps! I’ve already talked a bit about the mini maps. In this post I wanted to show you some more map goodness coming in our 14.2 release.

Cartesian Map for WinForms

Ever wanted to visualize something other than, well, a map of the earth? In this release you can literally create a map of anything and use it as a visualization. How amazing is that?! With the addition of Cartesian Maps comes the ability to add any vector data with its own units. Currently the map control supports Centimeters, Feet, Furlongs, Inches, Kilometers, Meters, Miles, Millimeters, Nautical miles, and Yards with the ability to even add your own custom measures.

Cartesian Map

In this example we’ve visualized an entire hotel floor. Currently we’ve implemented the Cartesian Coordinate System for WinForms.

SQL Geometry Support

Some store their map data using SQL Geometry. In this release we have added support to this type of data source for WinForms:

SqlGeometryDataAdapter adapter = new SqlGeometryDataAdapter() {
    ConnectionString = "YOUR_CONNECTION_STRING",
    SqlText = "YOUR_SQL_TEXT",
    SpatialDataMember = "YOUR_DATA_MEMBER"
vectorLayer.Data = adapter;

A word about WPF support for both Cartesian Coordinates and SQL Geometry: we are still working on having full support. Currently in WPF we have full support for Geographic data (whether from SQL Geography Data or some other source) and are working towards having full Cartesian support sometime in the future. We do have the CartesianCoordinateSystem which can be used in WPF to load Geometry data and convert it to Geography data.

New Map Projections

Sometimes a flat map just doesn't cut it:

Map Projections

Starting in 14.2 you can use the following projections in both WinForms and WPF: Equidistant, Lambert Cylindrical Equal Area, Braun Stereographic, Kavrayskiy, and Sinusoidal.

Why is this useful you ask? Sometimes a map answers the pertinent data questions better when projected into a new spatial representation. Insights you would not have gleaned from a tradition flat map (which is also a projection, mind you) become more apparent when projected into new spaces.

WPF Map Analytics

Previously we added a number of analytics features to our map control for WinForms. In this release we are adding the same features to our WPF Map Control as well:

WPF Map Analytics

Map Printing

Our powerful printing system has been expanded to allow for directly exporting maps to a report:

WPF Map Printing

This enables your users to find the exact portion of the map they wish to see and memorialize it forever in the form of a hard paper copy.

Final Thoughts

Overall these are fantastic addition to our growing staple of analysis tools. I am proud of the work we are doing to help your customers glean the pertinent information from their data, thus allowing them to make the best decisions available.

As always, if there are any comments and/or questions, feel free to get a hold of me!

Seth Juarez
Twitter: @SethJuarez

More Posts