Zugriff auf relationale Datenbanken – gewusst wie!

Werbung
WEBINAR@LUNCHTIME
THEMA: ZUGRIFF AUF RELATIONALE DATENBANKEN – GEWUSST WIE!
BRUNO MÜLLER
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
WEBINAR@LUNCHTIME HERZLICH WILLKOMMEN BEI WEBINAR@LUNCHTIME
Moderation
Training
Anne K. Bogner-Hamleh
Bruno Müller
SAS Institute GmbH
Education Consultant
SAS Institute AG
Education Manager
Xing-Profil:
Xing-Profil:
http://www.xing.com/profile/AnneKatrin_BognerHamleh?key=0.0
https://www.xing.com/profile/Bruno_Mueller5
Hinweise zum Ablauf des Webinars:
■ Teilnehmer sind automatisch “stumm” geschaltet
■ Sie können Nachrichten an den Moderator senden und Fragen stellen
■ die Veranstaltung wird aufgezeichnet
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
VERWENDEN VON AGENDA
SAS/ACCESS TO …
Einführung
Impliziter Pass-Through
Expliziter Pass-Through
Best Practice
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
VERWENDEN VON WAS BEKOMMEN SIE MIT SAS/ACCESS TO …
SAS/ACCESS TO …
■ LIBNAME Engine
Sorglospaket, Sie müssen sich um fast nichts kümmern.
■ Proc SQL Pass Through
Direktes ausführen von DBMS spezifischem SQL.
■ Bulk Load Möglichkeit
Verwenden von DBMS Utilities für das laden von Daten.
■ In-Database Verarbeitung
Einige SAS Prozeduren und andere Funktionalitäten können einen Teil der
Verarbeitung an das DBMS auslagern. Es werden nicht alle DBMS gleich unterstützt.
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
VERWENDEN VON WAS MACHT SAS/ACCESS TO … FÜR SIE
SAS/ACCESS TO …
■ Automatische Daten Typen Konvertierung SAS ↔ DBMS
Beispiel: SAS Datum in DBMS Datum
■ Wenn möglich, Datenselektion etc., direkt im DBMS
Beispiel: WHERE, BY Anweisungen in entsprechendes SQL übersetzten
■ Übersetzen von DBMS Namen in SAS Namen (falls nötig)
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
VERWENDEN VON
WAS BRAUCHT ES
SAS/ACCESS TO …
SAS Server
SAS Prozess
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
DBMS Server
DBMS Client
VERWENDEN VON
LIBNAME ANWEISUNG
SAS/ACCESS TO …
LIBNAME libref
DBMS-Enginename
Verbindnungs Informationen
Authentifizierungs Informationen
<SCHEMA=>
<Weitere Optionen,
allgemein oder DBMS spezifisch>
;
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
LIBNAME mydbms
ORACLE
PATH=XE
USER="educ" PASSWORD="educ"
;
VERWENDEN VON BEISPIEL ANWENDUNG
SAS/ACCESS TO …
Verarbeitung in DBMS (Empfehlenswert!)
■ SQL Code wird an das DBMS übergeben
■ DBMS macht die ganze Verarbeitung
■ Ergebnis wird in SAS Datei gespeichert
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
VERWENDEN VON
WELCHE TABELLEN GIBT ES?
SAS/ACCESS TO …
Die Liste der Tabellen kann mit SAS Proc's etc angezeigt werden. Beispiel dictionary.tables:
proc sql;
create table myDBMS_tables as
select
*
from
dictionary.tables
where
libname = "MYDB"
order by
memname
;
quit;
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
Enterprise Guide:
Bibliothek muss zugewiesen sein, das
heisst sie hat ein gelbes Icon
VERWENDEN VON INFORMATIONEN ÜBER DIE VERABEITUNG
SAS/ACCESS TO …
options
sastrace=',,,d'
sastraceloc=saslog
nostsuffix
;
Mit Hilfe dieser SAS System Optionen können wir sehen welche SQL
Anweisung an das DBMS übergeben wird.
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
WEBINAR@LUNCHTIME
DEMO
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
VERWENDEN VON PASS-THROUGH DEFINITION
SAS/ACCESS TO …
Pass-Through-Verarbeitung
■ effizientester Weg der Datenabfrage auf die DBMS-Daten
■ “Pass-Through”  Durchreichen des Codes an die Datenbank zur Verarbeitung
Es gibt zwei verschiedene Arten von Pass-Through:
■ Impliziter Pass-Through, alles automatisch
■ Expliziter Pass-Through, selber im code definiert
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
VERWENDEN VON IMPLIZITER PASS-THROUGH
SAS/ACCESS TO …
Der SAS Code wird soweit als möglich in DBMS SQL Dialekt übersetzt.
Impliziter Pass-Through
■ ist eine Optimierungstechnik in PROC SQL, gewissen Prozeduren und dem DATA
Step
■ Übersetzt die Abfrageinstruktionen von SAS in DBMS-spezifische Syntax, soweit
möglich
■ Wird bei erfolgreicher Übersetzung die Abfrage direkt in DBMS durchführen.
■ Es kann auch nur ein Teil an das DBMS übergeben werden
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
VERWENDEN VON BEISPIEL PROC SQL (ABFRAGE FENSTER)
SAS/ACCESS TO …
Folgende Aufgaben können über einen impliziten Pass-Through gelöst werden:
In Proc SQL
■ Einbinden einer Verdichtungsfunktion (SUM, COUNT, …)
■ Filtern von Ursprungs- oder verdichteten Spalten mit Standardoperatoren
■ Sortieren der Zeilen
■ Verknüpfen mit anderen DBMS-Tabellen
■ Erstellen von berechneten Spalten mit DBMS-kompatiblen Funktionen
■ Verwenden der Option Nur eindeutige Zeilen auswählen (DISTINCT)
Im DATA Step
■ Filtern von Spalten mit Standardoperatoren (WHERE)
■ Sortieren der Zeilen (BY)
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
VERWENDEN VON BEISPIEL PROC SQL (ABFRAGE FENSTER)
SAS/ACCESS TO …
In diesen Situationen wird KEIN impliziter Pass-Through verwendet:
■ Verknüpfen von DBMS-Tabellen mit anderen Tabellen ausserhalb der DBMS (zum
Teil möglich, MULTI_DATASRC_OPT= LIBNAME Option)
■ Verwenden von Funktionen die nicht in DBMS-Syntax übersetzt werden können
■ Gruppieren und Verdichten von Daten mit gleichzeitiger Verwendung der Detaildaten
(weniger Spalten in GROUP BY als in SELECT)
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
WEBINAR@LUNCHTIME
DEMO
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
VERWENDEN VON EXPLIZITER PASS-THROUGH
SAS/ACCESS TO …
Gründe für die Verwendung des expliziten Pass-Through:
■ Komplette Kontrolle über die SQL Anweisung
■ Einbinden von DBMS-spezifischen Funktionen oder Optionen.
■ Verwendung von Subselects
■ Auch andere Anweisungen wie SELECT möglich, z.Bsp. CREATE, GRANT usw..
■ Vermeiden des Datentransfers zu SAS vor der Verarbeitung
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
VERWENDEN VON EXPLIZITER PASS-THROUGH
SAS/ACCESS TO …
Selbst geschriebene Programme bieten folgende Vorteile:
■ komplette Kontrolle über den zu DBMS gesendeten Code
■ DBMS-spezifische Funktionen und Optionen können verwendet werden
Beim expliziten Pass-Through wird der SQL Code direct an das DBMS
weitergegeben. Die DBMS Fehlermeldungen werden im SAS Log angezeigt
Die Makro Variablen SQLXRC und SQLXMSG enthalten Returncode und
Fehlermeldung.
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
VERWENDEN VON
EXPLIZITER PASS-THROUGH, ENTERPRISE GUIDE
SAS/ACCESS TO …
Enterprise Guide:
Im Fenster Abfrageoptionen kann
ein expliziter Pass-Through
gefordert werden. Dann schickt
SAS den Code ohne Überprüfung
direkt an DBMS.
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
VERWENDEN VON EXPLIZITER PASS-THROUGH, SELECT
SAS/ACCESS TO …
proc sql;
Folgende Anweisungen werden verwendet:
■ CONNECT TO DBMS ( );
■ SELECT * FROM CONNECTION TO DBMS (
DBMS select
);
■ DISCONNECT FROM DBMS;
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
connect to DBMS (
path=xe
);
create table dbms_pt as
select * from connection to DBMS (
select
customer_country
, customer_name
, customer_age
, avg(customer_age)
over(partition by customer_country )
as avg_age
from kunden
where
customer_id between 4100 and 4200
order by
customer_country
, customer_age desc
);
%put NOTE: &=sqlxrc;
%put NOTE: &=sqlxmsg;
quit;
VERWENDEN VON EXPLIZITER PASS-THROUGH, NICHT SELECT
SAS/ACCESS TO …
proc sql;
connect to DBMS (
path=xe
);
Folgende Anweisungen werden verwendet:
■ CONNECT TO DBMS ( );
■ EXECUTE (
DBMS statement
) BY DBMS;
■ DISCONNECT FROM DBMS;
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
execute (
create view kunden_de as
select
*
from
kunden
where
customer_country = 'DE'
) by DBMS;
%put NOTE: &=sqlxrc;
%put NOTE: &=sqlxmsg;
quit;
WEBINAR@LUNCHTIME
DEMO
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
VERWENDEN VON BEST PRACTICE
SAS/ACCESS TO …
Was geht zur Datenbank
■ Option SASTRACE setzen
■ Proc SQL anstatt bestimmte SAS Prozedur verwenden
Enterprise Guide: Extras  Optionen
■ Daten  Performance  Zeilenanzahl für Anzeige begrenzen  UNBEDINGT
SETZEN!
■ Daten beim Hinzufügen zum Projekt automatisch öffnen  nur mit Bedacht und
Einschränkung der Zeilen
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
VERWENDEN VON BEST PRACTICE
SAS/ACCESS TO …
Expliziter Pass-Through
■ Textkonstanten immer in einfache Hochkommata 'xyz'
■ Angabe von Datumskonstanten beim expliziten Pass-Through, DATE '2015-11-03'
■ Umgang mit Textkonstanten in Makrovariablen
%TSLIT(&mVar), %TSLIT wird einfache Hochkomma hinzufügen
■ Bezeichner (Spaltennamen) mit Spezialzeichen immer in doppelte
Anführungszeichen "XYZ“
■ Keine SAS Formate beim Pass-Through verwenden!
■ Keine reservierten Wörter als Spaltennamen, Tabellennamen verwenden (es gibt
sehr viele)
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
VERWENDEN VON BEST PRACTICE
SAS/ACCESS TO …
Die LIBNAME Anweisung hat sehr viele Optionen:
■ BL_... beinflussen Bulk Load Utility
■ PRESERVE_TAB_NAMES, PRESERVE_COL_NAMES
behalten von Spezialzeichen und Gross/Kleinschreibung in Namen, wollen sie das?
■ DBMAX_TEXT, Maximale Länge von Char Variablen (default 1024)
■ CONNECTION, wieviele DBMS Verbindungen soll SAS erstellen.
■ DBCONINIT, setzen von DBMS spezifischen Einstellungen, z.Bsp. Sortierreihenfolge
■ DBMSTEMP, Global Temporary Table Support
■…
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
VERWENDEN VON BEST PRACTICE
SAS/ACCESS TO …
Folgende Prozeduren können einen Teil der Verarbeitung direct im DBMS
ausführen.
■ FREQ
■ RANK
■ REPORT
■ SORT
■ SUMMARY/MEANS
■ TABULATE
In der Regel sollte jedoch die Aggregation von DBMS Daten mit Proc SQL
gemacht werden (bessere Kontrolle).
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
VERWENDEN VON MAL ANSCHAUEN
SAS/ACCESS TO …
Proc FEDSQL und Proc DS2 unterstützen Standard ANSI Datentypen wie
VARCHAR, BIGINT, DECIMAL usw.
Das heisst sie können innerhalb dieser Prozeduren diese Datentypen
verwenden und auch in eine DBMS Tabelle schreiben.
Diese Datentypen können nicht in eine SAS Datei geschrieben werden.
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
WEBINAR@LUNCHTIME
DEMO
Optimize Data Access within SAS Enterprise Guide
https://www.youtube.com/watch?v=OSTa1EUpKT8
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
FRAGEN?
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
WEBINAR@LUNCHTIME VIELEN DANK FÜR IHRE TEILNAHME
Interesse an weiterem Austausch?
Diskutieren Sie mit uns in der XING-Gruppe
Business Analytics mit SAS
Sprechen Sie uns direkt an:
[email protected]
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
WEBINAR@LUNCHTIME WEITERE INFORMATIONEN UND KURSE ZU DIESEM THEMA…
Kompaktkurs: Base SAS® Programmierung für erfahrene Programmierer
04.07. - 08.07.16 Heidelberg
01.08. - 05.08.16 Frankfurt
05.09. - 09.09.16 Heidelberg
Zugriff auf Datenbanken und Tabellen mit der SAS/ACCESS® Software
Auf Anfrage
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
NÄCHSTES WEBINAR@LUNCHTIME:
07. JULI 2016
SAS ENTERPRISE GUIDE AUSFÜHREN
MIT VIEL WENN UND ABER
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
FOLIEN ZUM DOWNLOAD UNTER
WWW.SAS.DE/LUNCHTIME
WIE HAT IHNEN UNSER WEBINAR GEFALLEN?
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
www.SAS.com
Herunterladen