跳到主要内容
版本: 最新版本-3.5

base64_to_bitmap

在将 Bitmap 数据导入 StarRocks 之前,需要对数据进行序列化,并将数据编码为 Base64 字符串。 当您将 Base64 字符串导入 StarRocks 时,您需要将字符串转换为 Bitmap 数据。 此函数用于将 Base64 字符串转换为 Bitmap 数据。

此函数从 v2.3 开始支持。

语法

BITMAP base64_to_bitmap(VARCHAR bitmap)

参数

bitmap:支持的数据类型为 VARCHAR。 在将 Bitmap 数据加载到 StarRocks 之前,您可以使用 Java 或 C++ 来创建一个 BitmapValue 对象,添加元素,序列化数据,并将数据编码为 Base64 字符串。 然后,将 Base64 字符串作为输入参数传递给此函数。

返回值

返回 BITMAP 类型的值。

示例

创建一个名为 bitmapdb 的数据库和一个名为 bitmap 的表。 使用 Stream Load 将 JSON 数据导入 bitmap_table。 在此过程中,使用 base64_to_bitmap 将 JSON 文件中的 Base64 字符串转换为 Bitmap 数据。

  1. 在 StarRocks 中创建一个数据库和一个表。 在此示例中,创建了一个 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

    假设有一个名为 simpledata 的 JSON 文件。 该文件具有以下内容,并且 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)