2017-06-21 3 views
0

Ich habe den Ortstyp als statische Spalte definiert.Wie Abfrage Cassandra mit statischen Spalte?

Ich möchte Daten auf statische Spalte filtern.

select count(*) from device_stats_by_location where locationtype = "garage"; 

Aber ich bin vor Ausnahme -

InvalidRequest: code=2200 [Invalid query] message="Predicates on non-primary-key columns (locationtype) are not yet supported for non secondary index queries" 

So versucht ...

cqlsh:device_data> CREATE INDEX locationtype_indx on device_stats_by_location (locationtype); 

die Fehlermeldung ...

InvalidRequest: code=2200 [Invalid query] message="Secondary indexes are not allowed on static columns" 

Meine Frage ist - Wie kann ich statische Spalte in CQL-Abfrage verwenden?

+1

Warum haben Sie statische Spalte verwendet? Was ist dein Anwendungsfall? –

+0

locationtype ist für alle Zeilen mit demselben Partitionsschlüssel festgelegt –

+0

Datenmodell => ** locationid (Pk), endof10minwindow (Ck1), Gerätekategorie (Ck2), Geräteanzahl, Positionstyp (S), Region (S) ** => für eine gegebene locationid wird sagen, dass 2000 Reihen zusammen gruppiert sind, die den gleichen locationtype und region haben => das ist, warum ** sie als statisch spezifiziert haben ** => was ist der beste Ansatz um die Daten nach locationtype abzufragen? –

Antwort

1

In Cassandra können Sie Daten mit statischen Spalte nicht filtern, Index und materialisierte Ansicht auf statische Spalte nicht erstellen können.

Sie können

  • Ändern der statischen Spalte zu regulären Spalte Verwendung verwenden Sie einen der folgenden Lösung tun und erstellen Index oder materialisierten Ansicht

  • eine andere Tabelle erstellen und die location als Partitionsschlüssel machen und locationid, endof10minwindow, Gerätekategorie als Clustering-Schlüssel. Immer wenn Sie die Basistabelle einfügen/aktualisieren, fügen Sie auch/update für diese Tabelle ein. Jetzt können Sie Daten mit dem Ortstyp filtern.

Verwandte Themen