Sunteți pe pagina 1din 5

POPULAREA TABELELOR DIN DEPOZIT

1.Crearea procedurilor stocate de incarcare


2.Executarea procedurilor stocate
Cheile asigura unicitatea datelor nu se pot incarca de 2 ori aceleasi date
in deposit
(in faza de experimente pt. stergerea totala adatelor din deposit puteti
folosi o procedura de tip Delete Query

1.1.Creare views pt extragerea, transformarea,


completarea datelor din Baza Sursa pt. popularea
tabelelor din depozitul Vanzari (tabelele de dimensiuni
si tabela de fapte)
Views se creaza in DepozitVanzari cu accesarea tabelelor necesare
direct din Baza Sursa
Template:
SELECT lista campuri si formule pt. transformarea datelor
FROM Tabele din Baza sursa JOINed daca e nevoie
WHERE Conditii de jonctiune mai speciale sau filtre
Atentie: in views este bine sa extragem datele exact in ordinea in care
sunt declarate in tabela destinatie , eventual null in campurile pentru
care nu avem deocamdata date si urmeaza sa le modificam ulterior cu
procedura de tip update. Asta pentru a simplifica procedura de tip insert
si a sigura maparea automata a coloanelor din view pe campurile din
tabela destinatie

1.2.Creare procedure stocate pentru inserarea datelor


din views in tabelele destinatie
(insert queries)
Procedurile stocate se creaza in Programability Stored procedures
Template:
CREATE PROCEDURE numeprocedura AS
INSERT INTO Tabela destinatie
SELECT * FROM View

1.3. Creare procedure stocate pentru pt completarea


anumitor date care n-au fost regasite in Baza Sursa si se
extrag din alte surse (tabele create special, foi Excel,
Internet, etc) (updates queries)
1.1.1.Creare view_etl_DimAgenti
SELECT
[#SIAD2014_646_VanzariSursa].dbo.Agenti.cod_agent,
[#SIAD2014_646_VanzariSursa].dbo.Agenti.nume_agent,
[#SIAD2014_646_VanzariSursa].dbo.StructuriOrg.echipa,
[#SIAD2014_646_VanzariSursa].dbo.StructuriOrg.pct_lucru,
[#SIAD2014_646_VanzariSursa].dbo.StructuriOrg.dept,
[#SIAD2014_646_VanzariSursa].dbo.StructuriOrg.compania
FROM

[#SIAD2014_646_VanzariSursa].dbo.Agenti INNER JOIN


[#SIAD2014_646_VanzariSursa].dbo.StructuriOrg ON

[#SIAD2014_646_VanzariSursa].dbo.Agenti.cod_agent =
[#SIAD2014_646_VanzariSursa].dbo.StructuriOrg.marca_pers
1.2.1.Creare procedura stocata
CREATE procedure [dbo].[etldimagenti] as
insert into DimAgenti
select * from view_etl_dimAgenti

1.1.2.Creare view_etl_DimClienti
SELECT
[#SIAD2014_646_VanzariSursa].dbo.Clienti.cod_client,
[#SIAD2014_646_VanzariSursa].dbo.Clienti.nume_client,
[#SIAD2014_646_VanzariSursa].dbo.Zone.localitate,
[#SIAD2014_646_VanzariSursa].dbo.Zone.zona,
[#SIAD2014_646_VanzariSursa].dbo.Clienti.clasa_client,
[#SIAD2014_646_VanzariSursa].dbo.Clienti.categ_client
FROM

[#SIAD2014_646_VanzariSursa].dbo.Clienti INNER JOIN

[#SIAD2014_646_VanzariSursa].dbo.Zone ON
LEFT([#SIAD2014_646_VanzariSursa].dbo.Clienti.adresa_client, 10) =
[#SIAD2014_646_VanzariSursa].dbo.Zone.localitate
1.2.2.Creare procedura stocata

CREATE procedure [dbo].[etldimclienti] as


insert into dimclienti
select cod_client, nume_client, localitate, zona, clasa_client, categ_client
from view_etl_dimclienti

1.1.3.Creare view_etl_DimProduse
SELECT
[#SIAD2014_646_VanzariSursa].dbo.Produse.cod_produs,
[#SIAD2014_646_VanzariSursa].dbo.Produse.denumire,
[#SIAD2014_646_VanzariSursa].dbo.Produse.UM,
[#SIAD2014_646_VanzariSursa].dbo.Producatori.nume_producator
AS producator,
[#SIAD2014_646_VanzariSursa].dbo.Producatori.adresa_producator
AS tara_producator,
[#SIAD2014_646_VanzariSursa].dbo.Producatori.clasa_producator,
[#SIAD2014_646_VanzariSursa].dbo.Producatori.categ_producator,
[#SIAD2014_646_VanzariSursa].dbo.FamiliiProduse.denumire AS familie_prod,
[#SIAD2014_646_VanzariSursa].dbo.CategoriiProduse.denumire AS
categ_prod, [#SIAD2014_646_VanzariSursa].dbo.ClaseProduse.denumire AS
clasa_prod,
[#SIAD2014_646_VanzariSursa].dbo.Produse.caracteristici
FROM

[#SIAD2014_646_VanzariSursa].dbo.Produse INNER JOIN


[#SIAD2014_646_VanzariSursa].dbo.Producatori ON

[#SIAD2014_646_VanzariSursa].dbo.Produse.cod_producator =
[#SIAD2014_646_VanzariSursa].dbo.Producatori.cod_producator INNER JOIN
[#SIAD2014_646_VanzariSursa].dbo.ClaseProduse ON
[#SIAD2014_646_VanzariSursa].dbo.Produse.clasa_prod =
[#SIAD2014_646_VanzariSursa].dbo.ClaseProduse.clasa INNER JOIN
[#SIAD2014_646_VanzariSursa].dbo.CategoriiProduse ON
[#SIAD2014_646_VanzariSursa].dbo.Produse.categ_prod =
[#SIAD2014_646_VanzariSursa].dbo.CategoriiProduse.categorie INNER JOIN
[#SIAD2014_646_VanzariSursa].dbo.FamiliiProduse ON
[#SIAD2014_646_VanzariSursa].dbo.CategoriiProduse.familie =
[#SIAD2014_646_VanzariSursa].dbo.FamiliiProduse.familie
1.2.3.Creare procedura stocata
CREATE procedure [dbo].[etldimproduse] as
insert into DimProduse

select * from view_etl_dimproduse

1.1.4.Creare view_etl_DimTimp
SELECT DISTINCT
data_doc_cl, YEAR(data_doc_cl) AS an, MONTH(data_doc_cl) AS luna,
CASE WHEN month(data_doc_cl) < 4 THEN 1 WHEN month(data_doc_cl)
< 7 THEN 2 WHEN month(data_doc_cl) < 10 THEN 3 ELSE 4 END AS
trim, CASE WHEN month(data_doc_cl) < 7 THEN 1 ELSE 2 END AS sem,
CASE WHEN month(data_doc_cl) < 3 THEN 'iarna' WHEN
month(data_doc_cl) < 7 THEN 'primavara' WHEN month(data_doc_cl)
< 9 THEN 'vara' WHEN month(data_doc_cl) < 12 THEN 'toamana'
ELSE 'iarna' END AS sezon
FROM

[#SIAD2014_646_VanzariSursa].dbo.FacturiClient

1.2.4.Creare procedura stocata


CREATE procedure [dbo].[etldimtimp] as
insert into DimTimp
select * from view_etl_dimTimp

1.1.5.a.Creare general view (genview)


SELECT
[#SIAD2014_646_VanzariSursa].dbo.FacturiClient.data_doc_cl,
[#SIAD2014_646_VanzariSursa].dbo.FacturiClient.cod_agent,
[#SIAD2014_646_VanzariSursa].dbo.FacturiClient.cod_client,
[#SIAD2014_646_VanzariSursa].dbo.LiniiFacturiClient.cod_produs,
[#SIAD2014_646_VanzariSursa].dbo.LiniiFacturiClient.cantitate_vanz,
[#SIAD2014_646_VanzariSursa].dbo.LiniiFacturiClient.cantitate_vanz
* [#SIAD2014_646_VanzariSursa].dbo.LiniiFacturiClient.pret_vanz AS valoare
FROM

[#SIAD2014_646_VanzariSursa].dbo.FacturiClient INNER JOIN


[#SIAD2014_646_VanzariSursa].dbo.LiniiFacturiClient ON

[#SIAD2014_646_VanzariSursa].dbo.FacturiClient.nr_doc_iesire =
[#SIAD2014_646_VanzariSursa].dbo.LiniiFacturiClient.nr_doc_iesire

1.1.5.b.Creare view_etl_FapteVanzare
SELECT
data_doc_cl, cod_agent, cod_client, cod_produs, SUM(cantitate_vanz) AS
cantitatetotala, SUM(valoare) AS valoaretotala, COUNT(*) AS nrfacturi
FROM

dbo.genview

GROUP BY data_doc_cl, cod_agent, cod_client, cod_produs


1.2.5.Creare procedura stocata
CREATE procedure [dbo].[etlfaptevanzare] as
INSERT INTO FapteVanzare
SELECT * FROM view_etl_faptevanzare
1.2.x.Creare procedura utilitara pt stergere datelor din tabelele din deposit daca trebuie
reluata popularea de la inceput
CREATE PROCEDURE [dbo].[StergereDateDepozit]
AS
BEGIN
delete from dbo.FapteVanzare
delete from dbo.DimAgenti
delete from dbo.DimClienti
delete from dbo.DimProduse
delete from dbo.DimTimp
END
Procedurile stocate se executa una cate una in ordinea intai procedurile ETL pentru
dimensiuni si ultima procedura ETL pt. tabela de fapte

S-ar putea să vă placă și