Rozdział 4. Dostęp do Danych oraz Przetwarzanie Danych

Spis treści

Dostęp do Baz Danych
Aliasy
Eksplorator baz danych
Używanie poleceń SQL
Import i eksport danych oraz inne operacje na bazie danych
Importowanie arkuszy Ms Excel
Importowanie plików CSV
Eksportowanie danych do arkuszy MS Excel
Eksportowanie danych do pliku CSV
Otrzymanie listy kolumn dla tabeli bazy danych
Usuwanie tabeli bazy danych
Sprawdzanie istnienia tabeli bazy danych.
Tworzenie tabel w Gython
Tworzenie tabeli przez ręczną specyfikację danych
Tworzenie tabeli z danymi skopiowanymi z listy
Tworzenie tabeli przez wzięcie wartości z wyniku zapytania SQL
Użycie list do zdefiniowania nazw kolumn oraz formatu
Importowanie danych z zewnętrznych źródeł
Procedura Trans
Transformacja podstawowa
Słowo kluczowe where
słowa kluczowe keep in oraz drop in
Słowa kluczowe keep out oraz drop out Słowa kluczowe
format słowa kluczowego
Indexes
Kontrola przepływu
Tabele połączone
Słowo kluczowe rename
Łączenie tabel
Uwagi
Funkcja transformacji danych
Ustalenie kolejności danych(Procedura rank)
Ekspansja danych (procedura interpolate)
Próbkowanie danych (komenda sample )
Dzielenie Tabel (Procedura tableSplit)
Tabele transponowanie (Procedura transpose)
Porównanie dwóch tabel (Procedura tablesCompare)
Predefiniowane transformacje dla modeli Data Mining
Wstęp
Typy Transformacji
Użycie
Przykłady
Ważne uwagi
Bibliografia
-

Dostęp do Baz Danych

AdvancedMiner pozwala na pełną kontrolę baz danych przez SQL lub poprzez wbudowany eksplorator baz danych.

Aliasy

Alias bazy danych definiuje połączenie z bazą danych. Wymagany jest co najmniej jeden alias bazy danych, dla użytkownika, aby można było wykonywać transformacje danych. Bazy danych przechowują dane wejściowe i/lub wyjściowe. Dopuszczalne jest wykonywanie transformacji, które biorą dane wejściowe z kilku różnych baz danych i zapisują dane wyjściowe do jeszcze innej bazy danych. Warunkiem wykonania tego jest dostarczenie połączenia z bazą danych. Aby ustanowić połączenie z ścieżką URL bazy danych, użytkownik, hasło oraz sterownik bazy danych musi być konkretnie określony. Ustawienia te przechowywane są w aliasie bazy danych. Po zarejestrowaniu aliasu, użytkownik powinien tylko określić nazwę aliasu dla konkretnej bazy danych. Możliwe jest również utworzenie domyślnego aliasu, który używany jest do dostępu do bazy danych, w sytuacji gdy żaden inny alias jest określony. W przypadku pracy z jedną bazą danych, wygodne jest zarejestrowanie tylko domyślnego aliasu, bez używania jakichkolwiek innych aliasów.

Aliasy tworzone są w skryptach używających słów kluczowych dbAlias.

Składnia:

# domyślna nazwa aliasu
dbAlias([driver_name, database_URL, user_name, user_password])

# spersonalizowana nazwa aliasu
dbAlias([driver_name, database_URL, user_name, user_password], alias_name)

# ustawienie aliasu jako domyśln
dbAlias([driver_name, database_URL, user_name, user_password], alias_name, default = 1)

# użycie zakodowanego ciągu hasła(użycie "/AdvancedMiner/Server/password_coder" script)
dbAlias([driver_name, database_URL, user_name, user_password], passwordCoded)

# użycie katalogu tabeli oraz schematu
dbAlias([driver_name, database_URL, user_name, user_password, table_catalog, table_schema])
            

Przykład:

dbAlias(['com.mysql.jdbc.Driver', 'jdbc:mysql://127.0.0.1/test', '', ''],'myDB')
            

Zauważ, że aliasy mogą być definiowanie jako serwisy komponentów co jest opisane w rozdziale Komponenty. Odkąd funkcja aliasów wymaga parametru hasło, używanie skryptów nie jest bezpieczne. Zdecydowanie polecane jest użycie komponentów Serwisów do definiowania aliasów.

Dla bardziej zaawansowanej pracy z aliasami baz danych, istnieje obiekt AliasRegistry. Proszę odwołać się do części MetaModel dokumentacji javadoc – lista dostępnych funkcji.

Składnia:

dbAliasRegistry() # zwraca objekt AliasRegistry
            

Przykłady:

