Datenverwaltung mit der Netezza für R

Dieser Abschnitt beschreibt die Datentypen der Netezza R-Bibliothek und einige grundlegende Funktionen, die eine Datenmanipulation ermöglichen.

nz.data.frame

Das wichtigste und häufigste Konstrukt ist das Objekt der Klasse " nz.data.frame. Die Funktion ' nz.data.frame() erzeugt einen Zeiger auf eine Tabelle im Netezza. Dieser Zeiger kann später verwendet werden, um Datenumwandlungen mit " nzApply oder " nzRun oder Data-Mining-Algorithmen durchzuführen. Es speichert keine Daten im lokalen Speicher, sondern stellt Metadaten bereit, die zur Bestimmung der richtigen Tabellenuntermenge (Spalten oder Zeilen oder beides) verwendet werden können, in der der Benutzercode ausgeführt werden soll. Es ist die Standardausgabe der meisten Datenmanipulationsfunktionen in der Netezza R-Bibliothek.
nzConnect("user", "password", "TT4-R040", "mm")
# create a reference to the table
adult nzadult = nz.data.frame("adult")
#Show the reference
nzadult
#SELECT
#ID,AGE,WORKCLASS,FNLWGT,EDUCATION,EDUCATION_NUM,MARITAL_STATUS,OCCUPATION,RELA#T
IONSHIP,RACE,SEX,CAPITAL_GAIN,CAPITAL_LOSS,HOURS_PER_WEEK,INCOME FROM ADULT
Die Klasse " nz.data.frame implementiert eine Reihe von Methoden zum Extrahieren einer Teilmenge ihrer Daten, zum Sammeln von Metainformationen ähnlich wie bei " data.frame und zum Arbeiten mit parallelen Datenverarbeitungsalgorithmen. Netezza kann für die Arbeit mit Schemata konfiguriert werden. Auf Tabellen mit Schemata kann auf die gleiche Weise verwiesen werden, wobei neben dem Tabellennamen auch der Schemaname verwendet wird.
# create a reference to the table adult
nzadult = nz.data.frame("a.adult")

Derzeit gibt es keine Unterstützung für den datenbankübergreifenden Zugriff.

Sowohl bei Schemata als auch bei Tabellen kann die Groß- und Kleinschreibung beachtet werden. In diesem Fall müssen sie in Anführungszeichen gesetzt werden. Es folgt ein Beispiel für den Zugriff auf die Tabelle "Adult" (Groß- und Kleinschreibung beachten) im Schema A (Groß- und Kleinschreibung nicht beachten).
# create a reference to the table Adult
nzadult = nz.data.frame('A."Adult"')

Bei Spalten in Datenbanktabellen wird in R immer zwischen Groß- und Kleinschreibung unterschieden. Spaltennamen, bei denen die Groß- und Kleinschreibung nicht beachtet wird, werden in die Standardgroßschreibung umgewandelt.

[,], $ und dim

Mit dem Operator " [,] kann eine Teilmenge von Spalten oder Zeilen oder beides angegeben werden.

Eine Einschränkung besteht darin, dass Zeilen nicht über ihre Nummern referenziert werden können, da es im Netezza keine fortlaufende Zeilennummerierung gibt. Stattdessen müssen Sie wertbasierte Bedingungen angeben, wie z. B
nzdf2 <- nzadult[nzadult$ID>20,]
Das Ergebnis jeder Auswahl kann teilweise mit Hilfe der Funktion " dim() überprüft werden, da in diesem Stadium nur Metadaten an R übertragen wurden. Diese Funktion gibt die Anzahl der Zeilen und Spalten zurück.
# there are 15 columns and 32561 rows in the "adult"
table dim(nzadult)
#[1] 32561 15
# selecting columns 5,6 and
7 t1 <- nzadult[,5:7]
#SELECT EDUCATION,EDUCATION_NUM,MARITAL_STATUS FROM ADULT
# t1 has only 3 columns
dim(t1)
#[1] 32561 3
# selecting columns by their
names (t2 <- nzadult$AGE)
#SELECT AGE FROM ADULT
# t2 has only 1
column dim(t2)
#[1] 32561 1
# selecting rows satisfying condition AGE>30 and EDUCATIONNUM=10
# from the subset of columns number 1,2,5,7 and 16
t3 <- nzadult[nzadult[,2]>30 & nzadult[,6] == 10,c(1,2,6,7,15)]
t3
#SELECT ID,AGE,EDUCATION_NUM,MARITAL_STATUS,INCOME FROM ADULT WHERE ( AGE >
#'30' ) AND ( EDUCATION_NUM = '10' )
# there are fewer rows and fewer columns than in the initial
table dim(t3)
#[1] 4226 5

