Efektywne zarządzanie metadanymi. Import danych słowników z xls

Efektywne zarządzanie metadanymi. Import danych słowników z xls. Metastudio Tips&Tricks Autor: Grzegorz Orłowski

Jednym z najczęstszych wyzwań dla administratora biznesowego Metastudio DRM jest tworzenie słownika na podstawie skoroszytu Excel, w którym ten słownik był dotychczas rozwijany.

Przyczyna jest prosta – wynika ze struktury słowników i cyklu użytkowania pliku xls. W tym artykule znajdziesz wskazówki jak łagodnie przejść przez ten proces.

Realizacja takiego zadania wymaga wykonania co najmniej 3 kroków:

  1. Założenie struktury tabeli słownikowej w bazie danych.
  2. Rejestracja słownika w Metastudio.
  3. Import danych ze skoroszytu, w którym dane były dotychczas utrzymywane.

W przypadku prostych słowników jest to całkiem łatwe zadanie. No dobrze, ale co rozumiemy przez „prosty” słownik? 

Jest to słownik charakteryzujący się:

  • niewielką liczbą kolumn (kilka),
  • niewielką liczbą rekordów (kilkaset),
  • uporządkowanymi danymi słownikowymi (kody o stałej długości/strukturze, opisy, etc.)

Gorzej wygląda sytuacja ze słownikami, które utrzymywane są w postaci skoroszytów Excel przez dłuższy czas. Ich zawartość odbiega w mniejszym lub większym stopniu od pierwotnych założeń, zawierają dodatkowe uwagi, wartości niezgodne z pierwotnie przewidzianym „typem” kolumny etc. W takim wypadku każdy ze wspomnianych wcześniej kroków będzie wymagał dodatkowej uwagi.

Krok 1: Założenie struktury tabeli słownikowej w bazie danych

  1. Założenie struktury tabeli słownikowej w bazie danych będzie wymagało przygotowania skryptu DDL (Data Definition Language), o składni odpowiedniej dla silnika bazy danych, w której to założona ma być tabela słownikowa. Zacznijmy od nazw kolumn. Najbardziej oczywistym podejściem do realizacji zadania jest wykonanie go w następujących etapach:
    Otworzenie skoroszytu Excel zawierającego dane słownikowe.
  2. Skopiowanie wiersza z nagłówkami do odrębnego arkusza i przetransponowanie przy wklejaniu. Otrzymamy w ten sposób listę kolumn docelowego słownika.
  3. Jeżeli nazwy kolumn mają charakter opisowy, konieczne będzie utworzenie nazw technicznych dla poszczególnych kolumn. Należy wziąć pod uwagę to, że często w projekcie, w ramach którego realizowane jest zadanie, istnieje pisany bądź umownie przyjęty schemat zapisu nazw kolumn, np.: podkreślenia zamiast spacji, konkretne prefiksy bądź sufiksy, charakterystyczny sposób skracania nazw.

Mamy już nazwy kolumn dla naszego słownika

Teraz pora na określenie typu oraz długości/precyzji dla każdej z kolumn. Tutaj najczęściej zaczynają się „schody”, bo na tym etapie musimy już wziąć pod uwagę jeden z kolejnych kroków, które będą realizowane tj. import danych. 

Dlaczego? Otóż właściwe zdefiniowanie struktury słownika będzie wymagało zastosowania takiego podejścia, które będzie odpowiednie dla celów jego późniejszego wykorzystania. Co przez to rozumiemy?

  1. Jeżeli słownik będzie zasilany tylko 1-krotnie (tzw. zasilanie „zerowe”), a następnie utrzymywany z poziomu interfejsu Metastudio DRM, to stosowniejsze będzie precyzyjne zdefiniowanie poszczególnych kolumn. Czyli jeżeli przykładowo w danej kolumnie ma być 2-znakowy kod ISO kraju – definiujemy go np. w Oracle jako varchar2(2).
    W przypadku wystąpienia jakiejś niezgodności pomiędzy importowanymi danymi a przewidzianą strukturą, będziemy musieli poprawić ręcznie dane w skoroszycie – ale robimy to tylko raz.
  2. Jeżeli słownik będzie wielokrotnie aktualizowany w trakcie jego „życia” poprzez import ze skoroszytu Excel, to sensowniej będzie przewidzieć – analizując dane w każdej z kolumn – wszystkie potencjalne przypadki, dołożyć jeszcze jakiś „zapas” dla długości kolumny a walidację danych wprowadzanych „ręcznie” poprzez interfejs Metastudio DRM zdefiniować poprzez dodanie odpowiednich walidatorów dla każdej kolumny.
  3. Na tym etapie należy również rozważyć dodanie kolumn technicznych:
    • Co najmniej kolumny ze sztucznym kluczem pierwotnym: w przypadku popularnych baz danych (Oracle, Ms SQL Server) najwygodniej jest dodać kolumnę typu identity, z automatycznym generowaniem wartości.
    • Jeżeli słownik ma być audytowany, wówczas należy przewidzieć kolumny przechowujące informacje audytowe, takie jak Zmodyfikowany przez, Data modyfikacji oraz ewentualnie dodatkowo Utworzony przez oraz Data utworzenia.
    • Jeżeli wartości w słowniku mają podlegać historyzacji, należy dodać stosowne kolumny, np. wykorzystując model wolnozmieniających się wymiarów typu 2 (SCD Type 2) i dodając kolumny Data początku okresu obowiązywania oraz Data końca okresu obowiązywania rekordu.
    • Jeżeli dane w słowniku mają być walidowane a wynik tej walidacji ma być przechowywany w słowniku, należy dodać kolumnę ze statusem walidacji.

