日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

RoaringBitmap

RoaringBitmap是一種高效的Bitmap壓縮算法,目前已被廣泛應用在各種語言和各種大數據平臺,適合計算超高基維的數據,常用于去重、標簽篩選、時間序列等計算中。本文為您介紹MaxCompute支持的RoaringBitmap相關函數。

基本原理

RoaringBitmap算法將32位和64位的整數劃分如下:

  • 將32位整數分成216個桶,高16位為桶號,低16位存儲于桶內。

  • 將64位整數分成232個桶,高32位用于在一級索引中確定哪一個RoaringBitmap容器將被用來存儲低32位的整數值。

  • 桶內數據的表示方式:Array Container(數組容器)、Bitmap Container(位圖容器)、Run Container(運行容器)。

RoaringBitmap的內部實現分為RoaringBitmap32和RoaringBitmap64,分別表示32位和64位的RoaringBitmap,但對于用戶來說,在使用時并不需要區分。

采用這種存儲結構,RoaringBitmap可以快速檢索一個特定的值。在做位圖計算(AND、OR、XOR)時,RoaringBitmap提供了相應的算法來高效地實現在容器之間的運算,使得RoaringBitmap無論在存儲和計算性能上都表現優秀。

使用限制

  • 在使用參數或返回值包含RoaringBitmap類型的函數時,需要先設置set odps.sql.type.system.odps2=true;,否則執行時會報類似于Semantic analysis exception - function or view xxx cannot be resolved的錯誤。

  • 創建數據表時,暫不支持創建RoaringBitmap類型的數據列。當前可以通過RB_SERIALIZE函數將RoaringBitmap數據序列化,并以Binary類型進行存儲,在使用時通過RB_DESERIALIZE將Binary類型數據反序列化成RoaringBitmap。

  • RoaringBitmap類型暫不支持屏顯,即所有輸出類型為RoaringBitmap的函數都會執行失敗,但是可以在外面嵌套一層rb_to_array,將RoaringBitmap類型轉換為整型數組再輸出。如SELECT rb_to_array(rb_build(array(1, 2, 2))); 語句的返回結果為[1, 2]

聚合函數

MaxCompute支持的RoaringBitmap相關的聚合函數如下。

函數名

功能描述

RB_BUILD_AGG

將整型列轉換為RoaringBitmap。

RB_CARDINALITY_AGG

構造RoaringBitmap計算整型列基數值。

RB_AND_AGG

計算RoaringBitmap列的交集,即獲取在所有RoaringBitmap中均存在的元素集合。

RB_OR_AGG

計算RoaringBitmap列的并集,即獲取所有RoaringBitmap中的全部元素集合。

RB_XOR_AGG

對RoaringBitmap列中所有數據進行異或計算,即獲取在RoaringBitmap中僅出現一次的元素集合。

RB_AND_CARDINALITY_AGG

計算RoaringBitmap列的交集的基數值。

RB_OR_CARDINALITY_AGG

計算RoaringBitmap列的并集的基數值。

RB_XOR_CARDINALITY_AGG

計算RoaringBitmap列的異或結果的基數值。

示例數據

以下聚合函數示例均基于t_test示例數據。以下是創建t_test并添加數據的命令示例。

DROP TABLE IF EXISTS t_test;
CREATE TABLE t_test
(
    col_int     INT
    ,col_bigint BIGINT
);

INSERT INTO t_test VALUES(1,1),(2,2),(1,2);

RB_BUILD_AGG

  • 命令格式

    roaringbitmap rb_build_agg(int|bigint col)
  • 命令說明

    將整型列轉換為RoaringBitmap類型。

  • 參數說明

    col:必填。屬性列,類型為INT或BIGINT。

  • 返回值說明

    返回col中所有數據的一個RoaringBitmap。返回規則如下:

    • col為INT類型時,返回RoaringBitmap32類型。

    • col為BIGINT類型時,返回RoaringBitmap64類型。

  • 示例

    • 示例1:查詢RoaringBitmap32類型數據。

      SELECT rb_to_array(rb_build_agg(col_int)) from t_test; 

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | [1,2]      |
      +------------+
    • 示例2:查詢RoaringBitmap64類型數據。

      SELECT rb_to_array(rb_build_agg(col_bigint)) FROM t_test; 

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | [1,2]      |
      +------------+

