partition
Syntax
partition(partitionCol, keys)
Arguments
partitionCol is a STRING indicating the partitioning column. For COMPO partitions, specify either of the partitioning columns.
keys is a scalar or vector without NULL values, indicating the partition(s) to select. Please refer to the following table about how to specify keys for each partition scheme:
Partition Scheme | How to Specify keys |
---|---|
VALUE | The associated element(s) in the partitioning vector |
RANGE | The index of the associated partition(s), starting from 0 |
HASH | Hash modulus(moduli) of the partitioning column |
LIST | The index of the associated partition(s), starting from 0 |
Note: The partitions specified by keys must be within the partition range of the partitioned table, otherwise an error would occur indicating the specified keys are out of range.
Details
Select one or more partitions from a partitioned table. It can only be used in the where clause of a SQL statement. This function makes it convenient to select specific partitions for HASH, LIST and RANGE partitions.
Examples
dbName="dfs://test_topic_partition"
if(existsDatabase(dbName)){
dropDatabase(dbName)
}
db=database(dbName, LIST, ["A"+string(1..10), "A"+string(11..20), "A"+string(21..30)])
n=20
date=rand(2012.01.01..2012.01.10, n)
sym=rand("A"+string(1..30), n)
qty=rand(100, n)
t=table(date, sym, qty)
pt=db.createPartitionedTable(t, `pt, `sym).append!(t)
select * from pt where partition(sym, 0 1)
date | sym | qty |
---|---|---|
2012.01.06 | A4 | 32 |
2012.01.03 | A10 | 34 |
2012.01.03 | A17 | 51 |
2012.01.04 | A14 | 47 |
2012.01.06 | A16 | 50 |
2012.01.04 | A15 | 56 |
2012.01.04 | A16 | 80 |
2012.01.02 | A11 | 69 |
2012.01.01 | A14 | 68 |
dbName="dfs://test_topic_partition"
if(existsDatabase(dbName)){
dropDatabase(dbName)
}
db1=database("", HASH, [SYMBOL, 10])
db2=database("", LIST, ["A"+string(1..10), "B"+string(1..10), "C"+string(1..10)])
db=database(dbName, COMPO, [db1, db2])
n=20
id=symbol(string(rand(uuid(), n)))
sym=rand(["A"+string(1..10), "B"+string(1..10), "C"+string(1..10)].flatten(), n)
qty=rand(100, n)
t=table(id, sym, qty)
pt=db.createPartitionedTable(t, `pt, `id`sym).append!(t)
select * from pt where partition(id, 2 3), partition(sym, 1 2) order by id, sym, qty
id | sym | vqty |
---|---|---|
19e8591f-8b7c-c611-bd3e-582d00a414430 | C6 | 69 |
2db9074a-0502-27ad-06d5-8d1bf3270245 | B4 | 2 |
73c1ae86-51c9-3e04-c1dd-6c4b62d8a129 | B9 | 65 |
99d78d5e-14bb-dc7e-7210-7bc5ad0cda5d | C10 | 11 |