Bill Zhu


NYSE Stock Trading Volume Visualization using Power BI

This is an interactive visualization of today's (5/31/2016) stock trading volume of all NYSE stocks with 1-million+ shares being traded (full screenshot), using Power BI. Click on the expand button at the bottom of the chart to expand the treemap view to full screen. 

The information visualized here is interesting, e.g. I never realized that Alibaba (BABA) is the 2nd heaviest traded stock on NYSE today. But the real interesting thing here is how easy it is for anyone to visualize data in interesting ways, using Power BI. It took me only a few minutes to build a chart like this and share it out. I will use this as a starting point, and gradually build out a fully featured stock market visualization app using Power BI.

Dynamics AX 2012 for Retail - Data Group and Channel Database

This article is applicable to Dynamics AX 2012 R3 edition, including any subsequent Cumulative Updates.

The purpose of this article is to explain the concepts behind Data Group and Channel Database, so that you can decide on how best you can create and configure your Retail solution.

Channel Database

It represents a physical database in a channel/store, or one that powers a Retail Server. If the database is for a store, then simply select one single Retail channel for it. If the database is for a Retail Server, then select one or more Retail Channels depending on how many stores/channels the Retail Server serves.

Data Group

It represents a group of Channel Databases. A channel database can be part of only one data group. The key to understand here is that data generation is only done at the data group level. All channel databases in a data group are getting the same set of data from Dynamics AX.

Data Group is designed to allow Dynamics AX for Retail solution to scale to thousands or tens of thousands of Retail channels/stores in a Retail enterprise. That is, the solution is designed to efficiently generate incremental delta data packages for enterprise level Retail customers.

The concept behind Data Group is that when Retail channels/stores in similar region or district typically have the same assortments, same pricing rules, same tax authorities and etc., Dynamics AX will only need to generate a common set of data that can be shared by all the Retail channels/stores within a data group. For example, if your enterprise has 5,000 Retail channels/stores, and you can define 20 data groups that map to 20 major sales regions, then AX will only need to run Commerce Data Exchange (CDX) jobs for 20 data groups, vs. 5,000 channels/stores individually.

How to Configure Data Groups

The rule of thumb is to consider three factors:

  1. the total number of Retail channels/stores in your enterprise
  2. the similarity of assorted items in regions of stores
  3. if customer data is to be made available at the channel/store level 

Scenario 1: The customer is a toy Retailer, with 50 stores in Washington and Oregon. The stores carry 4,000 SKUs. The customer is making all products available to all stores. The stores do not keep customer information.

Suggestion: This is the simplest case. One data group is all that's needed, containing all the stores. 

Scenario 2: The customer is a golf and sporting goods stores, with 500 stores in the U.S. There is no assortment distinction among all the stores. They all carry roughly the same products. The stores are geographically located in 5 states. Their customers' data needs to be made available in each store.

Suggestion: In this case, because all stores carry the same assortment (i.e. all products), having one data group containing all channel databases would be sufficient. However, because the 500 stores are located in 5 different states, the customer can leverage the store customer address book functionality to organize their customer data. The assumption is that customers will shop the majority of the time in the nearby stores. In this case, having 5 different data groups will allow the CDX data package to be smaller, with each data group having its own set of customer data.

Scenario 3: A national apparel retailer with 8 different brands and 1,800 stores in total. Each store typically carries 5,000 SKUs. Within each brands, all the stores carry similar assortments.

Suggestion: Because there are 8 distinct brands, and all the stores are similar within a brand, 8 data groups can be created. All the stores within a brand should be assigned to the same data group.

Scenario 4: A national Retail with 7 major regions, 58 districts and ~800 stores. Within each region, stores carry similar assortments. Customers typically shop in stores close to their residence.

Suggestion: In this scenario, most likely 7 data groups would be sufficient. Please note that data group is only about how a common set of data can be efficiently computed on the Dynamics AX side. Unless there is significant data differences from district to district, there is no need to define data groups that match each district.

In conclusion, the effect of grouping channel databases in a logical unit, i.e. data group, and then computing data only at the data group level will greatly help achieve the scalability desired. Overall, the number of data groups should be several magnitude smaller than the number of channels/stores. Careful consideration should be made to decide on the structure of your data groups in your project planning stage. In more complex situations, you should always consult with your AX partners or the Microsoft solution architecture teams on data group design to ensure the solution can scale and perform to your business needs.