RB_CARDINALITY_AGG

  • 命令格式

    bigint rb_cardinality_agg(int|bigint col)
  • 命令說明

    通過構造RoaringBitmap計算整型列的基數值,等效于count(distinct)

  • 參數說明

    col:必填。屬性列,類型為INT或BIGINT。

  • 返回值說明

    返回整型列的基數值,類型為BIGINT。

  • 示例

    • 示例1:查詢col_int的基數值。

      SELECT rb_cardinality_agg(col_int) FROM t_test; 

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | 2          |
      +------------+
    • 示例2:查詢col_bigint的基數值。

      SELECT rb_cardinality_agg(col_bigint) FROM t_test; 

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | 2          |
      +------------+

RB_AND_AGG

  • 命令格式

    roaringbitmap rb_and_agg(roaringbitmap col)
  • 命令說明

    計算RoaringBitmap列的交集,即獲取在所有RoaringBitmap中均存在的元素集合。

  • 參數說明

    col:必填。屬性列,類型為RoaringBitmap。

  • 返回值說明

    返回RoaringBitmap列的交集,類型為RoaringBitmap。

  • 示例

    • 示例1

      SELECT rb_to_array(rb_and_agg(rb_build(array(col_int)))) FROM t_test;

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | []         |
      +------------+
    • 示例2

      SELECT rb_to_array(rb_and_agg(rb_build(array(col_bigint)))) FROM t_test;

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | []         |
      +------------+

RB_OR_AGG

  • 命令格式

    roaringbitmap rb_or_agg(roaringbitmap col)
  • 命令說明

    計算RoaringBitmap列的并集,即獲取所有RoaringBitmap中的全部元素集合。

  • 參數說明

    col:必填。屬性列,類型為RoaringBitmap。

  • 返回值說明

    返回RoaringBitmap列的并集,類型為RoaringBitmap。

  • 示例

    • 示例1

      SELECT rb_to_array(rb_or_agg(rb_build(array(col_int)))) FROM t_test;

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | [1,2]      |
      +------------+
    • 示例2

      SELECT rb_to_array(rb_or_agg(rb_build(array(col_bigint)))) FROM t_test;

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | [1,2]      |
      +------------+

RB_XOR_AGG

  • 命令格式

    roaringbitmap rb_xor_agg(roaringbitmap col)
  • 命令說明

    對RoaringBitmap列中所有數據進行異或計算,即獲取在RoaringBitmap中僅出現一次的元素集合。

  • 參數說明

    col:必填。屬性列,類型為RoaringBitmap。

  • 返回值說明

    返回RoaringBitmap列的異或結果,類型為RoaringBitmap。

  • 示例

    • 示例1

      SELECT rb_to_array(rb_xor_agg(rb_build(array(col_int)))) FROM t_test;

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | [2]        |
      +------------+
    • 示例2

      SELECT rb_to_array(rb_xor_agg(rb_build(array(col_bigint)))) FROM t_test;

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | [1]        |
      +------------+

RB_AND_CARDINALITY_AGG

  • 命令格式

    bigint rb_and_cardinality_agg(roaringbitmap col)
  • 命令說明

    計算RoaringBitmap列中所有RoaringBitmap的交集的基數。

  • 參數說明

    col:必填。屬性列,類型為RoaringBitmap。

  • 返回值說明

    返回RoaringBitmap列交集的基數值,類型為BIGINT。

  • 示例

    • 示例1

      SELECT rb_and_cardinality_agg(rb_build(array(col_int))) FROM t_test;

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | 0          |
      +------------+
    • 示例2

      SELECT rb_and_cardinality_agg(rb_build(array(col_bigint))) FROM t_test;

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | 0          |
      +------------+

