Część 1: OLAP. Raport z zajęć laboratoryjnych w ramach przedmiotu Hurtownie i eksploracja danych



Podobne dokumenty
Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Bazy Danych i Usługi Sieciowe

Bazy danych. dr inż. Arkadiusz Mirakowski

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Bazy danych i usługi sieciowe

Język SQL, zajęcia nr 1

Przykładowa baza danych BIBLIOTEKA

Wykład 8. SQL praca z tabelami 5

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Bazy danych 10. SQL Widoki

Wykład 05 Bazy danych

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Wykład 5. SQL praca z tabelami 2

Kowalski Marcin Wrocław, dn Jaśkiewicz Kamil Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami

Relacyjne bazy danych. Podstawy SQL

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

Aspekty aktywne baz danych

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

ACESS- zadania z wykorzystaniem poleceń SQL

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Struktura drzewa w MySQL. Michał Tyszczenko

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Bazy danych. Polecenia SQL

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Język SQL, zajęcia nr 2

Autor: Joanna Karwowska

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

LAB 3 (część 1 Projektu)

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Relacyjne bazy danych. Podstawy SQL

SIECI KOMPUTEROWE I BAZY DANYCH

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Wykład 6. SQL praca z tabelami 3

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Hurtownia Świętego Mikołaja projekt bazy danych

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Wprowadzenie do hurtowni danych

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Paweł Rajba

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Modelowanie wymiarów

Ref. 7 - Język SQL - polecenia DDL i DML

Kurs. Podstawy MySQL

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Język SQL podstawy zapytań

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

BAZA DANYCH SIECI HOTELI

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Bazy danych 7. SQL podstawy

Bazy danych 6. Klucze obce. P. F. Góra

Oracle PL/SQL. Paweł Rajba.

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Cele. Definiowanie wyzwalaczy

Grupowanie i funkcje agregujące

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

OLAP i hurtownie danych c.d.

Relacji między tabelami klucze obce. Schemat bazy danych, wczytanej z pliku create_tables.sql. Klucz obcy jako ograniczenie dla kolumny

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

DMX DMX DMX DMX: CREATE MINING STRUCTURE. Tadeusz Pankowski

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

P o d s t a w y j ę z y k a S Q L

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

Hurtownie i eksploracja danych

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

SIECI KOMPUTEROWE I BAZY DANYCH

Bazy danych. Dr inż. Paweł Kasprowski

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Systemy GIS Tworzenie zapytań w bazach danych

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

41. Zmienne lokalne muszą mieć nazwę, którą poprzedza (maksymalnie 128 znaków) oraz typ (każdy z wyjątkiem: text, ntext oraz image)

Projektowanie systemów baz danych

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

Widok Connections po utworzeniu połączenia. Obszar roboczy

Kostki OLAP i język MDX

SQL do zaawansowanych analiz danych część 1.

Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4

Komunikacja z bazą danych psql

Cel przedmiotu. Wymagania wstępne w zakresie wiedzy, umiejętności i innych kompetencji 1 Język angielski 2 Inżynieria oprogramowania

Spis tre±ci. Przedmowa... Cz ± I

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Przestrzenne bazy danych Podstawy języka SQL

BAZY DANYCH Cz III. Transakcje, Triggery

Bazy danych SQL Server 2005

Przydatne sztuczki - sql. Na przykładzie postgres a.

Proces ETL MS SQL Server Integration Services (SSIS)

Aplikacje bazodanowe. Laboratorium 1. Dawid Poªap Aplikacje bazodanowe - laboratorium 1 Luty, 22, / 37

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Transkrypt:

Łukasz Przywarty 171018 Wrocław, 05.12.2012 r. Grupa: CZW/N 10:00-13:00 Raport z zajęć laboratoryjnych w ramach przedmiotu Hurtownie i eksploracja danych Część 1: OLAP Prowadzący: dr inż. Henryk Maciejewski 1 / 11

