Перейти к основному содержимому
Версия: 2.0.x

base64_to_bitmap

Перед импортом данных bitmap в Selena необходимо сериализовать данные и закодировать их в строку Base64. При импорте строки Base64 в Selena необходимо преобразовать строку в данные bitmap. Эта функция используется для преобразования строк Base64 в данные bitmap.

Эта функция поддерживается начиная с версии 2.3.

Синтаксис

BITMAP base64_to_bitmap(VARCHAR bitmap)

Параметры

bitmap: поддерживаемый тип данных — VARCHAR. Перед загрузкой данных Bitmap в Selena вы можете использовать Java или C++ для создания объекта BitmapValue, добавления элемента, сериализации данных и кодирования их в строку Base64. Затем передайте строку Base64 в качестве входного параметра в эту функцию.

Возвращаемое значение

Возвращает значение типа BITMAP.

Примеры

Создайте базу данных с именем bitmapdb и таблицу с именем bitmap. Используйте Stream Load для импорта данных JSON в bitmap_table. В процессе импорта используйте base64_to_bitmap для преобразования строки Base64 из файла JSON в данные bitmap.

  1. Создайте базу данных и таблицу в Selena. В этом примере создается таблица Primary Key.

    CREATE database bitmapdb;
    USE bitmapdb;
    CREATE TABLE `bitmap_table` (
    `tagname` varchar(65533) NOT NULL COMMENT "Tag name",
    `tagvalue` varchar(65533) NOT NULL COMMENT "Tag value",
    `userid` bitmap NOT NULL COMMENT "User ID"
    ) ENGINE=OLAP
    PRIMARY KEY(`tagname`, `tagvalue`)
    COMMENT "OLAP"
    DISTRIBUTED BY HASH(`tagname`)
    PROPERTIES (
    "replication_num" = "3",
    "storage_format" = "DEFAULT"
    );
  2. Используйте Stream Load для импорта данных JSON в bitmap_table.

    Предположим, есть файл JSON с именем simpledata. Этот файл имеет следующее содержимое, и userid является строкой в кодировке Base64.

    {
    "tagname": "Product", "tagvalue": "Insurance", "userid":"AjowAAABAAAAAAACABAAAAABAAIAAwA="
    }

    Используйте base64_to_bitmap для преобразования userid в значение bitmap.

    curl --location-trusted -u <username>:<password>\
    -H "columns: c1,c2,c3,tagname=c1,tagvalue=c2,userid=base64_to_bitmap(c3)"\
    -H "label:bitmap123"\
    -H "format: json"\
    -H "jsonpaths: [\"$.tagname\",\"$.tagvalue\",\"$.userid\"]"\
    -T simpleData http://host:port/api/bitmapdb/bitmap_table/_stream_load
  3. Запросите данные из bitmap_table.

    mysql> select tagname,tagvalue,bitmap_to_string(userid) from bitmap_table;
    +--------------+----------+----------------------------+
    | tagname | tagvalue | bitmap_to_string(`userid`) |
    +--------------+----------+----------------------------+
    | Product | Insurance | 1,2,3 |
    +--------------+----------+----------------------------+
    1 rows in set (0.01 sec)