base64_to_bitmap
StarRocks にビットマップデータをインポートする前に、データをシリアライズし、Base64 文字列としてエンコードする必要があります。Base64 文字列を StarRocks にインポートする際には、その文字列をビットマップデータに変換する必要があります。この関数は、Base64 文字列をビットマップデータに変換するために使用されます。
この関数は v2.3 からサポートされています。
Syntax
BITMAP base64_to_bitmap(VARCHAR bitmap)
Parameters
bitmap: サポートされているデータ型は VARCHAR です。StarRocks にビットマップデータをロードする前に、Java または C++ を使用して BitmapValue オブジェクトを作成し、要素を追加し、データをシリアライズして Base64 文字列としてエンコードします。その後、この関数の入力パラメータとして Base64 文字列を渡します。
Return value
BITMAP 型の値を返します。
Examples
bitmapdb という名前のデータベースと bitmap という名前のテーブルを作成します。Stream Load を使用して JSON データを bitmap_table にインポートします。このプロセス中に、base64_to_bitmap を使用して JSON ファイル内の Base64 文字列をビットマップデータに変換します。
-
StarRocks でデータベースとテーブルを作成します。この例では、主キーテーブルを作成します。
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=OLAPPRIMARY 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をビットマップ値に変換します。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)