1. ETL Integration Services 1.1 Cel W ramach pierwszego etapu należało załadować dane z plików CSV do bazy MS SQL wykonując integrację i czyszczenie danych. Celem tych operacji jest uzyskanie spójnej i uporządkowanej bazy danych. Zadania integracji zostały wykonane przy użyciu narzędzia Integration Services pakietu MS SQL Server 2008. 1.2 Transformacje Podstawowe zadanie skryptów ETL to integracja i usunięcie niespójności w danych źródłowych (nieprawidłowe wartości danych, niespójne sposoby kodowania wartości, niespójne relacje klucz obcy klucz główny itd.). Wstępne przygotowanie bazy danych: usuwanie istniejących baz danych (jeśli istnieją) i tworzenie nowych baz. Rysunek 1 Listing 1: drop tables (fragment) IF OBJECT_ID('notes', 'U') IS NOT NULL DROP TABLE notes IF OBJECT_ID('course_group', 'U') IS NOT NULL DROP TABLE course_group... Listing 2: create tables (fragment) CREATE TABLE course_group ( course varchar(8), course_group tinyint, course_type varchar(1) )... 2 / 11

Import danych do bazy: dane są pobierane z plików CSV i wstępnie przetwarzane np. poprzez moduł Derived Column. Etap kończy się wczytaniem danych do tabeli w bazie MS SQL Server. Proces (rys. 3) jest powtarzany dla wszystkich danych źródłowych (6 plików). Rysunek 2 Rysunek 3 Czyszczenie i ujednolicanie danych: najbardziej skomplikowany etap przetwarzania danych źródłowych (rys. 4). Rysunek 4 3 / 11

Całość rozpoczyna się od skryptu notes update, który: dodaje informacje o semestrze w kolumnie semester_type (letni gdy semestr parzysty, w przeciwnym razie parzysty), dodaje informacje o roku studiów na podstawie numeru semestru (1 oraz 2 semestr rok pierwszy, 2 i 3 rok drugi itd.) w kolumnie study_year, uaktualnia kolumnę exam w przypadku gdy komórka jest pusta zostaje w nią wpisane Z czyli zaliczenie. Listing 3: notes - update UPDATE [171018-dziekanat].[dbo].[notes] SET semester_type = 'zimowy' WHERE semester % 2!= 0 UPDATE [171018-dziekanat].[dbo].[notes] SET semester_type = 'letni' WHERE semester % 2 = 0 UPDATE [171018-dziekanat].[dbo].[notes] SET study_year = CASE WHEN semester = 1 THEN 1 WHEN semester = 2 THEN 1 WHEN semester = 3 THEN 2 WHEN semester = 4 THEN 2 WHEN semester = 5 THEN 3 WHEN semester = 6 THEN 3 WHEN semester = 7 THEN 4 WHEN semester = 8 THEN 4 WHEN semester = 9 THEN 5 ELSE 5 END UPDATE [171018-dziekanat].[dbo].[notes] SET exam = 'Z' WHERE exam = '' Skypt notes clear odpowiada za czyszczenie niewłaściwych danych w tabeli notes (nieprawidłowe oceny 0 lub 1 a także nieprawidłowy identyfikator nauczyciela 0). Listing 4: notes - clear DELETE FROM [171018-dziekanat].[dbo].[notes] WHERE note = 0 OR note = 1 DELETE FROM [171018-dziekanat].[dbo].[notes] WHERE teacher_id = 0 4 / 11

