Ich versuche, eine Zeile in einer Cassandra Tabelle einzufügen die Abfrage untereine lange oder ein Datum String-Darstellung eines Zeitmarkenwertes Cassandra Erwartete
INSERT INTO battery_time_series_by_producer JSON '{"timestamp":1514413581,"customer":"com.fetchcore-cloud.local","stream":"/sw8/sensor/battery","producer":"freight18","data":{"battery_level":1,"is_charging":true,"timestamp":1514413581}}';
mit und ich erhalte die folgenden Fehler
Expected a long or a datestring representation of a timestamp value, but got an Integer: 1514413581
Der Feldzeitstempel in der Tabelle hat tatsächlich das Timestamp-Format. Aber wie kann ich das auf eine lange gegeben konvertieren, dass dies nur JSON ist
Meine Version von Cassandra ist 3.11.1
Ich denke, dass Cassandra Cql versucht, Json-Objekt zu Closed-Datentyp zu parsen, daher wird der Wert "1514413581" in Int konvertiert. Wenn Sie eine größere Zahl angeben, wird sie als lang geparst. Ein weiterer erwähnenswerter Punkt ist, dass der "Zeitstempel" -Typ eine Anzahl von Millisekunden seit der Standard-Basiszeit darstellt, die als Epoche bekannt ist. Die Werte in Ihrem Beispiel sind für mich sehr klein (z. B. Jahr 1970). Kurz gesagt, es wird entweder eine Zeichenfolge (z. B. "1514413581") in einem JSON-Objekt verwendet oder ein neuer Zeitstempelwert (z. B. 314431312345) – Apolozeus
Um .. Dank für den Kommentar. Ich denke, dass es etwas damit zu tun hat. Nur als Randnotiz. Ich glaube, die Epochenzeit ist die Anzahl von ** Sekunden ** seit 1970. Das würde mein Datum auf ungefähr heute bringen. https://en.wikipedia.org/wiki/Unix_time. Wie sind Sie zu einem so hohen Wert gekommen? – cjds
Es ist nur Konvention, können Sie aus cassandra doc überprüfen https://docs.datastax.com/de/cql/3.3/cql/cql_reference/timestamp_type_r.html?hl=timestamp%2Ctype – Apolozeus