kopf, Schwanz

Um eine Stichprobe der Daten zu erhalten, können Sie die Funktionen " head() und " tail() verwenden. Die Funktionen ziehen die angegebenen Daten vom Anfang oder Ende des Datensatzes.
head(t3,4)
# ID AGE EDUCATION_NUM MARITAL_STATUS INCOME
#1 28 54 10 Married-civ-spouse large
#2 56 43 10 Married-civ-spouse large
#3 92 37 10 Divorced small
#4 140 49 10 Married-civ-spouse large
tail(nzadult[,1:4])
# ID AGE WORKCLASS FNLWGT
#32556 32538 30 Private 345898
#32557 32542 41 Private 202822
#32558 32546 39 Local-gov 111499
#32559 32550 43 State-gov 255835
#32560 32554 32 Private 116138
#32561 32558 40 Private 154374

as.data.frame

Um den vollständigen Datensatz zu betrachten, muss er mit " as.data.frame" vom Netezza heruntergeladen werden. Da es sich bei Erwachsenen um einen großen Datensatz handelt, wird im folgenden Beispiel stattdessen einer der zuvor erstellten Datenrahment3) verwendet.
reg_df <- as.data.frame(t3)
head(reg_df)
# ID AGE EDUCATION_NUM MARITAL_STATUS INCOME
#1 28 54 10 Married-civ-spouse large
#2 56 43 10 Married-civ-spouse large
#3 92 37 10 Divorced small
#4 140 49 10 Married-civ-spouse large
#5 204 42 10 Never-married small
#6 264 59 10 Married-civ-spouse small
class(reg_df)
#[1] "data.frame"

as.nz.data.frame

Eine weitere nützliche Funktion zur Datenmanipulation ist " as.nz.data.frame. Es erstellt ein ' nz.data.frame aus einem anderen R-Objekt. Dann wird eine Netezza erstellt, und die übergebenen Daten werden in diese Tabelle eingefügt. Das erstellte Objekt verweist auf die neu erstellte Systemtabelle.

Dieses Beispiel zeigt, wie ein ' nz.data.frame aus einem anderen R-Objekt erstellt werden kann, in diesem Fall aus einer ' data.frame.
data(iris)
if (nzExistTable("nziris")) nzDeleteTable("nziris")
d = as.nz.data.frame(iris, "nziris")
d
#SELECT Sepal_Length,Sepal_Width,Petal_Length,Petal_Width,Species FROM nziris
class(d)
#[1] "nz.data.frame"
#attr(,"package")
#[1] "nzr"
Der Iris-Datensatz wird nun in einer Netezza " NZIRIS gespeichert. Wenn das zweite Argument nicht angegeben wird, wird der Tabellenname zufällig generiert.

Details zu

Die Funktionssignaturen mit Standardargumenten sind:
nz.data.frame(table1, case.sensitive = NULL)
as.data.frame(x1, row.names=NULL, optional=FALSE,
max.rows=NULL, order.by=TRUE, ...)
as.nz.data.frame(x2, table2 = NULL, distributeon = NULL, fast=TRUE)
Dabei gilt:
table1
Gibt den Namen einer Tabelle an, die auf dem Netezza in der aktuell verwendeten Datenbank verfügbar ist.
row.names
Nicht verwendet, aus Kompatibilitätsgründen enthalten.
optionaler
Nicht verwendet, aus Kompatibilitätsgründen enthalten.
x1
Gibt das Objekt an, das zu " data.frame gezwungen werden soll.
max.rows
Optional: Gibt die maximale Anzahl der Zeilen an, die an den Client übertragen werden sollen.
order.by
Optional: Gibt an, ob eine Bestellung verwendet werden soll.
x2
Gibt das Objekt an, das in nz.data.frame umgewandelt werden soll.
table2
Optional: Gibt den Tabellennamen an; wenn er nicht angegeben wird, wählt die Funktion einen Namen aus.
verteilt auf
Optional: Gibt den Spaltennamen an; die Datenverteilung auf dem Netezza basiert auf dieser Spalte.
schnell
Optional: wenn auf ' FALSE gesetzt, werden bei der Erstellung einer Tabelle mehrere Einfügungen vorgenommen. Bei dieser Option müssen die Daten lokal in einer temporären Datei gespeichert werden.