STROJENIE PRZETWARZAŃ SAS

Podobne dokumenty
Oracle11g: Wprowadzenie do SQL

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

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

Bazy danych. dr inż. Arkadiusz Mirakowski

Relacyjne bazy danych. Podstawy SQL

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

Paweł Rajba

3. Podzapytania, łączenie tabel i zapytań

Systemy GIS Tworzenie zapytań w bazach danych

Relacyjne bazy danych. Podstawy SQL

Optymalizacja poleceń SQL Metody dostępu do danych

PODZAPYTANIE (SUBSELECT)

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

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

Język SQL, zajęcia nr 1

Grupowanie i funkcje agregujące

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

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

Język SQL podstawy zapytań

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

Bazy danych SQL Server 2005

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

Microsoft SQL Server Podstawy T-SQL

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

Optymalizacja poleceń SQL

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Wykład XII. optymalizacja w relacyjnych bazach danych

Szkolenie Oracle SQL podstawy. Terminy lutego 2010 First Minute! 1100zł!

Ćwiczenie zapytań języka bazy danych PostgreSQL

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

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

Autor: Joanna Karwowska

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

Struktura drzewa w MySQL. Michał Tyszczenko

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

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Optymalizacja w relacyjnych bazach danych - wybór wydajnej strategii obliczania wyrażenia relacyjnego.

ACESS- zadania z wykorzystaniem poleceń SQL

Wykład 8. SQL praca z tabelami 5

Obowiązuje od wersji

Język SQL, zajęcia nr 2

SQL SERVER 2012 i nie tylko:

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

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

Wykład 6. SQL praca z tabelami 3

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Tabela wewnętrzna - definicja

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

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

Grupowanie i funkcje agregacji

Jerzy Nawrocki, Wprowadzenie do informatyki

Hurtownia Świętego Mikołaja projekt bazy danych

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

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

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

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

Bazy Danych. SQL Podstawy języka III: powtórzenie. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

Zarządzanie bazą danych. Bazy Danych i Systemy informacyjne Wykład 4. Piotr Syga

Bazy danych 10. SQL Widoki

Zadania z SQLa (MS SQL Server)

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

Zapytania, złączenia, optymalizacja zapytań, planowanie zapytań, optymalizacja indeksów.

BAZA DANYCH SIECI HOTELI

Operacja PIVOT w języku SQL w środowisku Oracle

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

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

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

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

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

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH

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

Technologie baz danych

Zasady transformacji modelu DOZ do projektu tabel bazy danych

SQL 4 Structured Query Lenguage

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Grupowanie i funkcje agregacji. Grupowanie z użyciem rollup

Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa. Studia Podyplomowe dla Nauczycieli

Język SQL. Rozdział 8. Język manipulowania danymi DML

BAZY DANYCH JĘZYK ZAPYTAŃ BAZ DANYCH SQL. Microsoft Access. Adrian Horzyk. Akademia Górniczo-Hutnicza

Bazy danych. Polecenia SQL

Tytuł: PRZETWARZANIE DANYCH W SAS Autor: Wioletta Grzenda, Aneta Ptak-Chmielewska, Karol Przanowski, Urszula Zwierz. Wstęp

Bazy danych 2013/14. Egzamin. (5 pkt). Baza danych przechowuje w relacji binarnej G graf skierowany.

DECLARE VARIABLE zmienna1 typ danych; BEGIN

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

SQL Structured Query Language

Bazy danych 11. Algorytmy złaczeń. P. F. Góra

050 SQL ELEMENTY ZAAWANSOWANE. Prof. dr hab. Marek Wisła

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Optymalizacja poleceń SQL Wprowadzenie

Wstęp do relacyjnych baz danych. Jan Bartoszek

Tworzenie widoku CREATE OR REPLACE VIEW [nazwa_widoku] AS SELECT [nazwy_kolumn] FROM [nazwa_tablicy];

Złączenie CROSS JOIN jest to tzw. złączenie krzyżowe, którego ogólna postać wygląda następująco:

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX

Transkrypt:

STROJENIE PRZETWARZAŃ SAS PIOTR BEDNARCZYK, ORANGE POLSKA S.A. Copyright 2014, SAS Institute Inc. All rights reserved.

WSTĘP AGENDA Analiza logów przetwarzań Obiekt Hash DATA STEP czy PROC SQL? Podzapytania Łączenie danych z różnych baz danych Podstawy optymalizacji i podsumowanie Q&A

ANALIZA LOGÓW WŁASNE NARZĘDZIE Ruby + Fox 40 linii kodu Łatwe wyszukiwanie najdłuższych kroków przetwarzań

OBIEKT HASH OPIS Obiekt typu Hash umożliwia przechowywanie danych w pamięci RAM oraz dostęp do nich za pomocą kluczy Podstawowe cechy: Szybkie wyszukiwanie (Hash) i odczyt (RAM) danych Zamiana i usuwanie danych z hashmap Domyślnie klucz może występować tylko raz (można to zmienić wiele danych do jednego klucza) Główne zastosowanie: złączenia, agregacje Możliwość zapisu zawartości do zbioru SAS

