如何解析cassandra

时间:2016-11-23 04:08:32

标签: json cassandra cassandra-2.1

我的文本类型列包含JSON值。

{
    "customer": [
        {
            "details": {
                "customer1": {
                    "name": "john",
                    "addresses": {
                        "address1": {
                            "line1": "xyz",
                            "line2": "pqr"
                        },
                        "address2": {
                            "line1": "abc",
                            "line2": "efg"
                        }
                    }
                }
                "customer2": {
                    "name": "robin",
                    "addresses": {
                        "address1": null
                    }
                }
            }
        }
    ]
}

如何使用查询提取列的'address1'JSON字段?

首先,我尝试获取JSON值,然后我将使用解析。

SELECT JSON customer from text_column;

根据我的查询,我收到以下错误。

  

com.datastax.driver.core.exceptions.SyntaxError:第1:12行没有可行性   输入'客户'的替代方案(SELECT [JSON]客户......)
  com.datastax.driver.core.exceptions.SyntaxError:第1:12行没有可行性   输入'customer'的替代方案(SELECT [JSON] customer ...)

Cassandra版本2.1.13

1 个答案:

答案 0 :(得分:1)

您无法在Cassandra v2.1.x CQL v3.2.x中使用SELECT JSON

对于Cassandra v2.1.x CQL v3.2.x:

SELECT之后唯一支持的操作是:

  • DISTINCT
  • COUNT(*)
  • COUNT(1)
  • column_name AS new_name
  • WRITETIME(column_name)
  • TTL(column_name)
  • dateOf(),now(),minTimeuuid(),maxTimeuuid(),unixTimestampOf(),typeAsBlob()和blobAsType()

在Cassandra v2.2.x CQL v3.3.x中介绍:SELECT JSON

  

使用SELECT语句,新的JSON关键字可用于将每一行作为单个JSON编码的映射返回。 SELECT语句行为的其余部分是相同的。

     

结果映射键与普通结果集中的列名相同。例如,像“SELECT JSON a,ttl(b)FROM ...”这样的语句会产生一个带有键的地图" a"和" ttl(b)"。但是,这是一个值得注意的例外:对于具有INSERT JSON行为的对称性,具有大写字母的区分大小写的列名称将用双引号括起来。例如,“SELECT JSON myColumn FROM ...”将导致一个地图键" \" myColumn \"" (注意转义的报价)。

     

地图值将是结果集值的JSON编码表示(如下所述)。