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 数据。
-
在 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"
); -
使用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 -
从
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)