RB_OR_CARDINALITY_AGG

  • 命令格式

    bigint rb_or_cardinality_agg(roaringbitmap col)
  • 命令說明

    計算RoaringBitmap列中所有RoaringBitmap的并集的基數。

  • 參數說明

    col:必填。屬性列,類型為RoaringBitmap。

  • 返回值說明

    返回RoaringBitmap列并集的基數值,類型為BIGINT。

  • 示例

    • 示例1

      SELECT rb_or_cardinality_agg(rb_build(array(col_int))) FROM t_test;

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | 2          |
      +------------+
    • 示例2

      SELECT rb_or_cardinality_agg(rb_build(array(col_bigint))) FROM t_test;

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | 2          |
      +------------+

RB_XOR_CARDINALITY_AGG

  • 命令格式

    bigint rb_xor_cardinality_agg(roaringbitmap col)
  • 命令說明

    計算RoaringBitmap列中所有RoaringBitmap的異或結果的基數。

  • 參數說明

    col:必填。屬性列,類型為RoaringBitmap。

  • 返回值說明

    返回RoaringBitmap列異或結果的基數值,類型為BIGINT。

  • 示例

    • 示例1

      SELECT rb_xor_cardinality_agg(rb_build(array(col_int))) FROM t_test;

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | 1          |
      +------------+
    • 示例2

      SELECT rb_xor_cardinality_agg(rb_build(array(col_bigint))) FROM t_test;

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | 1          |
      +------------+

函數列表

MaxCompute支持的RoaringBitmap相關的非聚合函數如下。

函數名

功能描述

RB_BUILD

將整型數組轉換為一個RoaringBitmap。

RB_TO_ARRAY

將RoaringBitmap轉換為整型數組,并對數組元素從小到大進行排序。

RB_CARDINALITY

計算RoaringBitmap的基數值。

RB_AND

計算兩個RoaringBitmap的交集。

說明

rb_and_null2empty函數也支持計算兩個RoaringBitmap的交集,且用法與RB_AND函數一致。

RB_OR

計算兩個RoaringBitmap的并集。

說明

rb_or_null2empty函數也支持計算兩個RoaringBitmap的并集,且用法與RB_OR函數一致。

RB_XOR

計算兩個RoaringBitmap的異或結果。

說明

rb_xor_null2empty函數也支持計算兩個RoaringBitmap的異或結果,且用法與RB_XOR函數一致。

RB_ANDNOT

計算兩個RoaringBitmap的補集。

說明

rb_andnot_null2empty函數也支持計算兩個RoaringBitmap的補集,且用法與RB_ANDNOT函數一致。

RB_AND_CARDINALITY

計算兩個RoaringBitmap的交集的基數。

說明

rb_and_null2empty_cardinality函數也支持計算兩個RoaringBitmap的交集的基數,且用法與RB_AND_CARDINALITY函數一致。

RB_OR_CARDINALITY

計算兩個RoaringBitmap的并集的基數。

說明

rb_or_null2empty_cardinality函數也支持計算兩個RoaringBitmap的并集的基數,且用法與RB_OR_CARDINALITY函數一致。

RB_XOR_CARDINALITY

計算兩個RoaringBitmap的異或結果的基數。

說明

rb_xor_null2empty_cardinality函數也支持計算兩個RoaringBitmap的異或結果的基數,且用法與RB_XOR_CARDINALITY函數一致。

RB_ANDNOT_CARDINALITY

計算兩個RoaringBitmap的補集的基數。

說明

rb_andnot_null2empty_cardinality函數也支持計算兩個RoaringBitmap的補集的基數,且用法與RB_ANDNOT_CARDINALITY函數一致。

RB_EQUAL

判斷兩個RoaringBitmap是否相等。

RB_NOT_EQUAL

判斷兩個RoaringBitmap是否不相等。

RB_CONTAINS

判斷第一個RoaringBitmap是否包含第二個RoaringBitmap。

RB_INTERSECT

判斷兩個RoaringBitmap是否相交。

RB_IS_EMPTY

判斷RoaringBitmap是否為空。

RB_MAXIMUM

獲取RoaringBitmap中的最大值。

RB_MINIMUM

獲取RoaringBitmap中的最小值。

RB_RANGE

獲取[start, end)范圍內RoaringBitmap的新集合。

RB_RANGE_CARDINALITY

獲取RoaringBitmap在[start, end)范圍內新集合的基數。

