6
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

Popularea Tabelelor Din Depozit

Embed Size (px)

DESCRIPTION

xxsd

Citation preview

POPULAREA TABELELOR DIN DEPOZIT

POPULAREA TABELELOR DIN DEPOZIT1.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 ASINSERT 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] asinsert into DimAgentiselect * from view_etl_dimAgenti1.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] asinsert into DimProduseselect * from view_etl_dimproduse1.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] asinsert 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] asINSERT INTO FapteVanzareSELECT * 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]ASBEGIN 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