Wsparcie Techniczne
SAS Data Integration Studio
Najczęstsze problemy i pytania związane z SAS Data Integration Studio
Dowiedz się więcej na temat pracy z Data Integration Studio oraz jego podstawowych funkcji.
Co nowego w DI Studio?
Listę nowości i informację o najnowszej wersji można sprawdzić na stonie wskazywanej w linku. Więcej informacji w zakładce Documentation w punkcie What's New in SAS Data Integration Studio. DI Studio na support.sas.com.
Gdzie znajduje się dokumentacja do DI Studio?
Dokumentacje do DI Studio są dostępne na globalnych stronach Wsparcia Technicznego: SAS® Product Documentation - SAS Data Integration Studio
Czy DI Studio 4.9 może współpracować z serwerem metadanych 9.2 lub 9.3?
Nie. Z powodu zmian, jakie zaszły w protokole używanym do łączenia z serwerami SAS, DI Studio 4.9 nie może współpracować ani z serwerem metadanych 9.2 ani 9.3.
Dlaczego na serwerze ciągle działa proces, chociaż zadanie uruchomione w DI Studio zakończyło się?
W momencie, kiedy z DI Studio uruchamiane jest zadanie, powoływana jest sesja workspace serwera, na którym wykonywany jest kod. Zakończenie przetwarzania nie kończy sesji workspace serwera, który działa do czasu zamknięcia zadania tak, aby kolejne jego uruchomienie było wykonywane przez tę samą sesję SASa. Dopiero zamknięcie Job Editora powoduje zakończenie sesji.
Podobnie jest w przypadku uruchamiania kodu własnego z Code Editora. Pierwsze uruchomienie powoduje powołanie sesji workspace serwera na serwerze. Działa on do czasu zamknięcia okna Code Editora.
Czy można uruchomić różne zadania w jednej sesji workspace serwera?
W DI Studio dla każdego uruchamianego kodu (albo z okna Job Editor albo Code Editor) powoływana jest niezależna sesja SASa (workspace serwer). Nie jest możliwe, żeby nowe zadanie uruchomić w ramach już istniejącego procesu.
Czy ta sama tabela może być użyta kilka razy w tym samym zadaniu?
Tak. Tabela może być użyta w zadaniu wiele razy zarówno jako źródło danych, jak i jako wynik zadania. Ponieważ niektóre zadania mogą kasować tabelę wynikową przed wykonaniem przetwarzania, należy uważać żeby nie skasować tabeli w przypadku, gdy ta sama tabela jest jednocześnie źródłem danych jak i wynikiem zadania.
Co zrobić, żeby przy ładowaniu tabeli był wykorzystany bulkload?
W przypadku dwóch baz danych: Teradaty i Oracle'a istnieją specjalne transformacje (Teradata Loader i Oracle Loader), które pozwalają wybrać sposób ładowania danych oraz ustawić dodatkowe opcje z nim związane. Dla innych baz danych we właściwościach tabeli, na zakładce Physical Storage pod przyciskiem Table Options należy dodać opcję:
BULKLOAD=YES
Innym sposobem jest we właściwościach transformacji, która ładuje dane, zdefiniować opcję BULKLOAD dla zbioru wynikowego (zakładka Table Options).
Jak przy eksporcie do pliku tekstowego NIE umieszczać wartości numerycznych w cudzysłowach?
Przy zapisie do pliku tekstowego należy we właściwościach pliku, na zakładce File Parameters zaznaczyć opcję Treat consecutive delimiters as a single delimiter.
Jak przy eksporcie do pliku tekstowego umieścić nazwy kolumn w pierwszym wierszu?
We właściwościach pliku, na zakładce File Parameters w zaawansowanych opcji zdefiniować Start record równe 2. W pierwszym wierszu będą wtedy umieszczone nazwy kolumn, a wypisywanie danych rozpocznie się od drugiego wiersza.
Czy transformacja może wyniki zapisywać bezpośrednio do docelowego zbioru?
Tak. W wielu zadaniach transformacja Table Loader nie jest konieczna, a wyniki transformacji można zapisywać bezpośrednio do zbioru wynikowego zamiast tworzenia tymczasowego obiektu.
Trzeba jednak pamiętać, że w większości przypadków metoda ta jest użyteczna przy prostym ładowaniu zbiorów SAS (zamiana zbioru na nowy). Przy bardziej skomplikowanym ładowaniu danych, np. do zewnętrznych baz danych, stworzenie struktury pośredniej i użycie transformacji Table Loader może się okazać konieczne.
W metadanych została zarejestrowana biblioteka, w EG widać w niej zbiory, a w DI Studio zbiorów nie ma. Dlaczego?
DI Studio udostępnia wyłacznie tabele, które zostały zarejestrowane w metadanych. Natomiast EG, w zależności od sposobu podpięcia biblioteki, może wyświetlać tabele, które fizycznie znajdują się w bibliotece, a nie zostały zarejestrowane w metadanych.
Jak najprościej dodać do zadania polecenie zawiadamiania użytkownika, że zadanie/transformacja zakończyło się?
Do powiadamiania użytkownika, że zadanie lub transformacja w ramach zadania została wykonana, służy zakładka Status Handling, dostępna we właściwościach zadania oraz niektórych transformacji. W zależności od wybranego obiektu (zadanie lub konkretna transformacja), dostępne są różne warunki i akcje, które będą wykonane, jeżeli warunek będzie spełniony.
Przykładowe warunki:
- Successful - zadanie/transformacja zakończyło się bez błędu
- Warnings - w trakcie wykonywania zadania/transformacji pojawiło się ostrzeżenie
- Errors - w trakcie przetwarzania pojawiły się błędy
- Table Does not Exist - tabela nie istnieje
- Data Modified - dane zostały zmodyfikowane
- Send Job Status - zapisanie statusu zadania do zbioru.
Przykładowe akcje:
- Abort - przetwarzanie zostanie przerwane
- Send Email - pod wskazany adres zostanie przesłany email
- Send Entry to Text File - do wskazanego pliku tekstowego zostanie zapisana podana informacja wraz z dokładnym czasem zapisu
- Send Entry to Dataset - do wskazanego zbioru zostanie dopisana podana informacja z dokładnym czasem zapisu
- Custom - wywołane zostanie macro wskazane przez użytkownika.
Jeżeli transformacja nie ma zakładki Status Handling wówczas można wykorzystać dodatkową transformację Return Code Check.
Jak automatycznie zapisywać informacje o czasie przetwarzania zadania?
Jeżeli zadanie jest uruchamiane w ramach DI Studio, statystyki dotyczące jego wykonania są wyświetlane w ramach zadania, na zakładce Statistics. Informacje o uruchamianych zadaniach w DI Studio są równiez dostępne w oknie Runtime Manager (wywoływanym z menu View -> Runtime Manager). Wyświetlane są w nim zadania aktualnie otwarte w DI Studio, a dla każdego z nich:
- nazwa zadania
- status zadania
- data i czas rozpoczęcia zadania
- data i czas zakończenia zadana
- wykorzystywany serwer aplikacji.
Podstawowe statystyki z wykonania zadania można również automatycznie zapisywać w zbiorze, korzystając z zakładki Status Handling we właściwościach zadania. Należy tam stworzyć nową pozycję i wybrać:
- Code condition: Send Job Status
- Action: Send Job Status
oraz podać nazwę biblioteki i zbioru, do którego będą wpisywane informacje o zadaniu.
Uwaga! Biblioteka musi być dostępna dla serwera aplikacji. Jeżeli zbiór istnieje, to obserwacja zostanie dopisana na jego koniec. W przeciwnym przypadku zbiór zostanie stworzony.
W zbiorze będą zapisywane następujące informacje:
- nazwa zadania
- status zadania
- kod zakończenia zadania
- liczba rekordów w ostatniej ładowanej tabeli przed załadowaniem
- liczba rekordów w ostatniej ładowanej tabeli po załadowaniu
- biblioteka i nazwa ostatniej tabeli ładowanej w zadaniu
- użytkownik, który zadanie uruchamiał
- czas rozpoczęcia i zakończenia działania
Jak przy wczytywaniu danych z pliku tekstowego za pomocą własnego kodu, odwoływać się do wynikowej tabeli?
Przy definiowaniu dostępu do danych zapisanych w pliku tekstowym, dostępna jest opcja User written. Użytkownik może wtedy podać własny kod (DATA step), który będzie wczytywał dane. DATA step powinien tworzyć zbiór wynikowy, który będzie wejściem dla kolejnych transformacji. Żeby zapewnić ciągłość przetwarzania, DI Studio nazwę tego zbioru zapisuje na makrozmiennej _output, wystarczy więc odwołanie do tej makrozmiennej podać jako zbiór wynikowy w DATA stepie.
Przy przetwarzaniu batchowym zadania stworzonego w DI Studio pojawia się błąd: ERROR: The PERFINIT macro has not been run.
ERROR: The PERFINIT macro has not been run.
DI Studio w trakcie wykonywania zadania wykorzystuje mechanizm ARM do zbierania informacji o użytych zasobach. Mechanizm ten jest domyślnie włączony dla workspace serwera, który te zadania wykonuje.
Natomiast zadania batchowe są uruchamiane na DATA Step Batch serwerze, który mechanizm ARM ma domyślnie wyłączony. Stąd powyższy komunikat.
Błąd nie będzie się pojawiał, kiedy przy generowaniu kodu, makra związane z ARMem nie będą umieszczane w kodzie (Tools --> Options/General - "Override and disable performance statistics when a job is deployed") lub gdy DATA Step Batch serwer będzie miał włączony mechanizm ARM (zgodnie z Collecting ARM Log Information for SAS Data Integration Studio Jobs).
W kodzie generowanym przez DI Studio domyślnie włączana jest opcja MPRINT. Czy można ją wyłączyć?
W kodach generowanych przez DI Studio włączenie opcji MPRINT uzależnione jest od wartości makrozmiennej %etls_debug:
%global etls_debug;
%macro etls_setDebug;
%if %str(&etls_debug) ne 0 %then
OPTIONS MPRINT%str(;);
%mend;
%etls_setDebug;
Ponieważ na ogół nie jest ona zdefiniowana, więc opcja MPRINT zostaje ustawiona, co może spowodować duże rozmiary plików z logami. Najprościej ustawić wartość makrozmiennej w autoexecu workspace serwera:
OPTIONS NOMPRINT;
%let etls_debug=0;
Gdzie mogę znaleźć informacje na temat poprawy wydajności procesów ETL?
Informacje na temat wydajności procesów ETL zostały zebrane w dokumencie: ETL Performance Tuning Tips.
Jak otworzyć zbiór, w którym są wykorzystywane formaty zdefiniowane przez użytkownika?
Jeżeli w DI Studio będzie wykorzystywany zbiór, który zawiera formaty zdefiniowane przez użytkownika, formaty muszą zostać udostępnione serwerowi, który dane będzie przetwarzał. Można to zrobić na poziomie zadania, dodając opcję FMTSEARCH w kodzie uruchamianym na początku zadania (pre-process), ale będzie to działało tylko dla jednego zadania.
Dlatego lepiej jest udostęnić format na poziomie serwera. Instrukcje, jak to zrobić, znajdują się w SAS Intelligence Platform: Data Administration Guide.
Więcej informacji dotyczących wczytywania i przetrzymywania formatów zawarte zostało w Nocie 40103
Jak powinien wyglądać plik zawierający definicję kolumn dla danych wczytywanych z pliku tekstowego?
Przy wczytywaniu danych z pliku tekstowego należy zdefiniować strukturę wynikowego obiektu. Jedną z możliwości jest import kolumn i ich atrybutów z pliku tekstowego. Plik ten powinien mieć na początku zdefiniowane, jakie atrybuty i w jakiej kolejności będą podawane, a w kolejnych wierszach wymienione zmienne.
Przykładowy plik:
# This is a simple External Format File
# Header follows
SASColumnName,SASColumnType,BeginPosition,EndPosition,SASColumnLength,SASInformat,SASFormat
# Column definition records follow
# SASColumnLength is expressed in bytes
NAME,C,1,8,8,$8.,$8.
INITIALS,C,9,10,2,$2.,$2.
BIRTH,N,12,19,8,yymmdd8.,ddmmyy10.
Czy można zmienić nazwę i lokalizację logu DI Studio?
SAS DI Studio tworzy log o nazwie DataIntegrationStudio_Log.txt w katalogu C:\Users\\AppData\Roaming\SAS\SASDataIntegrationStudio\4.8 . Log ten zawiera komunikaty z działania DI Studio i za każdym uruchomieniem aplikacji jest tworzony na nowo. W celu zmiany nazwy lub położenia logu, DI Studio powinno być uruchomione z opcją -logfile:
distudio -logfile '<filepath\filename>'
Jak zwiększać poziom debugowania dla DI Studio?
W tym celu w pliku <folder intalacyjny SAS-a>\SASDataIntegrationStudio\4.8\distudio.ini należy dodać na koniec ustawienia MainClass opcje:
-debug –serverlog
Logi powstaną w katalogu C:\Users\<userid>\AppData\Roaming\SAS\SASDataIntegrationStudio\4.8, gdzie <userid> jest identyfikatorem użytkownika Windows uruchamiającego DI Studio. Plik jest nadpisywany za każdym razem, gdy startuje DI Studio.
Uwaga! Przed modyfikacją pliku distudio.ini należy stworzyć jego kopię.
Uwaga! Zwiększanie poziomu debugowania powinno nastąpić po konsultacji ze wsparciem technicznym.
Jak w zadaniu skorzystać z danych, które znajdują się na zdalnym komputerze?
Do odczytu danych, które znajdują się na zdalnym komputerze potrzebny jest zainstalowany na nim moduł SAS/CONNECT. W metadanych należy zdefiniować serwer SAS/CONNECT (w kontekście serwera związanym ze zdalną maszyną) oraz CONNECT spawner, które będą działać na zdalnym komputerze. Potrzebna jest także definicja biblioteki, która będzie wykorzystana przez sesję CONNECT do odczytu danych (będzie to lokalna biblioteka dla zdalnej sesji).
Uruchomiona sesja workspace serwera będzie powoływać zdalną sesję CONNECTową, która będzie podpinać bibliotekę i oferować dostęp do danych oraz możliwośc ich przetwarzania lub przesyłania do sesji workspace serwera. Taka konfiguracja wymaga, żeby lokalnie również był zainstalowany moduł SAS/CONNECT, dzięki któremu powołanie zdalnej sesji będzie możliwe.
Szczegółowe informacje na temat takiej konfiguracji są opisane w SAS 9.4 Intelligence Platform: Desktop Application Administration Guide
Jak w DI Studio skonfigurować wersjonowanie?
Przed konfiguracją wersjonowania w DI Studio, musi być zainstalowany serwer wersjonujący (np. Concurrent Versions System server - CVS lub Apache Subversion server - SVN). DI Studio korzysta z klienta do kontroli wersji. Zarówno serwer jak i klient muszą być dostępne dla DI Studio.
Do konfiguracji DI Studio potrzebny jest dodatek pozwalający na podanie parametrów potrzebnych do połączenia. Domyślnie w ramach instalacji są dostępne 2 dodatki: CVS plug-in i SVN plug-in. Ponieważ możliwe jest połączenie tylko z jednym serwerem wersjonującym, więc tylko jeden z tych dodatków powinien znajdować się w katalogu instalacyjnym.
Drugi należy usunąć. Konfiguracja odbywa się poprzez wybór z menu Tools --> Options i zakładki odpowiadającej używanemu systemowi do wersjonowania.
Dostępne jest również API, pozwalające na współpracę z innym system do wersjonowania.