Seite 2 von 3

Re: Tabellen zusammenfassen

Verfasst: Fr Nov 27, 2020 3:16 pm
von Juniper
Ich habe übrigens damals nachgerechnet, es entstehen über 133.049.344.986 Datensätze, bei joins auch.
Nur mal quergerechnet:

Wenn jeder dieser Datensätze nur 1bit braucht, dann wären dass schon 16,5 GB...

Re: Tabellen zusammenfassen

Verfasst: Fr Nov 27, 2020 3:32 pm
von Athomas
Ich habe übrigens damals nachgerechnet, es entstehen über 133.049.344.986 Datensätze, bei joins auch.
Sollten die enthaltenen "Datümer" für den Abgleich doch eine Rolle spielen, müssten wir nochmal reden :) ...

Re: Tabellen zusammenfassen

Verfasst: Fr Nov 27, 2020 5:43 pm
von Athomas
Nur mal quergerechnet:

Wenn jeder dieser Datensätze nur 1bit braucht, dann wären dass schon 16,5 GB...
Das ist ja kein Problem - solange man diese Bits nicht gleichzeitig braucht :) !

Ich bin übrigens kein Freund des nachträglichen Veränderns von Posts - mal abgesehen von Rechtschreibfehlern...

Re: Tabellen zusammenfassen

Verfasst: Mo Nov 30, 2020 11:36 am
von Juniper
Athomas hat geschrieben: Fr Nov 27, 2020 3:09 pm Ein "merge" ist symmetrisch, d.h. Du bekommst auch Sätze mit, die in der jeweils anderen Datei keinen Partner haben. Willst Du das?
Die Komplexität der entstehenden Datei lässt sich nicht a priori abschätzen, im Extremfall (alle IDs gleich) hätte man ca. 100 Milliarden Sätze - dann dürfte R auch in die Knie gehen :D ...

Hier mein "Experiment":

Code: Alles auswählen

library(data.table)

Anzahl_ABC <- 34374
un_dt_ABC  <- c(207, sample(207:20112, 14000), 20112)                     # vorkommende IDs

dt_ABC <- data.table(ID        = sample(un_dt_ABC, Anzahl_ABC, replace=TRUE),
                     Datum_ABC = as.Date(sample(17532:18593, Anzahl_ABC, replace=TRUE), origin=("1970-01-01")),
                     Differenz = runif(Anzahl_ABC))
Diff_Lücken <- sample(1:Anzahl_ABC, 5000)
dt_ABC[Diff_Lücken, Differenz:=NA_real_]

#---------------------

Anzahl_DEF <- 3870639
un_dt_DEF  <- c(162, sample(162:20038, 16000), 20038)

dt_DEF <- data.table(ID        = sample(un_dt_DEF, Anzahl_DEF, replace=TRUE),
                     Datum_DEF = as.Date(sample(17532:18593, Anzahl_DEF, replace=TRUE), origin=("1970-01-01")),
                     Zahl_1    = sample(1:1000, Anzahl_DEF, replace=TRUE),
                     Zahl_2    = sample(1:100,  Anzahl_DEF, replace=TRUE),
                     Ort       = sample(c("Hückeswagen", "Ostrhauderfehn","Wurmannsquick"),  Anzahl_DEF, replace=TRUE)
                     )

driss <- merge(dt_ABC, dt_DEF, by="ID", allow.cartesian=TRUE)
Hi Athomas,
Das sieht gut aus. Ich habe viel ersetzt, blicke aber noch nicht ganz durch (Ist jetzt meine 3. Woche mit R). Er wirft bei mir folgende Fehlermeldung: "Fehler in sample(un_dt_ABC, Anzahl_ABC, replace = TRUE) :
konnte Funktion "sample" nicht finden"
Ich habe ABC und sample durch den echten Namen ersetzt...
Vielen Dank im vorraus!
Juniper

Re: Tabellen zusammenfassen

Verfasst: Mo Nov 30, 2020 12:19 pm
von Athomas
Ich habe ABC und sample durch den echten Namen ersetzt...
:?: "sample" ist eine ("eingebaute") Funktion des base-Packages, da gibt es nichts zu ersetzen!
Ich habe damit lediglich Spieldaten erzeugt, um den anschließenden Ablauf darstellen zu können...

So wie ich das sehe, brauchst Du keine Spieldaten, wenn Du echte hast!?
Wenn Du was nicht verstehst, kannst Du gerne fragen - dafür sind wir hier, und wir lachen auch nicht :) !

Re: Tabellen zusammenfassen

Verfasst: Mo Nov 30, 2020 1:19 pm
von Juniper
OK, d.H. ich brauche nura driss <- ...?
Und vor allem davor dient nur der Spieldatenerzeugung?
Vielen Dank!!!
Juniper

Re: Tabellen zusammenfassen

Verfasst: Mo Nov 30, 2020 1:24 pm
von Juniper
Nur mit der Funktion driss <- ... bekomme ich folgende Fehlermeldung: Fehler: kann Vektor der Größe 1.1 GB nicht allozieren. Der Datensatz bleibt leider zu groß. Oder habe ich was wichtiges vergessen?
Es grüßt euch herzlich
Juniper

Re: Tabellen zusammenfassen

Verfasst: Mo Nov 30, 2020 1:47 pm
von EDi
Was hast du denn noch so anderes Zeugs im RAM liegen? Vielleicht reicht es dir ja schon mal den RAM aufzuräumen.

Dabei auch nicht das Betriebssystem außer acht lassen, ich bin immer wieder erstaunt was da (unnötig) verbraten wird...

Falls das zu aufwändig ist: besorg dir einfach größere RAM-Riegel und baut die ein. Die Kosten dafür sind ja verglichen zum Aufwand relativ gering.

Re: Tabellen zusammenfassen

Verfasst: Mo Nov 30, 2020 2:27 pm
von Athomas
... bekomme ich folgende Fehlermeldung: Fehler: kann Vektor der Größe 1.1 GB nicht allozieren.
Was dabei rauskommt, ist von der tatsächlichen Verteilung der IDs in den Dateien abhängig - ich hatte ein gleichmäßiges Auftreten innerhalb des bekannten Spektums unterstellt, dann gehts! Wenn sich die IDs irgendwo knubbeln, kann es im Extremfall bis zu den 133 Millarden Datensätzen gehen - bei denen auch keine Speicheraufrüstung helfen würde :( !

Da Du die Daten nicht weitergeben darfst, noch ein Vorschlag - zeig bitte die IDs (oder, wenn die auch geheim sind, eine Umcodierung davon), und ich stricke ein Beispiel um dieses Gerüst herum.

Re: Tabellen zusammenfassen

Verfasst: Mo Nov 30, 2020 4:49 pm
von Juniper
Hi Athomas,
Es ist super lieb von dir, dass du dir soviel Mühe gibst! Dass weiß ich echt zu schätzen! Es ist folgendes: In den nächsten Monaten werdee ich immer wieder Tabellen dieser Größe verknüpfen, toll wäre also eine allgemeingültige Lösung.
Wäre es denn möglich, innerhalb der Tabelle zu sortieren nahc der ID und dann die Tabelle in 10 Teile teilen, aber nur an bestimmten Stellen? Also nicht in 10 Teile, die gleich groß sind, sondern dass ich beispielsweise bei ID 50 teile, und dann bei 100,...? Wenn ich in der anderen Tabelle bei den gleichen IDs trenne, habe ich mehrere kleine Tabellen, die müsste ich ja dann problemlos zusammenfügen können, oder?!
HG
Juniper