4. 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_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 kļūst sarežģīts
analītiskiem pieprasījumiem
Kāds ir pārdošanas kopsavilkums
ASV, Kalifornijā,
2011. gada pirmajā kvartālā
pa galvenajām produktu grupām
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
6. Multidimensionālais
datu modelis
Multi-dimensionāli “kubi” (cubes)
Dimensijas, hierarhijas un līmeņi
(dimensions, hierarchies, levels)
Mērījumi (measures)
11. MDX pieprasījumu
valoda
Kāds ir pārdošanas kopsavilkums
2011. gada pirmajā kvartālā
ASV, Kalifornijā,
pa galvenajām produktu grupām
SELECT {[Measures].[Unit Sales], [Measures].[Store Sales]} ON COLUMNS,
[Product].children ON ROWS
FROM [Sales]
WHERE ([Time].[2011].[Q1], [Customers].[USA].[CA])
15. 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'
end
end
16. Multidimensionālie
pieprasījumi no Ruby
Kāds ir pārdošanas kopsavilkums
2011. gada pirmajā kvartālā
ASV, Kalifornijā,
pa galvenajām produktu grupām
olap.from('Sales').
columns('[Measures].[Unit Sales]', '[Measures].[Store Sales]').
rows('[Product].children').
where('[Time].[2011].[Q1]', '[Customers].[USA].[CA]')