**Use case**
I'm using `ip_trie` on maxmind geoip databases. Given an IP address I want to find out what key was used (ie what network the IP comes under). But it seems it is not possible to look up the key field when using `dictGet`?

```
        <layout>
            <ip_trie/>
        </layout>
        <structure>
            <key>
                <attribute>
                    <name>network</name>
                    <type>String</type>
                </attribute>
            </key>
            <attribute>
                <name>geoname_id</name>
                <type>UInt32</type>
                <null_value>0</null_value>
            </attribute>
...
```

```
clickhouse :) select dictGet('geoip_city_blocks_ipv4', 'geoname_id', tuple(toUInt32(toIPv4('1.1.1.1')))) ;

┌─dictGet('geoip_city_blocks_ipv4', 'geoname_id', tuple(toUInt32(toIPv4('1.1.1.1'))))─┐
│                                                                             2077456 │
└─────────────────────────────────────────────────────────────────────────────────────┘

clickhouse :) select dictGet('geoip_city_blocks_ipv4', 'network', tuple(toUInt32(toIPv4('1.1.1.1')))) ;

Received exception from server (version 20.11.3):
Code: 36. DB::Exception: Received from localhost:9000. DB::Exception: No such attribute 'network': While processing dictGet('geoip_city_blocks_ipv4', 'network', tuple(toUInt32(toIPv4('1.1.1.1')))). 
```

ContainerType<Decimal64>,
            ContainerType<Decimal128>,
            ContainerType<Float32>,
            ContainerType<Float64>,
            ContainerType<StringRef>>
            maps;
        std::unique_ptr<Arena> string_arena;
    };
    void createAttributes();
    void loadData();
    template <typename T>
    void addAttributeSize(const Attribute & attribute);
    void calculateBytesAllocated();
    template <typename T>
    void createAttributeImpl(Attribute & attribute, const Field & null_value);
    Attribute createAttributeWithType(const AttributeUnderlyingType type, const Field & null_value);
    template <typename AttributeType, typename OutputType, typename ValueSetter, typename DefaultGetter>
    void getItemsByTwoKeyColumnsImpl(
        const Attribute & attribute, const Columns & key_columns, ValueSetter && set_value, DefaultGetter && get_default) const;
    template <typename AttributeType, typename OutputType, typename ValueSetter, typename DefaultGetter>
    void
    getItemsImpl(const Attribute & attribute, const Columns & key_columns, ValueSetter && set_value, DefaultGetter && get_default) const;
    template <typename T>
    void setAttributeValueImpl(Attribute & attribute, const T value);
    void setAttributeValue(Attribute & attribute, const Field & value);
    const Attribute & getAttribute(const std::string & attribute_name) const;
    Columns getKeyColumns() const;
    RowIdxConstIter ipNotFound() const;
    RowIdxConstIter tryLookupIPv4(UInt32 addr, uint8_t * buf) const;
    RowIdxConstIter tryLookupIPv6(const uint8_t * addr) const;