RB_FILL

獲取RoaringBitmap填充[start, end)之后的新集合。

RB_CLEAR

獲取RoaringBitmap清除[start, end)之后的新集合。

RB_SERIALIZE

將RoaringBitmap序列化成BINARY類型。

RB_DESERIALIZE

將BINARY反序列化為64位的RoaringBitmap。

RB_DESERIALIZE_32

將BINARY反序列化為32位的RoaringBitmap。

RB_BUILD

  • 命令格式

    roaringbitmap rb_build(array<int|bigint> a)
  • 命令說明

    將整型數組轉換為一個RoaringBitmap。

  • 參數說明

    a:必填。ARRAY數組類型,數組中的元素類型可以為INT或BIGINT,數組不能為空。

  • 返回值說明

    返回包含ARRAY中所有數據的一個RoaringBitmap。返回規則如下:

    • 如果a類型為ARRAY<INT>,返回RoaringBitmap32類型。

    • 如果a類型為ARRAY<BIGINT>,返回RoaringBitmap64類型。

  • 示例

    • 示例1:構建RoaringBitmap32類型數據。

      SELECT rb_to_array(rb_build(array(1, 2, 2))); 

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | [1,2]      |
      +------------+
    • 示例2:構建RoaringBitmap64類型數據。

      SELECT rb_to_array(rb_build(array(1L, 2L, 2L))); 

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | [1,2]      |
      +------------+

RB_TO_ARRAY

  • 命令格式

    array<int|bigint> rb_to_array(roaringbitmap a)
  • 命令說明

    將RoaringBitmap轉換為整型數組,并對數組元素從小到大進行排序。

  • 參數說明

    a:必填。

  • 返回值說明

    返回RoaringBitmap中的所有元素構成的一個整型數組。返回規則如下:

    • 如果a類型為RoaringBitmap32,返回ARRAY<INT>類型。

    • 如果a類型為RoaringBitmap64,返回ARRAY<BIGINT>類型。

  • 示例

    SELECT rb_to_array(rb_build(array(1, 2, 2)));

    返回結果如下。

    +------------+
    | _c0        |
    +------------+
    | [1,2]      |
    +------------+

RB_CARDINALITY

  • 命令格式

    bigint rb_cardinality(roaringbitmap a)
  • 命令說明

    計算RoaringBitmap的基數值。

  • 參數說明

    a:必填。

  • 返回值說明

    返回RoaringBitmap存儲的數據的基數值,類型為BIGINT。

  • 示例

    • 示例1

      SELECT rb_cardinality(rb_build(array(1, 2, 2)));

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | 2          |
      +------------+
    • 示例2

      -- 返回3
      SELECT rb_cardinality(rb_build(array(1L, 2L, 3L)));

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | 3          |
      +------------+

RB_AND

  • 命令格式

    roaringbitmap rb_and(roaringbitmap a, roaringbitmap b)
  • 命令說明

    計算兩個RoaringBitmap的交集。

  • 參數說明

    a:必填。RoaringBitmap類型數據。

  • b:必填。RoaringBitmap類型數據。

  • 返回值說明

    返回兩個RoaringBitmap的交集,類型為RoaringBitmap,當其中一個參數為NULL時,返回NULL。

    說明

    當其中一個參數為NULL時,rb_and_null2empty函數將會將為NULL的參數轉換空集。

  • 示例

    SELECT rb_to_array(rb_and(rb_build(array(1, 2)), rb_build(array(2, 3))));

    返回結果如下。

    +------------+
    | _c0        |
    +------------+
    | [2]        |
    +------------+

RB_OR

  • 命令格式

    roaringbitmap rb_or(roaringbitmap a, roaringbitmap b)
  • 命令說明

    計算兩個RoaringBitmap的并集。

  • 參數說明

    a:必填。RoaringBitmap類型數據。

  • b:必填。RoaringBitmap類型數據。

  • 返回值說明

    返回兩個RoaringBitmap的并集,類型為RoaringBitmap,當其中一個參數為NULL時,返回NULL。

    說明

    當其中一個參數為NULL時,rb_or_null2empty函數將會將為NULL的參數轉換空集。

  • 示例

    • 示例1

      SELECT rb_to_array(rb_or(rb_build(array(1, 2)), rb_build(array(2, 3))));

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | [1,2,3]    |
      +------------+
    • 示例2

      -- 返回[1,2,3]
      SELECT rb_to_array(rb_or(rb_build(array(1L, 2L)), rb_build(array(2L, 3L)))); 

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | [1,2,3]    |
      +------------+

