Sale Report

Summarize amount of sales and number of sales by three dimensions: customers, categories and products

As you may know about the Pivot term through Microsoft Excel or other SpreadSheet. Basically pivot table help to summarize data in multi dimensions.

In above example, data is pulled from CSV file and piped through Pivot process. We defined customers, categories and products in row of pivot table. By this settings we can see data in a tree like above, going from customers to product categories and to products. The sale amount are showing on the right hand side.

PivotTable is a powerful tools for data analysis, more information of Pivot package of KoolReport you may find here.

<?php
require_once "CustomersCategoriesProducts.php";
$CustomersCategoriesProducts = new CustomersCategoriesProducts;
$CustomersCategoriesProducts->run()->render();
<?php
require_once '../../../../koolreport/autoload.php';
use \koolreport\processes\Filter;
use \koolreport\processes\ColumnMeta;
use \koolreport\pivot\processes\Pivot;

class CustomersCategoriesProducts extends koolreport\KoolReport
{
    function settings()
    {
        return array(
            "dataSources" => array(
                "dollarsales"=>array(
                    'filePath' => '../../../databases/customer_product_dollarsales2.csv',
                    'fieldSeparator' => ';',
                    'class' => "\koolreport\datasources\CSVDataSource"      
                ), 
            )
        );
    }
    function setup()
    {
        $node = $this->src('dollarsales');
        $node->pipe(new Filter(array(
            array('customerName', '<', 'Am'),
            array('orderYear', '>', 2003)
        )))
        ->pipe(new ColumnMeta(array(
            "dollar_sales"=>array(
                'type' => 'number',
                "prefix" => "$",
            ),
        )))
        ->pipe(new ColumnMeta(array(
            'dollar_sales'=>array(
                'type' => 'number',
                'prefix' => '$',
                'decimals'=>2,
            ),
        )))
        ->pipe(new Pivot(array(
            'dimensions'=>array(
                'row'=>'customerName, productLine, productName'
            ),
            'aggregates'=>array(
                'sum'=>'dollar_sales',
                'count'=>'dollar_sales'
            )
        )))
        ->pipe($this->dataStore('sales'));  
    }
}
<?php
use \koolreport\pivot\widgets\PivotTable;
?>
<div class='report-content'>
  <div class="text-center">
    <h1>Sale Report</h1>
    <p class="lead">
      Summarize amount of sales and number of sales by three dimensions: customers, categories and products
    </p>
  </div>
  <div>
    <?php
      $dataStore = $this->dataStore('sales');
      PivotTable::create(array(
        'dataStore'=>$dataStore,
        'rowDimension'=>'row',
        'measures'=>array(
          'dollar_sales - sum', 
          'dollar_sales - count',
        ),
        'rowSort' => array(
          'dollar_sales - sum' => 'desc',
        ),
        'rowCollapseLevels' => array(1),
        'totalName' => 'All',
        'width' => '100%',
        'nameMap' => array(
          'dollar_sales - sum' => 'Sales (in USD)',
          'dollar_sales - count' => 'Number of Sales',
        ),
      ));
    ?>
  </div>
  
</div>
customerNameproductNameproductLineorderDateorderDayorderMonthorderYearorderQuarterdollar_sales
Vitachrome Inc. 1937 Lincoln Berline Vintage Cars 2003-01-10 00:00:00 10 1 2003 1 3726.45
Vitachrome Inc. 1936 Mercedes-Benz 500K Special Roadster Vintage Cars 2003-01-10 00:00:00 10 1 2003 1 1768.3300000000002
Baane Mini Imports 1952 Alpine Renault 1300 Classic Cars 2003-01-29 00:00:00 29 1 2003 1 5571.8
Baane Mini Imports 1962 LanciaA Delta 16V Classic Cars 2003-01-29 00:00:00 29 1 2003 1 5026.14
Baane Mini Imports 1958 Setra Bus Trucks and Buses 2003-01-29 00:00:00 29 1 2003 1 3284.28
Baane Mini Imports 1940 Ford Pickup Truck Trucks and Buses 2003-01-29 00:00:00 29 1 2003 1 3307.5
Baane Mini Imports 1926 Ford Fire Engine Trucks and Buses 2003-01-29 00:00:00 29 1 2003 1 1283.48
Baane Mini Imports 1913 Ford Model T Speedster Vintage Cars 2003-01-29 00:00:00 29 1 2003 1 2489.13
Baane Mini Imports 1934 Ford V8 Coupe Vintage Cars 2003-01-29 00:00:00 29 1 2003 1 2164.4
Baane Mini Imports 18th Century Vintage Horse Carriage Vintage Cars 2003-01-29 00:00:00 29 1 2003 1 2173

What People Are Saying

"KoolReport helps me very much in creating data report for my corporate! Keep up your good work!"
-- Alain Melsens

"The first use of your product. I was impressed by its easiness and powerfulness. This product is a great and amazing."
-- Dr. Lew Choy Onn

"Fantastic framework for reporting!"
-- Greg Schneider

Download KoolReport