Jeżeli słownik będzie modyfikowany wyłącznie poprzez interfejs Metastudio DRM (ręczna edycja, import z Excel’a), wówczas nie zaleca się stosowania dodatkowych restrykcji bazodanowych (typu CHECK, czy też dedykowanych wyzwalaczy). Skuteczniejsze będzie wykorzystanie funkcji aplikacji – unikniemy wówczas potencjalnych „kolizji” pomiędzy definicjami na poziomie bazy danych i Metastudio DRM.

Krok 2: Rejestracja słownika w Metastudio

Przy rejestracji słownika w Metastudio należy pamiętać o weryfikacji typów kolumn, które zostały ustawione automatycznie podczas odczytu metadanych tabeli, m.in.: weryfikacja poprawności klucza pierwotnego, weryfikacja ustawionych automatycznie typów kolumn (np. typ DATE w Oracle rejestrowany jest jako DATETIME co niekoniecznie jest pożądane), poprawne zdefiniowanie kolumn audytowych etc.

Następnie należy zadbać o zdefiniowanie właściwości takich jak okresy obowiązywania czy wartości domyślne.

Jeżeli słownik ma być zasilany wyłącznie jednorazowo, najpierw należy wykonać kolejny krok – tj. import danych z Excela, a dopiero później wykonać czynności związane z doparametryzowaniem słownika, tj.:

  • ustawieniem walidatorów kolumnowych,
  • dodaniem dziedzin,
  • ustawieniem domyślnego formatowania.

Krok 3: Import danych ze skoroszytu, w którym dane były dotychczas utrzymywane

Najczęściej występującymi wyzwaniami podczas importu danych ze skoroszytów Excel są:

  • Formuły wyliczeniowe w kolumnach, które chcemy importować: same dane, które będą importowane, zlokalizowane są w jednym z plików XML, które składają się na „paczkę” w postaci pliku widzianego przez nas w systemie operacyjnym jako .xlsx. Aby się o tym przekonać, wystarczy zmienić rozszerzenie skoroszytu z .xlsx na .zip i sprawdzić efekt. Jeżeli w kolumnie skoroszytu zamiast wartości jest formuła wyliczeniowa, to mechanizm pobierający dane ze skoroszytu „widzi” zawartość jako ciąg znaków i import zapewne nie zakończy się pomyślnie.
  • Błędy typów danych, polegające najczęściej na zapisaniu dat lub liczb jako tekst. Jak się o tym przekonać? Po otworzeniu takiego skoroszytu będziemy widzieć przy problematycznej komórce stosowną informację w postaci ostrzeżenia (zielony trójkąt w rogu komórki). Przykładowo, jeżeli w takiej komórce jest wartość 23,45 ale przechowywana jako tekst, to przy imporcie separator dziesiętny nie zostanie prawidłowo rozpoznany, bo w pliku XML separatorem dziesiętnym jest zawsze „kropka”, a to, że widzimy po otwarciu Excela „przecinek” to wyłącznie jest narzucony format wyświetlania.
  • Kolumny ukryte z widoku użytkownika, które mogą spowodować problem przy dopasowaniu importowanych danych do struktury słownika.
  • Różnego rodzaju dopiski, komentarze wpisane bezpośrednio w wartość komórki.

Reasumując:

przed przystąpieniem do importu warto przejrzeć dokładnie importowany skoroszyt (a raczej konkretny arkusz skoroszytu zawierający dane, które będziemy importować do słownika) pod kątem wychwycenia oraz usunięcia powyższych problemów. Zaoszczędzi nam to sporo czasu a być może in nerwów podczas próby zaimportowania danych do słownika.

Jeśli po zastosowaniu porad z tego artykułu nadal napotykasz na trudności, koniecznie do nas napisz!

Wspólnie zdiagnozujemy przyczynę i znajdziemy rozwiązanie. 

Mateusz Hoffmann

Business Development Manager
mh@sanmargar.pl