Clase 01 Cubo

preview_player
Показать описание
* como crear cubo: query de sql
* deben instalar primero la bd northwin

use northwind
go

select * from orders
go
select * from [Order Details]
go
/*
que quiero medir??
las ventas
como lo quiero medir??
por cliente, vendedor, fecha y forma de envio
*/

create database nw_dw
go

use nw_dw
go

create table dimEmpleado(
employeeID int primary key,
nombre varchar(80),
city varchar(30),
country varchar(30) )
go

create table dimTransportista(
shipperID int primary key,
nomTran varchar(50) )
go

create table dimCliente(
customerid char(5) primary key,
nomCli varchar(80),
city varchar(30),
country varchar(30) )
go

create table dimFecha(
fechaID int primary key,
fecha date,
año smallint,
mes tinyint,
dia tinyint,
diaSem tinyint,
nomMes varchar(20),
nomDiaSem varchar(15) )
go

create table factVentas(
orderID int primary key,
customerID char(5) references dimCliente,
employeeID int references dimEmpleado,
shipperID int references dimTransportista,
fechaID int references dimFecha,
monto money )
go

/*
ETL
*/
use Northwind
go

select ShipperID,CompanyName from Shippers
go

select customerid,companyname,city,country from customers
go

select EmployeeID,LastName+','+FirstName,City,Country from Employees
go
--creando una funcion
begin
declare @meses table(nro tinyint, nombre varchar(20))
insert @meses values(1,'Enero'),(2,'Febrero'),(3,'Marzo'),(4,'Abril')
,(5,'Mayo'),(6,'Junio'),(7,'Julio'),(8,'Agosto'),(9,'Setiembre')
,(10,'Octubre'),(11,'Noviembre'),(12,'Diciembre')
end
go

begin
declare @semana table(nro tinyint, nombre varchar(20))
insert @semana values(1,'Domingo'),(2,'Lunes'),(3,'Martes'),
(4,'Miércoles'),(5,'Jueves'),(6,'Viernes'),(7,'Sábado')
end
go

select distinct year(OrderDate)*10000+month(OrderDate)*100+day(OrderDate)
,OrderDate,year(OrderDate),month(OrderDate),day(OrderDate),
from orders
go

year(o.OrderDate)*10000+month(o.OrderDate)*100+day(o.OrderDate),
sum(od.UnitPrice*od.Quantity*(1-od.Discount) )
from orders as o
join [Order Details] as od on o.OrderID=od.OrderID
year(o.OrderDate)*10000+month(o.OrderDate)*100+day(o.OrderDate)
go
Рекомендации по теме