RB_XOR

  • 命令格式

    roaringbitmap rb_xor(roaringbitmap a, roaringbitmap b)
  • 命令說明

    計算兩個RoaringBitmap的異或結果。

  • 參數說明

    a:必填。RoaringBitmap類型數據。

  • b:必填。RoaringBitmap類型數據。

  • 返回值說明

    返回兩個RoaringBitmap的異或結果,類型為RoaringBitmap,當其中一個參數為NULL時,返回NULL。

    說明

    當其中一個參數為NULL時,rb_xor_null2empty函數將會將為NULL的參數轉換空集。

  • 示例

    • 示例1

      SELECT rb_to_array(rb_xor(rb_build(array(1, 2)), rb_build(array(2, 3))));

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | [1,3]      |
      +------------+
    • 示例2

      SELECT rb_to_array(rb_xor(rb_build(array(1L, 2L)), rb_build(array(2L, 3L))));

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | [1,3]      |
      +------------+

RB_ANDNOT

  • 命令格式

    roaringbitmap rb_andnot(roaringbitmap a, roaringbitmap b)
  • 命令說明

    計算兩個RoaringBitmap的補集。

  • 參數說明

    a:必填。RoaringBitmap類型數據。

  • b:必填。RoaringBitmap類型數據。

  • 返回值說明

    返回兩個RoaringBitmap的補集,類型為RoaringBitmap。當其中一個參數為NULL時,返回NULL。

    說明

    當其中一個參數為NULL時,rb_andnot_null2empty函數將會將為NULL的參數轉換空集。

  • 示例

    • 示例1

      SELECT rb_to_array(rb_andnot(rb_build(array(1, 2)), rb_build(array(2, 3))));

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | [1]        |
      +------------+
    • 示例2

      -- 返回[1]
      SELECT rb_to_array(rb_andnot(rb_build(array(1L, 2L)), rb_build(array(2L, 3L))));

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | [1]        |
      +------------+

RB_AND_CARDINALITY

  • 命令格式

    bigint rb_and_cardinality(roaringbitmap a, roaringbitmap b)
  • 命令說明

    計算兩個RoaringBitmap的交集的基數。

  • 參數說明

    a:必填。RoaringBitmap類型數據。

  • b:必填。RoaringBitmap類型數據。

  • 返回值說明

    返回兩個RoaringBitmap的交集的基數值,類型為BIGINT,當其中一個參數為NULL時,返回NULL。

    說明

    當其中一個參數為NULL時,rb_and_null2empty_cardinality函數將會將為NULL的參數轉換空集。

  • 示例

    • 示例1

      SELECT rb_and_cardinality(rb_build(array(1, 2)), rb_build(array(2, 3)));

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | 1          |
      +------------+
    • 示例2

      -- 返回1
      SELECT rb_and_cardinality(rb_build(array(1L, 2L)), rb_build(array(2L, 3L)));

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | 1          |
      +------------+

RB_OR_CARDINALITY

  • 命令格式

    bigint rb_or_cardinality(roaringbitmap a, roaringbitmap b)
  • 命令說明

    計算兩個RoaringBitmap的并集的基數。

  • 參數說明

    a:必填。RoaringBitmap類型數據。

  • b:必填。RoaringBitmap類型數據。

  • 返回值說明

    返回兩個RoaringBitmap的并集的基數值,類型為BIGINT,當其中一個參數為NULL時,返回NULL。

    說明

    當其中一個參數為NULL時,rb_or_null2empty_cardinality函數將會將為NULL的參數轉換空集。

  • 示例

    • 示例1

      SELECT rb_or_cardinality(rb_build(array(1, 2)), rb_build(array(2, 3)));

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | 3          |
      +------------+
    • 示例2

      SELECT rb_or_cardinality(rb_build(array(1L, 2L)), rb_build(array(2L, 3L)));

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | 3          |
      +------------+