OBIEKT HASH PRZYKŁAD: ZŁĄCZENIE MAŁEJ TABELI Z DUŻĄ Złączenie join za pomocą sql zamieniamy na tworzenie tabeli pośredniej za pomocą hashmapy 1. Za pomocą hashmapy utworzenie małej tabeli będącej fragmentem dużej 2. Złączenie dwóch małych tabel Przykład (tabela mała 60tys wierszy, duża 112mln wierszy): Złączenie join 23 minuty Złączenie za pomocą hashmapy (łącznie z utworzeniem tabeli pośredniej) 6 minut

OBIEKT HASH PRZYKŁAD: NAKŁADANIE PRZYROSTÓW Zamiana merge (wymagane sortowanie dwóch tabel) na złączenie z hashmapą Przykład mała tabela (nowe dane) 60tys wierszy, duża 17mln wierszy Merge 27 minut Hashmapa 5 minut

DATA STEP CZY PROC SQL PRZYKŁAD: ZŁĄCZENIA ZA POMOCĄ LIKE Cel: wyszukiwanie danych po prefiksach IP Data MB 10.100.25.16 2013-03-01 3 194.195.43.16 2013-03-03 6 10.100.26.17 2013-03-05 2 194.195.41.42 2013-03-01 8 175.203.20.12 2013-03-03 9 10.101.79.11 2013-03-05 11 Najwygodniej: Prefix 10.% 194.195.41% 35.192.34% proc sql; create table wybrane as select ip,data,mb from polaczenia, prefiksy where ip like prefix;

DATA STEP CZY PROC SQL PRZYKŁAD: ZŁĄCZENIA ZA POMOCĄ LIKE proc sql; create table prefix2 as select trim(transtrn(prefix,'%','')) as prefix from prefix; data wybrane; length IP $16; length data $40; length mb $40; if _N_ = 1 then do; declare hash h(dataset: "work.prefix2"); h.definekey('prefix'); h.definedone(); end; set polaczenia; do i=1 to length(ip); prefix=substr(ip,1,i); rc = h.find(); if (rc = 0) then output; drop rc i; end; Oryginalny kod: 1h50min Po optymalizacji: 2min

DATA STEP CZY PROC SQL PRZYKŁAD: ZŁĄCZENIE WARUNKOWE ZE SŁOWNIKIEM Cel: złączenie danych ze słownikiem z uwzględnieniem dodatkowych warunków zapisanych w SQL proc sql; create view work.widok as select t.*, coalesce(c,.) as WES from ( select MONOTONIC( ) as _lp,* from work.tabela ) t left join work.slownik l on t.identyfikator = l.identyfikator and ( srednia >= min and srednia <= max ) order by _lp ; quit; data work.tabelas (drop= _lp _WES ); length _WES 8; retain _WES; set work.tmp_lkp; by _lp; if first._lp then do; _WES = WES; end; if _WES < WES then do; _WES = _WES; end; else do; _WES = WES ; end; if last._lp then do; WES = _WES; output; end; data work.tabelan; set work.tabela; kolejny=_n_; proc sql; create table work.tymcz as select t.kolejny, min(c) as WES from work.tabelan t left join work.slownik l on t.identyfikator = l.identyfikator and ( srednia >= min and srednia <= max) group by t.kolejny; quit; proc sort data=tymcz; by kolejny; data work.tabelas; merge work.tabelan work.tymcz; drop kolejny; Oryginalny kod: 30min Po optymalizacji: 2min

PODZAPYTANIA PRZYKŁAD: ZŁĄCZENIE Z WYKLUCZENIEM Cel: złączenie tabel tabela1 i tabela2 z wykluczeniem rekordów z tabela3 tabela1 1,1mln wierszy tabela2 150tys wierszy tabela3 8000 wierszy proc sql; create table wynik as select tab1.* from tabela1 as tab1, tabela2 as tab2 where tab1.klucz=tab2.klucz and not exists (select tab3.klucz from tabela3 as tab3 where tab3.klucz=tab1.klucz) proc sql; create table tabela2tmp as select * from tabela2 where klucz not in (select klucz from tabela3); create table wynik as select tab1.* from tabela1 as tab1, tabela2tmp as tab2 where tab1.klucz=tab2.klucz Oryginalny kod: 1 godz 40min Po optymalizacji: 15sekund

RÓŻNE BAZY DANYCH PRZYKŁAD: POŁĄCZENIE SAS Z HURTOWNIĄ DANYCH Zadanie: W SAS mamy tabelę 100tys wierszy, na hurtowni danych 70mln Cel: złączenie tabel Oryginalne rozwiązanie (czas 1h40min): Złączenie tabel w SAS za pomocą jednego proc sql Optymalizacja (czas 5min): Skopiowanie kolumn z kluczem z SAS na hurtownię Wykonanie złączenia na hurtowni, skopiowanie fragmentu tabeli do SAS Złączenie w SAS Cały kod zawierał 6 takich złączeń łączna optymalizacja około 9h

PODSUMOWANIE O CZYM NALEŻY ZAWSZE PAMIĘTAĆ Ram jest tani, wykorzystujmy go poprzez hashe Przetwarzajmy tylko niezbędne dane (usuwamy zbędne wiersze i kolumny ze zbiorów) Przetwarzajmy dane tam, gdzie już są nie kopiujemy pomiędzy bazami Wykorzystujmy mocne strony języka SAS4GL Narzędzie to nie wszystko Sprawdzajmy różne podejścia nie zawsze oczywiste jest najlepsze

Q&A Copyright 2014, SAS Institute Inc. All rights reserved.