Multidimensionāla datu analīze ar JRuby

Preview:

Citation preview

Multidimensionāla (Oracle un MySQL)

datu analīze ar JRuby

Raimonds Simanovskis

Agile

TehnoloģijasRuby

github.com/rsim

JavaScript

Open-source

@rsim

Relacionālais datu modelis

SQL ir labs detalizētu datu atlasīšanai

Atlasīt visas pārdošanas transakcijas ASV, Kalifornijā

SELECT customer.fullname, product.product_name, sales.sales_date, sales.unit_sales, sales.store_salesFROM sales LEFT JOIN products ON sales.product_id = products.id LEFT JOIN customers ON sales.customer_id = customers.idWHERE customers.country = 'USA' AND customers.state_province = 'CA'

SQL kļūst sarežģītsanalītiskiem pieprasījumiem

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

Kāds ir pārdošanas kopsavilkumsASV, Kalifornijā,2011. gada pirmajā kvartālāpa galvenajām produktu grupām

Multidimensionālais datu modelis

Multi-dimensionāli “kubi” (cubes)

Dimensijas, hierarhijas un līmeņi(dimensions, hierarchies, levels)

Mērījumi (measures)

OLAP tehnoloģijasOn-Line Analytical Processing

MDX pieprasījumuvaloda

SELECT {[Measures].[Unit Sales], [Measures].[Store Sales]} ON COLUMNS, [Product].children ON ROWS FROM [Sales] WHERE ([Time].[2011].[Q1], [Customers].[USA].[CA])

Kāds ir pārdošanas kopsavilkums2011. gada pirmajā kvartālāASV, Kalifornijā,pa galvenajām produktu grupām

(R)OLAP shēmaDimensional model: cubes dimensions (hierarchies & levels) measures, calculated measures

Relational model: fact tables, dimension tables joined by foreign keys

Mapping

OLAP shēmas definēšana

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' endend

Multidimensionālie pieprasījumi no Ruby

olap.from('Sales').columns('[Measures].[Unit Sales]', '[Measures].[Store Sales]').rows('[Product].children').where('[Time].[2011].[Q1]', '[Customers].[USA].[CA]')

Kāds ir pārdošanas kopsavilkums2011. gada pirmajā kvartālāASV, Kalifornijā,pa galvenajām produktu grupām

Demo