RB_XOR_CARDINALITY

  • 命令格式

    bigint rb_xor_cardinality(roaringbitmap a, roaringbitmap b)
  • 命令說明

    計算兩個RoaringBitmap的異或結果的基數。

  • 參數說明

    a:必填。RoaringBitmap類型數據。

  • b:必填。RoaringBitmap類型數據。

  • 返回值說明

    返回兩個RoaringBitmap的異或結果的基數值,類型為BIGINT,當其中一個參數為NULL時,返回NULL。

    說明

    當其中一個參數為NULL時,rb_xor_null2empty_cardinality函數將會將為NULL的參數轉換空集。

  • 示例

    • 示例1

      SELECT rb_xor_cardinality(rb_build(array(1, 2)), rb_build(array(2, 3)));

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | 2          |
      +------------+
    • 示例2

      -- 返回2
      SELECT rb_xor_cardinality(rb_build(array(1L, 2L)), rb_build(array(2L, 3L)));

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | 2          |
      +------------+

RB_ANDNOT_CARDINALITY

  • 命令格式

    bigint rb_andnot_cardinality(roaringbitmap a, roaringbitmap b)
  • 命令說明

    計算兩個RoaringBitmap的補集的基數。

  • 參數說明

    a:必填。RoaringBitmap類型數據。

  • b:必填。RoaringBitmap類型數據。

  • 返回值說明

    返回兩個RoaringBitmap的補集的基數值,類型為BIGINT,當其中一個參數為NULL時,返回NULL。

    說明

    當其中一個參數為NULL時,rb_andnot_null2empty_cardinality函數將會將為NULL的參數轉換空集。

  • 示例

    • 示例1

      -- 返回1
      SELECT rb_andnot_cardinality(rb_build(array(1, 2)), rb_build(array(2, 3)));

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | 1          |
      +------------+
    • 示例2

      SELECT rb_andnot_cardinality(rb_build(array(1L, 2L)), rb_build(array(2L, 3L)));

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | 1          |
      +------------+

RB_EQUAL

  • 命令格式

    bool rb_equal(roaringbitmap a, roaringbitmap b)
  • 命令說明

    判斷兩個RoaringBitmap是否相等。

  • 參數說明

    a:必填。RoaringBitmap類型數據。

  • b:必填。RoaringBitmap類型數據。

  • 返回值說明

    返回BOOLEAN類型。

  • 示例

    • 示例1

      SELECT rb_equal(rb_build(array(1, 2)), rb_build(array(2, 3)));

      返回結果如下。

      +------+
      | _c0  |
      +------+
      | false |
      +------+
    • 示例2

      SELECT rb_equal(rb_build(array(1, 2)), rb_build(array(2, 1)));

      返回結果如下。

      +------+
      | _c0  |
      +------+
      | true |
      +------+

RB_NOT_EQUAL

  • 命令格式

    bool rb_not_equal(roaringbitmap a, roaringbitmap b)
  • 命令說明

    判斷兩個RoaringBitmap是否不相等。

  • 參數說明

    a:必填。RoaringBitmap類型數據。

  • b:必填。RoaringBitmap類型數據。

  • 返回值說明

    返回BOOLEAN類型。

  • 示例

    • 示例1

      SELECT rb_not_equal(rb_build(array(1, 2)), rb_build(array(2, 3)));

      返回結果如下。

      +------+
      | _c0  |
      +------+
      | true |
      +------+
    • 示例2

      SELECT rb_not_equal(rb_build(array(1, 2)), rb_build(array(2, 1)));

      返回結果如下。

      +------+
      | _c0  |
      +------+
      | false |
      +------+

