clickhouse中外部字典中的数组声明和访问

5gfr0r5j  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(1)|浏览(433)

我正在使用clickhouse中的外部字典连接mongodb。它可以很好地处理整数和字符串,但当涉及数组(uint8)时,它会错误地说表不存在
错误:
代码:50,e.displaytext()=db::exception:未知类型数组(uint8),e.what()=db::exception
有没有办法在mongodb的外部命令和访问数组中声明数组(uint8)为属性?

4uqofj5v

4uqofj5v1#

当前不支持对字典使用复合类型。以下是所有支持的类型。

AttributeUnderlyingType getAttributeUnderlyingType(const std::string & type)
{
    static const std::unordered_map<std::string, AttributeUnderlyingType> dictionary{
        { "UInt8", AttributeUnderlyingType::UInt8 },
        { "UInt16", AttributeUnderlyingType::UInt16 },
        { "UInt32", AttributeUnderlyingType::UInt32 },
        { "UInt64", AttributeUnderlyingType::UInt64 },
        { "UUID", AttributeUnderlyingType::UInt128 },
        { "Int8", AttributeUnderlyingType::Int8 },
        { "Int16", AttributeUnderlyingType::Int16 },
        { "Int32", AttributeUnderlyingType::Int32 },
        { "Int64", AttributeUnderlyingType::Int64 },
        { "Float32", AttributeUnderlyingType::Float32 },
        { "Float64", AttributeUnderlyingType::Float64 },
        { "String", AttributeUnderlyingType::String },
        { "Date", AttributeUnderlyingType::UInt16 },
        { "DateTime", AttributeUnderlyingType::UInt32 },
    };

    const auto it = dictionary.find(type);
    if (it != std::end(dictionary))
        return it->second;

    throw Exception{"Unknown type " + type, ErrorCodes::UNKNOWN_TYPE};
}

相关问题