Skrypt course_group update usuwa niespójności między tabelami notes oraz course_group, a dokładnie niespójności pomiędzy kluczem obcym w tabeli faktów notes i kluczem głównym w tabeli wymiaru course_group. Listing 5: course_group - update INSERT INTO [171018-dziekanat].[dbo].[course_group] SELECT n.course, 1, 'W' FROM [171018-dziekanat].[dbo].[notes] AS n LEFT JOIN [171018-dziekanat].[dbo].[course_group] AS c ON n.course = c.course WHERE (c.course IS NULL) GROUP BY n.course Skrypt course_group clear czyści tabelę course_group usuwa duplikaty wierszy oraz likwiduje rekordy, w których identyfikator kursu jest równy 0. Listing 6: course_group - clear DELETE SUB FROM (SELECT ROW_NUMBER() OVER (PARTITION BY course, course_group ORDER BY course) cnt FROM [171018-dziekanat].[dbo].[course_group]) SUB WHERE SUB.Cnt > 1 DELETE FROM [171018-dziekanat].[dbo].[course_group] WHERE course_group = 0 Skrypt teacher_title clear usuwa wiersze, które nie zawierają danych tzn. pole title lub title_long jest puste (w tabeli teacher_title). Listing 7: teeacher_title - clear DELETE FROM [171018-dziekanat].[dbo].[teacher_title] WHERE title_long = '' OR title = '' Skrypt teachers clear porządkuje tabelę teachers usunięte zostają puste rekordy (title_id, faculty, institute równe 0). 5 / 11

Listing 8: teeachers - clear DELETE FROM [171018-dziekanat].[dbo].[teachers] WHERE faculty = 0 OR institute IS NULL OR institute = '' DELETE FROM [171018-dziekanat].[dbo].[teachers] WHERE title_id = 0 Skrypt teachers update usuwa niespójności między tabelami notes oraz teachers (podobnie jak w przypadku tabel course_group oraz notes). Listing 9: teachers - update INSERT INTO [171018-dziekanat].[dbo].[teachers] SELECT n.teacher_id, 'M', 1, 'I-00', 1 FROM [171018-dziekanat].[dbo].[notes] AS n LEFT JOIN [171018-dziekanat].[dbo].[teachers] AS t ON n.teacher_id = t.teacher_id WHERE (t.teacher_id IS NULL) GROUP BY n.teacher_id Tworzenie i formatowanie nowo powstałych tabel: w ramach etapu tworzone są tabele: workload - opisująca obciążenie prowadzącego w danym semestrze mierzone liczbą kursów), tabela notes_desc zawierająca kolumny, które nie są kluczami obcymi w tabeli faktów notes, oraz tabela notes_fact_table, która jest tabelą faktów. Rysunek 5 Skrypt course_group edit tworzy również kolumnę course_type w tabeli course_group oznaczającą typ zajęć (wykład W, laboratorium L itp.) Listing 10: course_group - edit UPDATE[171018-dziekanat].[dbo].[course_group] SET course_type = RIGHT(course, 1); 6 / 11

Aby poprawnie utworzyć tabelę workload należało: sprawdzić czy tabela przypadkiem już nie istnieje (jeśli tak usunąć starą wersję), wybrać z tabeli notes unikalne rekordy reprezentujące identyfikator nauczyciela oraz semestr i skopiować je do tabeli workload, policzyć liczbę ocen wystawioną przez jednego prowadzącego w konkretnym semestrze. Listing 11: workload - create IF OBJECT_ID('workload', 'U') IS NOT NULL DROP TABLE workload SELECT DISTINCT teacher_id, semester INTO [171018-dziekanat].[dbo].[workload] FROM [171018-dziekanat].[dbo].[notes] ORDER BY teacher_id ALTER TABLE [171018-dziekanat].[dbo].[workload] ADD course_count int UPDATE [171018-dziekanat].[dbo].[workload] SET course_count = (SELECT COUNT (DISTINCT notes.course) FROM notes WHERE notes.teacher_id = workload.teacher_id AND notes.semester = workload.semester) Tabele notes_desc i notes_fact_table tworzone są poprzez podzielenie tabeli tymczasowej notes_tmp. Listing 12: notes_desc - create IF OBJECT_ID('notes_desc', 'U') IS NOT NULL DROP TABLE notes_desc... SELECT IDENTITY (bigint,1,1) AS notes_desc_id, semester, year, course, teacher_id, note, exam, student_id, semester_type, study_year INTO [171018-dziekanat].[dbo].[notes_tmp] FROM [171018-dziekanat].[dbo].[notes] SELECT notes_desc_id, semester, semester_type, study_year, year, exam INTO [171018-dziekanat].[dbo].[notes_desc] FROM [171018-dziekanat].[dbo].[notes_tmp] 7 / 11