RB_CONTAINS

  • 命令格式

    bool rb_contains(roaringbitmap a, roaringbitmap b)
  • 命令說明

    判斷第一個RoaringBitmap是否包含第二個RoaringBitmap。

  • 參數說明

    a:必填。RoaringBitmap類型數據。

  • b:必填。RoaringBitmap類型數據。

  • 返回值說明

    返回BOOLEAN類型。

  • 示例

    • 示例1

      SELECT rb_contains(rb_build(array(1, 2)), rb_build(array(2, 3)));

      返回結果如下。

      +------+
      | _c0  |
      +------+
      | false |
      +------+
    • 示例2

      SELECT rb_contains(rb_build(array(1, 2, 3)), rb_build(array(1, 2)));

      返回結果如下。

      +------+
      | _c0  |
      +------+
      | true |
      +------+

RB_INTERSECT

  • 命令格式

    bool rb_intersect(roaringbitmap a, roaringbitmap b)
  • 命令說明

    判斷兩個RoaringBitmap是否相交。

  • 參數說明

    • a:必填。RoaringBitmap類型數據。

    • b:必填。RoaringBitmap類型數據。

  • 返回值說明

    返回BOOLEAN類型。

  • 示例

    • 示例1

      SELECT rb_intersect(rb_build(array(1, 2)), rb_build(array(2, 3)));

      返回結果如下。

      +------+
      | _c0  |
      +------+
      | true |
      +------+
    • 示例2

      SELECT rb_intersect(rb_build(array(1, 2)), rb_build(array(3, 4)));

      返回結果如下。

      +------+
      | _c0  |
      +------+
      | false |
      +------+

RB_IS_EMPTY

  • 命令格式

    bool rb_is_empty(roaringbitmap a)
  • 命令說明

    判斷RoaringBitmap是否為空。

  • 參數說明

    • a:必填。RoaringBitmap類型數據。

    • b:必填。RoaringBitmap類型數據。

  • 返回值說明

    返回BOOLEAN類型。

  • 示例

    • 示例1

      SELECT rb_is_empty(rb_build(array(0, 1, 2)));

      返回結果如下。

      +------+
      | _c0  |
      +------+
      | false |
      +------+
    • 示例2

      SELECT rb_is_empty(rb_and(rb_build(array(0, 1, 2)), rb_build(array(3, 4, 5))));

      返回結果如下。

      +------+
      | _c0  |
      +------+
      | true |
      +------+

RB_MAXIMUM

  • 命令格式

    int|bigint rb_maximum(roaringbitmap a)
  • 命令說明

    獲取RoaringBitmap中的最大值。

  • 參數說明

    a:必填。RoaringBitmap類型數據。

  • 返回值說明

    返回INT或BIGINT類型。

  • 示例

    SELECT rb_maximum(rb_build(array(-1, 0, 1, 2)));

    返回結果如下。

    +------------+
    | _c0        |
    +------------+
    | 2          |
    +------------+

RB_MINIMUM

  • 命令格式

    int|bigint rb_minimum(roaringbitmap a)
  • 命令說明

    獲取RoaringBitmap中的最小值。

  • 參數說明

    a:必填。RoaringBitmap類型數據。

  • 返回值說明

    返回INT或BIGINT類型。

  • 示例

    SELECT rb_minimum(rb_build(array(-1, 0, 1, 2)));

    返回結果如下。

    +------------+
    | _c0        |
    +------------+
    | -1         |
    +------------+

RB_RANGE

  • 命令格式

    roaringbitmap rb_range(roaringbitmap a, bigint start, bigint end)
  • 命令說明

    獲取[start, end)范圍內RoaringBitmap的新集合。

  • 參數說明

    • a:必填。RoaringBitmap類型數據。

    • start:必填。BIGINT類型數據。

    • end:必填。BIGINT類型數據。

  • 返回值說明

    返回RoaringBitmap類型。

  • 示例

    • 示例1

      SELECT rb_to_array(rb_range(rb_build(array(-1, 0, 1, 2)), 0L, 2L));

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | [0,1]      |
      +------------+
    • 示例2

      SELECT rb_to_array(rb_range(rb_build(array(-1, 0, 1, 2)), 3L, 5L)); 

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | []         |
      +------------+

