Apache Cassandra Float Anomalien
Ich habe heute Morgen etwas in meine Apache Cassandra 4.0 (beta 3) Datenbank erstellt, nämlich die Coronaerkrankungen und den Inzidenzwert für die Stadt Essen. Dabei ist mir etwas aufgefallen. Obwohl ich den Inzidenzwert als FLOAT abgespeichert hat, speichert Cassandra manche Werte so ab:
Andere Werte sind wiederum normal. Warum Cassandra das so macht, weiß ich nicht. Eigentlich gibt es dazu keinen Grund. Obwohl ich das System sehr schätze, bin ich über diese Eigenart verwirrt.
Vielleicht ist das noch eine Eigenart der Beta-Version und in der Produktivversion ist das wieder verschwunden.
Witzig fand ich auch. Ich hatte die Tabelle erst anders aufgebaut. Nämlich so, dass es noch Tabellen für essen_erkrankungen_datum und essen_inzidenzwert_datum und das die datum Spalte fehlte.
Mit ALTER TABLE Essen DROP essen_inzidenzwert_datum und ALTER TABLE Essen DROP essen_erkrankungen_datum habe ich die beiden Spalten gelöscht. Ich brauche ja für beide Werte, Erkrankungen und Inzidenzwert, nur ein Datum.
Mit ALTER TABLE Essen ADD Datum date; (date ist der Feldtyp), habe ich das Datum hinzugefügt.
Apache Cassandra speichert das Datum in diesem Format ‚yyyy-mm-dd‘. Die Anführungsstriche sind sehr wichtig. Ohne die akzeptiert die Datenbank das Datum nicht.
Dann hatte ich bei essen_inzdidenzwert eine Kommazahl eingeben. 47,40 wird sowieso nicht akzeptiert, sondern nur 47.40. Aber auch das akzeptierte er nicht, denn die Spalte hatte ich als VARINT deklariert.
Also habe ich dann wieder mit ALTER TABLE Essen DROP essen_inzidenzwert die Spalte gelöscht mit der Hoffnung, dass die Spalte auch wirklich gelöscht worden wäre und damit auch der VARINT Typ.
Bei ALTER TABLE Essen ADD essen_inzidenzwert float kam eine Fehlermeldung, dass ich das nicht machen könne.
Er muss also die alten Werte irgendwo noch gespeichert haben. Da ich auch keine großartige Lust hatte, mich auf Spurensuche zu begeben, habe ich die neue Spalte dann halt essen_inzidenzwert_ genannt.
Ich weiß, es ist nicht professionell genug, aber damit kann ich als Privatperson leben.
Die Coronastatistiken eigenen sich ja wunderbar für eine Auswertung für solche Programmiersprachen mit R, Python und vielleicht auch Julia.