This document discusses multidimensional data analysis using JRuby and OLAP. It covers relational and multidimensional data models, SQL and MDX query languages, commercial OLAP vendors, and defining OLAP schemas and querying data in Ruby. Example queries are provided to illustrate getting analytical data such as total sales by product groups for a time period and location.
• Developed and Analysed Data warehouse Using SSIS ETL tool, SSDT, SQL server
• Provided Analysed Quarterly Report Using SSRS of Total sales, Total Revenue, Predicted Future sales, topmost selling products, top discounted product.
• Used Performance tuning to fetch rows faster from database and performed data visualization using R-studio and Neo-4j.
Building a semantic/metrics layer using CalciteJulian Hyde
A semantic layer, also known as a metrics layer, lies between business users and the database, and lets those users compose queries in the concepts that they understand. It also governs access to the data, manages data transformations, and can tune the database by defining materializations.
Like many new ideas, the semantic layer is a distillation and evolution of many old ideas, such as query languages, multidimensional OLAP, and query federation.
In this talk, we describe the features we are adding to Calcite to define business views, query measures, and optimize performance.
A talk given at Community over Code, the annual conference of the Apache Software Foundation, in Halifax, NS, on 9th October, 2023.
Math not your thing? Stuck in a functionality rut? Join us to learn a few key tips and tricks for using Salesforce MVPs to write kick-butt formulas. Walk away with actual formulas that you can immediately put to use. NOTE: This session is Community-Led: created BY the Salesforce community FOR the Salesforce community
Metrics (also called Key Performance Indicators) are what you use to measure the the performance of every functional area of your organization; the things you do every day to create leads, make sales, provide your products and services, keep your customers happy, grow cash and make profits. We call this stuff “Business As Usual”. Once you determine the Metrics for every functional area, you should be able to distill a smaller subset of Metrics that you deem to be “critical success factors” - the most important drivers of your current operating model.
Bing Ads' Eric Couch dives in to beginning and advanced Excel tips and tricks for PPC marketers- including data analysis tips, Excel formulas, and incredibly handy plugins.
Lean Stack - A Story Of Continuous ImprovementLukas Fittl
Talk at Tools4AgileTeams '13 explaining how we iterated on our Lean Stack framework over the last 3 years.
From being risk-focused to focusing on the constraints in a business' customer factory.
• Developed and Analysed Data warehouse Using SSIS ETL tool, SSDT, SQL server
• Provided Analysed Quarterly Report Using SSRS of Total sales, Total Revenue, Predicted Future sales, topmost selling products, top discounted product.
• Used Performance tuning to fetch rows faster from database and performed data visualization using R-studio and Neo-4j.
Building a semantic/metrics layer using CalciteJulian Hyde
A semantic layer, also known as a metrics layer, lies between business users and the database, and lets those users compose queries in the concepts that they understand. It also governs access to the data, manages data transformations, and can tune the database by defining materializations.
Like many new ideas, the semantic layer is a distillation and evolution of many old ideas, such as query languages, multidimensional OLAP, and query federation.
In this talk, we describe the features we are adding to Calcite to define business views, query measures, and optimize performance.
A talk given at Community over Code, the annual conference of the Apache Software Foundation, in Halifax, NS, on 9th October, 2023.
Math not your thing? Stuck in a functionality rut? Join us to learn a few key tips and tricks for using Salesforce MVPs to write kick-butt formulas. Walk away with actual formulas that you can immediately put to use. NOTE: This session is Community-Led: created BY the Salesforce community FOR the Salesforce community
Metrics (also called Key Performance Indicators) are what you use to measure the the performance of every functional area of your organization; the things you do every day to create leads, make sales, provide your products and services, keep your customers happy, grow cash and make profits. We call this stuff “Business As Usual”. Once you determine the Metrics for every functional area, you should be able to distill a smaller subset of Metrics that you deem to be “critical success factors” - the most important drivers of your current operating model.
Bing Ads' Eric Couch dives in to beginning and advanced Excel tips and tricks for PPC marketers- including data analysis tips, Excel formulas, and incredibly handy plugins.
Lean Stack - A Story Of Continuous ImprovementLukas Fittl
Talk at Tools4AgileTeams '13 explaining how we iterated on our Lean Stack framework over the last 3 years.
From being risk-focused to focusing on the constraints in a business' customer factory.
Similar to RailsWayCon: Multidimensional Data Analysis with JRuby (20)
Presented at DevClub.lv meeting http://devclub.lv/announcing-6th-devclub-lv
(video recording of talk is here http://devclub.lv/test-driven-development-tdd-why-and-how-raimonds-simanovskis) and at Agile Tour Vilnius 2013 conference (http://www.agileturas.lt/vilnius#raimonds_simanovskis).
4. SQL is good for detailed
data queries
Get all sales transactions in
USA, California
SELECT customers.fullname, products.product_name,
sales.sales_date, sales.unit_sales, sales.store_sales
FROM sales
LEFT JOIN products ON sales.product_id = products.id
LEFT JOIN customers ON sales.customer_id = customers.id
WHERE customers.country = 'USA' AND customers.state_province = 'CA'
5. SQL becomes complex
for analytical queries
Get total sales in USA, California
in Q1, 2011 by main product groups
SELECT product_class.product_family,
SUM(sales.unit_sales) unit_sales_sum,
SUM(sales.store_sales) store_sales_sum
FROM sales
LEFT JOIN product ON sales.product_id = product.product_id
LEFT JOIN product_class
ON product.product_class_id = product_class.product_class_id
LEFT JOIN time_by_day ON sales.time_id = time_by_day.time_id
LEFT JOIN customer ON sales.customer_id = customer.customer_id
WHERE time_by_day.the_year = 2011 AND time_by_day.quarter = 'Q1'
AND customer.country = 'USA' AND customer.state_province = 'CA'
GROUP BY product_class.product_family
12. MDX query language
Get total units sold and sales amount
in USA, California in Q1, 2011
by main product groups
SELECT {[Measures].[Unit Sales], [Measures].[Store Sales]} ON COLUMNS,
[Product].children ON ROWS
FROM [Sales]
WHERE ( [Time].[2011].[Q1], [Customers].[USA].[CA] )
15. OLAP schema
definition
schema = Mondrian::OLAP::Schema.define do
cube 'Sales' do
table 'sales'
dimension 'Gender', :foreign_key => 'customer_id' do
hierarchy :has_all => true, :primary_key => 'customer_id' do
table 'customer'
level 'Gender', :column => 'gender', :unique_members => true
end
end
dimension 'Time', :foreign_key => 'time_id' do
hierarchy :has_all => false, :primary_key => 'time_id' do
table 'time_by_day'
level 'Year', :column => 'the_year', :type => 'Numeric', :unique_members => true
level 'Quarter', :column => 'quarter', :unique_members => false
level 'Month',:column => 'month_of_year',:type => 'Numeric',:unique_members => false
end
end
measure 'Unit Sales', :column => 'unit_sales', :aggregator => 'sum'
measure 'Store Sales', :column => 'store_sales', :aggregator => 'sum'
end
end
16. Query Builder in
Ruby
Get total units sold and sales amount
in USA, California in Q1, 2011
by main product groups
olap.from('Sales').
columns('[Measures].[Unit Sales]',
'[Measures].[Store Sales]').
rows('[Product].children').
where('[Time].[2011].[Q1]', '[Customers].[USA].[CA]').
execute
17. Also more complex
queries
Get sales amount and profit %
of top 50 products sold in USA and Canada
during Q1, 2011
olap.from('Sales').
with_member('[Measures].[ProfitPct]').
as('(Measures.[Store Sales] - Measures.[Store Cost]) / Measures.[Store Sales]',
:format_string => 'Percent').
columns('[Measures].[Store Sales]', '[Measures].[ProfitPct]').
rows('[Product].children').crossjoin('[Customers].[Canada]', '[Customers].[USA]').
top_count(50, '[Measures].[Store Sales]')
where('[Time].[2011].[Q1]').
execute