class Aerospike::Exp::HLL

HyperLogLog (HLL) expression generator. See {Exp}.

The bin expression argument in these methods can be a reference to a bin or the result of another expression. Expressions that modify bin values are only used for temporary expression evaluation and are not permanently applied to the bin. HLL modify expressions return the HLL bin’s value.

Constants

ADD
COUNT
DESCRIBE
INIT
INTERSECT_COUNT
MAY_CONTAIN
MODULE
SIMILARITY
UNION
UNION_COUNT

Public Class Methods

add(list, bin, policy: CDT::HLLPolicy::DEFAULT, index_bit_count: Exp.val(-1), min_hash_bit_count: Exp.val(-1)) click to toggle source

Create expression that adds values to a HLL set and returns HLL set. If HLL bin does not exist, use index_bit_count and min_hash_bit_count to create HLL set.

Examples

# Add values to HLL bin “a” and check count > 7 Exp.gt(

HLLExp.getCount(
  HLLExp.add(HLLPolicy.Default, Exp.val(list), Exp.val(10), Exp.val(20), Exp.hllBin("a"))),
Exp.val(7))

@param policy write policy, use {HLLPolicy#Default} for default @param list list bin or value expression of values to be added @param index_bit_count number of index bits expression. Must be between 4 and 16 inclusive. @param min_hash_bit_count number of min hash bits expression. Must be between 4 and 51 inclusive.

Also, index_bit_count + min_hash_bit_count must be <= 64.

@param bin HLL bin or value expression

# File lib/aerospike/exp/exp_hll.rb, line 54
def self.add(list, bin, policy: CDT::HLLPolicy::DEFAULT, index_bit_count: Exp.val(-1), min_hash_bit_count: Exp.val(-1))
  bytes = Exp.pack(nil, ADD, list, index_bit_count, min_hash_bit_count, policy.flags)
  add_write(bin, bytes)
end
add_read(bin, bytes, ret_type) click to toggle source
# File lib/aerospike/exp/exp_hll.rb, line 165
def self.add_read(bin, bytes, ret_type)
  Exp::Module.new(bin, bytes, ret_type, MODULE)
end
add_write(bin, bytes) click to toggle source
# File lib/aerospike/exp/exp_hll.rb, line 161
def self.add_write(bin, bytes)
  Exp::Module.new(bin, bytes, Exp::Type::HLL, MODULE | Exp::MODIFY)
end
describe(bin) click to toggle source

Create expression that returns index_bit_count and min_hash_bit_count used to create HLL bin in a list of longs. list is index_bit_count and list is min_hash_bit_count.

Examples

# Bin “a” index_bit_count < 10 Exp.lt(

ListExp.getByIndex(ListReturnType.VALUE, Exp::Type::INT, Exp.val(0),
  HLLExp.describe(Exp.hllBin("a"))),
Exp.val(10))
# File lib/aerospike/exp/exp_hll.rb, line 131
def self.describe(bin)
  bytes = Exp.pack(nil, DESCRIBE)
  add_read(bin, bytes, Exp::Type::LIST)
end
get_count(bin) click to toggle source

Create expression that returns estimated number of elements in the HLL bin.

Examples

# HLL bin “a” count > 7 Exp.gt(HLLExp.getCount(Exp.hllBin(“a”)), Exp.val(7))

# File lib/aerospike/exp/exp_hll.rb, line 64
def self.get_count(bin)
  bytes = Exp.pack(nil, COUNT)
  add_read(bin, bytes, Exp::Type::INT)
end
get_intersect_count(list, bin) click to toggle source

Create expression that returns estimated number of elements that would be contained by the intersection of these HLL objects.

Examples

# Intersect count of HLL bins “a” and “b” HLLExp.getIntersectCount(Exp.hllBin(“a”), Exp.hllBin(“b”))

# Intersect count of local HLL list with bin “b” HLLExp.getIntersectCount(Exp.val(list), Exp.hllBin(“b”))

# File lib/aerospike/exp/exp_hll.rb, line 106
def self.get_intersect_count(list, bin)
  bytes = Exp.pack(nil, INTERSECT_COUNT, list)
  add_read(bin, bytes, Exp::Type::INT)
end
get_similarity(list, bin) click to toggle source

Create expression that returns estimated similarity of these HLL objects as a 64 bit float.

Examples

# Similarity of HLL bins “a” and “b” >= 0.75 Exp.ge(HLLExp.getSimilarity(Exp.hllBin(“a”), Exp.hllBin(“b”)), Exp.val(0.75))

# File lib/aerospike/exp/exp_hll.rb, line 117
def self.get_similarity(list, bin)
  bytes = Exp.pack(nil, SIMILARITY, list)
  add_read(bin, bytes, Exp::Type::FLOAT)
end
get_union(list, bin) click to toggle source

Create expression that returns a HLL object that is the union of all specified HLL objects in the list with the HLL bin.

Examples

# Union of HLL bins “a” and “b” HLLExp.getUnion(Exp.hllBin(“a”), Exp.hllBin(“b”))

# Union of local HLL list with bin “b” HLLExp.getUnion(Exp.val(list), Exp.hllBin(“b”))

# File lib/aerospike/exp/exp_hll.rb, line 78
def self.get_union(list, bin)
  bytes = Exp.pack(nil, UNION, list)
  add_read(bin, bytes, Exp::Type::HLL)
end
get_union_count(list, bin) click to toggle source

Create expression that returns estimated number of elements that would be contained by the union of these HLL objects.

Examples

# Union count of HLL bins “a” and “b” HLLExp.getUnionCount(Exp.hllBin(“a”), Exp.hllBin(“b”))

# Union count of local HLL list with bin “b” HLLExp.getUnionCount(Exp.val(list), Exp.hllBin(“b”))

# File lib/aerospike/exp/exp_hll.rb, line 92
def self.get_union_count(list, bin)
  bytes = Exp.pack(nil, UNION_COUNT, list)
  add_read(bin, bytes, Exp::Type::INT)
end
init(index_bit_count, bin, min_hash_bit_count: Exp.int_val(-1), policy: CDT::HLLPolicy::DEFAULT) click to toggle source

Create expression that creates a new HLL or resets an existing HLL with minhash bits.

@param policy write policy, use {HLLPolicy#Default} for default @param index_bit_count number of index bits. Must be between 4 and 16 inclusive. @param min_hash_bit_count number of min hash bits. Must be between 4 and 51 inclusive.

Also, index_bit_count + min_hash_bit_count must be <= 64. Optional.

@param bin HLL bin or value expression

# File lib/aerospike/exp/exp_hll.rb, line 33
def self.init(index_bit_count, bin, min_hash_bit_count: Exp.int_val(-1), policy: CDT::HLLPolicy::DEFAULT)
  bytes = Exp.pack(nil, INIT, index_bit_count, min_hash_bit_count, policy.flags)
  add_write(bin, bytes)
end
may_contain(list, bin) click to toggle source

Create expression that returns one if HLL bin may contain all items in the list.

Examples

# Bin “a” may contain value “x” ArrayList<Value> list = new ArrayList<Value>() list.add(Value.get(“x”)) Exp.eq(HLLExp.mayContain(Exp.val(list), Exp.hllBin(“a”)), Exp.val(1))

# File lib/aerospike/exp/exp_hll.rb, line 143
def self.may_contain(list, bin)
  bytes = Exp.pack(nil, MAY_CONTAIN, list)
  add_read(bin, bytes, Exp::Type::INT)
end