# uzyskanie aliasu z zadaną nazwą
dbAliasRegistry().getAlias('myDB')

# ustawienie domyślnego aliasu
dbAliasRegistry().setDefaultAlias('server')

# uzyskanie domyślnej nazwy aliasu
dbAliasRegistry().getDefaultAliasName()
            

Eksplorator baz danych

Użytkownik może uzyskać dostęp do danych bezpośrednio przy użyciu narzędzia Eksploratora Baz danych (Gałąź Aliasów w komponentach Serwisów). Przy pomocą tego narzędzia użytkownik może wykonać:

Używanie poleceń SQL

Używanie skryptów umożliwia automatyczne wykonywanie zapytań. Z procedurami SQL użytkownik może stworzyć sparametryzowane zapytania używając poleceń SQL. Zobacz opis poleceń SQL Opis języka SQL w bazie GDBase dla wbudowanej bazy danych wspieranej przez AdvancedMiner.

Składnia:

sql result, maxNumOfRows in alias use connectionNo:
sqlQuery
            

  • result - zmienna (tabeli) gdzie wyniki zapytania będą składowanie Domyślnie: None.

  • maxNumOfRows - maksymalna liczba wierszy zwracana przez zapytanie. Domyślnie nie ma limitu ilości zwróconych wierszy.

  • alias - alias bazy danych - opcjonalnie. Gdy nie jest określony, używany jest alias domyślny.

  • connectionNo - użycie konkretnego numeru połączenia (dodatnia liczba całkowita). Opcjonalnie.

Przykład 4.1. An SQL statement with a single connection

tableDelete("x")
tableDelete("y")
try:
    sql use 1:
        create table x (a VARCHAR(10))
    sql use 1:
        begin
    sql use 1:
        alter table x rename to y
    sql use 1:
        create table x (b VARCHAR(10))
    sql use 1:
        commit
finally:
    sql_close 1
print "finished..."
    

Output:

finished...
    

Zmienna wyniku nie jest tylko dwuwymiarową listą, ale także może być użyta do uzyskania informacji na temat kolumn. Używając polecenia:

print result.names

użytkownik może wyświetlić nazwy kolumn wyniku. Aby uzyskać więcej informacji na temat wyniku użyj polecenia:

print result.header

Przykład 4.2. Sql: names and header:

tableName = 'sqlStatementTest'
tableDelete(tableName)

# create new table
sql: CREATE TABLE $tableName (id INTEGER, value INTEGER) 

# insert values
for i in range(5):  
    v = i * 10;
    sql:
        INSERT INTO $tableName (id, value) VALUES ($i, $v)
        
# select from...
sql result:
    SELECT * FROM $tableName
    
print result.names
print result.header
    

Output:

['id', 'value']
[{'columnTypeName': 'INTEGER', 'precision': None, 'displaySize': 2147483647, 'columnName': 'id', 'columnType': 4, 'isNullable': 0, 'scale': 0}, {'columnTypeName': 'INTEGER', 'precision': None, 'displaySize': 2147483647, 'columnName': 'value', 'columnType': 4, 'isNullable': 0, 'scale': 0}]
    

Ostatecznie możliwe jest wyświetlenie sformatowanego w prosty sposób całego wyniku tabeli przy pomocy polecenia:

print result

Przykład 4.3. sql statement:

tableName = 'sqlStatementTest'
tableDelete(tableName)

# create a new table
sql: CREATE TABLE $tableName (id INTEGER, value INTEGER) 

# insert values
for i in range(5):  
    v = i * 10;
    sql:
        INSERT INTO $tableName (id, value) VALUES ($i, $v)
        
# select from...
sql result:
    SELECT * FROM $tableName

strFormat = '%-10s%-10s'
print strFormat % ('id','value')

for row in result:
    print strFormat % (row[0],row[1])

# set constraints involved with returned records, default 2000 resords
sql result, 2:
    SELECT * FROM $tableName
    
print 
print strFormat % ('id','value')
for row in result:
    print strFormat % (row[0],row[1])
    

Output:

id        value     
0         0         
1         10        
2         20        
3         30        
4         40        

id        value     
0         0         
1         10        
    

Notatka

W przykładach powyżej został użyty znak specjalny '$'. Używany jest on zawsze gdy użytkownik chce odwołać się do zmiennej globalnej.

Występuje jeszcze jedna okoliczność gdy '$' jest konieczny: Jeżeli użytkownik potrzebuje użyć znaku ‘#’. Ze względu na to, że skrypt interpretuje jako komentarz, musi być poprzedzony znakiem ‘$’

Przykład 4.4. Using the '#' character

# an error will occur
sql x:
    select *, '#' || Class from $tab_name
print x

# the correct version
sql x, 5:
    select *, '$#' || Class from $tab_name
print x