Upload
alina-alinutza
View
220
Download
4
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