web-dev-qa-db-ja.com

cassndraテーブルを照会するときの「入力時に実行可能な代替なし」エラー

Cassandraのようなテーブルがあります:

CREATE TABLE vroc.sensor_data (
    dpnode text,
    year int,
    month int,
    day int,
    data_timestamp bigint,
    data_sensor text,
    dsnode text,
    data_quality double,
    data_value blob,
    PRIMARY KEY ((dpnode, year, month, day), data_timestamp, data_sensor, dsnode)
) WITH read_repair_chance = 0.0
   AND dclocal_read_repair_chance = 0.1
   AND gc_grace_seconds = 864000
   AND bloom_filter_fp_chance = 0.01
   AND caching = { 'keys' : 'ALL', 'rows_per_partition' : 'NONE' }
   AND comment = ''
   AND compaction = { 'class' : 'org.Apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold' : 32, 'min_threshold' : 4 }
   AND compression = { 'chunk_length_in_kb' : 64, 'class' : 'org.Apache.cassandra.io.compress.LZ4Compressor' }
   AND default_time_to_live = 0
   AND speculative_retry = '99PERCENTILE'
   AND min_index_interval = 128
   AND max_index_interval = 2048
   AND crc_check_chance = 1.0;

ただし、以下のクエリを実行すると:

SELECT dpnode, "year", "month", "day", data_timestamp, data_sensor, dsnode, data_quality, data_value
FROM vroc.sensor_data 
WHERE dpnode="PSACAB" and "year"=2016 and "month"=11 and day=28;

私はこの例外を受け取ります:

com.datastax.driver.core.exceptions.SyntaxError: line 2:44 no viable alternative at input 'and' (...FROM vroc.sensor_data where dpnode=["PSACA]B" and...)
  com.datastax.driver.core.exceptions.SyntaxError: line 2:44 no viable alternative at input 'and' (...FROM vroc.sensor_data where dpnode=["PSACA]B" and...)

ここで何が間違っているのか分かりませんか?

6
Luckylukee

これはトリックを行う必要があります:

select dpnode, year, month, day, data_timestamp, data_sensor, dsnode, data_quality, data_value from vroc.sensor_data where dpnode='PSACAB' and year = 2016 and month = 1 and day = 28;

基本的に、文字列は'でエスケープする必要があります

6
Marko Švaljek