RB_RANGE_CARDINALITY

  • 命令格式

    bigint rb_range_cardinality(roaringbitmap a, bigint start, bigint end)
  • 命令說明

    獲取RoaringBitmap在[start, end)范圍內新集合的基數。

  • 參數說明

    • a:必填。RoaringBitmap類型數據。

    • start:必填。BIGINT類型數據。

    • end:必填。BIGINT類型數據。

  • 返回值說明

    返回BIGINT類型。

  • 示例

    • 示例1

      SELECT rb_range_cardinality(rb_build(array(-1, 0, 1, 2)), 0L, 2L);

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | 2          |
      +------------+
    • 示例2

      SELECT rb_range_cardinality(rb_build(array(-1, 0, 1, 2)), 3L, 5L);

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | 0          |
      +------------+

RB_FILL

  • 命令格式

    roaringbitmap rb_fill(roaringbitmap a, bigint start, bigint end)
  • 命令說明

    獲取RoaringBitmap填充[start, end)之后的新集合。

  • 參數說明

    • a:必填。RoaringBitmap類型數據。

    • start:必填。BIGINT類型數據。

    • end:必填。BIGINT類型數據。

  • 返回值說明

    返回RoaringBitmap類型。

  • 示例

    • 示例1

      SELECT rb_to_array(rb_fill(rb_build(array(-1, 0, 1, 2)), 0L, 2L));

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | [-1,0,1,2] |
      +------------+
    • 示例2

      SELECT rb_to_array(rb_fill(rb_build(array(-1, 0, 1, 2)), 3L, 5L));

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | [-1,0,1,2,3,4] |
      +------------+

RB_CLEAR

  • 命令格式

    roaringbitmap rb_clear(roaringbitmap a, bigint start, bigint end)
  • 命令說明

    獲取roaringbitmap清除[start, end)之后的新集合。

  • 參數說明

    • a:必填。RoaringBitmap類型數據。

    • start:必填。BIGINT類型數據。

    • end:必填。BIGINT類型數據。

  • 返回值說明

    返回RoaringBitmap類型。

  • 示例

    • 示例1

      SELECT rb_to_array(rb_clear(rb_build(array(-1, 0, 1, 2)), 0L, 2L));

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | [-1,2]     |
      +------------+
    • 示例2

      SELECT rb_to_array(rb_clear(rb_build(array(-1, 0, 1, 2)), 3L, 5L));

      返回結果如下。

      +------------+
      | _c0        |
      +------------+
      | [-1,0,1,2] |
      +------------+

RB_SERIALIZE

  • 命令格式

    bianry rb_serialize(roaringbitmap a)
  • 命令說明

    將RoaringBitmap序列化成BINARY類型。

  • 參數說明

    a:必填。RoaringBitmap類型數據。

  • 返回值說明

    返回RoaringBitmap序列化之后的BINARY類型。

  • 示例

    SELECT rb_serialize(rb_build(array(1L, 2L, 3L))); 

    返回結果如下。

    +------------+
    | _c0        |
    +------------+
    | =01=00=00=00=00=00=00=00=00=00=00=00:0=00=00=01=00=00=00=00=00=02=00=10=00=00=00=01=00=02=00=03=00 |
    +------------+

RB_DESERIALIZE

  • 命令格式

    roaringbitmap64 rb_deserialize(bianry a)
  • 命令說明

    將BINARY反序列化為64位的RoaringBitmap。

  • 參數說明

    a:必填。BINARY類型數據。

  • 返回值說明

    返回將BINARY反序列化后的64位RoaringBitmap。

  • 示例

    SELECT rb_to_array(rb_deserialize(rb_serialize(rb_build(array(1L, 2L, 3L))))); 

    返回結果如下。

    +------------+
    | _c0        |
    +------------+
    | [1,2,3]    |
    +------------+

RB_DESERIALIZE_32

  • 命令格式

    roaringbitmap32 rb_deserialize(bianry a)
  • 命令說明

    將BINARY反序列化為32位的RoaringBitmap。

  • 參數說明

    a:必填。BINARY類型數據。

  • 返回值說明

    返回將BINARY反序列化后的32位RoaringBitmap。

  • 示例

    SELECT rb_to_array(rb_deserialize_32(rb_serialize(rb_build(array(1, 2, 3))))); 

    返回結果如下。

    +------------+
    | _c0        |
    +------------+
    | [1,2,3]    |
    +------------+