Listing 13: notes_fact_table - create SELECT note, notes_desc_id, course, teacher_id, student_id, semester INTO [171018-dziekanat].[dbo].[notes_fact_table] FROM [171018-dziekanat].[dbo].[notes_tmp] 2. Model Analysis Services 2.1 Cel Drugi etap polega na zbudowaniu wielowymiarowego modelu danych. W tym celu należało określić relację między tabelami (tabelą faktów oraz tabelami wymiarów) oraz zdefiniować zmienne, które będą przedmiotem analizy, oraz zmienne wymiarów. Zadanie zostało wykonane przy pomocy narzędzia Analysis Services pakietu MS SQL Server 2008. 2.2 Operacje Etap rozpoczęto od stworzenia nowego projektu, a także zdefiniowana Data Source oraz Data Source View, gdzie określa się relacje pomiędzy tabelami faktów i wymiarów (rys. 6). Rysunek 6: 8 / 11

Kolejnym krokiem było utworzenie nowej kostki wielowymiarowej, która korzysta z Data Source View. Należało również spełnić wymagania dotyczące analizowanych zmiennych oraz wymiarów, po których można prowadzić analizy. Rysunek 7 Kostka uwzględnia wymiary: courses hierarchia według identyfikatora kursu, grupy kursów oraz typu kursu (wykład, laboratorium, ćwiczenia itd.), student gender płeć studenta, teacher affiliation hierarchia według afiliacji prowadzącego ( identyfikator prowadzącego, instytut, tytuł naukowy), teacher gender płeć nauczyciela, teachers hierarchia według prowadzących (identyfikator prowadzącego, tytuł naukowy), 9 / 11

time hierarchia według czasu (semestr, typ semestru, rok studiów, rok kalendarzowy), workload miara obciążenie prowadzącego w semestrze. Rysunek 8 Dodatkowo zdefiniowano zmienną notes average, która reprezentuje średnią ocenę (listing 14). Zmienna wyliczana jest na podstawie sumy ocen podzielonej przez ich liczbę (zakładka Calculations w widoku kostki rys. 8). Listing 14: notes average [Measures][Notes summary]/[measures][notes count] Tak przygotowaną kostkę można umieścić na serwerze Analysis Services i przeglądać ją za pomocą Browsera. 2.3 Przykładowe analizy Analiza 1: zależność średniej oceny od płci prowadzącego oraz jego stopnia naukowego. Okazuje się, że w bazie nie istnieją prowadzący posiadający niektóre tytuły naukowe (np. kobiety z tytułem docenta lub doktora habilitowanego). Mężczyźni wraz ze wzrostem stopnia naukowego oceniają surowiej (w przeciwieństwie do kobiet). Najłagodniej oceniają mężczyźni oraz kobiety magistrowie, najsurowiej kobiety z tytułem doktora i mężczyźni z tytułem doktora habilitowanego. 10 / 11

Rysunek 9 Analiza 2: zależność liczby ocen od semestru oraz płci prowadzącego: Kobiety podczas całego okresu kształcenia studentów wystawiają mniejszą liczbę ocen. Ponadto z semestru na semestr zarówno kobiety jak i mężczyźni wystawiają coraz więcej ocen. Tendencja wzrostowa utrzymuje się do 7 semestru, a następnie mocno spada. Analiza 2: zależność liczby ocen od instytutu oraz roku kształcenia: Niektóre instytuty najwyraźniej nie kształcą studentów przez cały okres trwania studiów (np. I-17 czy I-22). Ponadto można zauważyć, że dalszy rok studiów charakteryzuje się wyższą średnią ocen. Prowadzący w instytutach oceniają bardzo różnie (świadczy to o wysokim poziomie kształcenia lub kiepskiej pracy studentów w przypadku ocen niskich oraz niskim poziomie kształcenia lub bardzo dobrej pracy studentów w przypadku ocen wysokich). Najwyżej ocenia instytut SWF, najniżej wydział W-11. Rysunek 10 11 / 11