Исключение при запросе десятичных полей в Apache Drill - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь выполнить следующий запрос в Apache Drill. Я запрашиваю данные, хранящиеся в файлах паркета, используя следующий запрос

select 
    pan, count(*) as number_of_transactions,
    terminal_id,
    sum((cast(SETTLE_AMOUNT_IMPACT as double) * -1) / 100) as settle_amount_impact
from 
    dfs.`/iswdata/storage/products/superswitch/parquet/transactions`
where 
    pan like '506126%' 
    and terminal_id like '1%' 
    and sink_node_name like ('SWTDB%') 
    and source_node_name not like ('SWTDBLsrc')
    and tran_completed = 1
    and tran_reversed = 0
    and tran_postilion_originated = 1
    and tran_type = '01'
    --and pan like '506126%0011'
group by 
    pan, terminal_id

Схема для данных, которые я запрашиваю, выглядит следующим образом

 post_tran_id LONG 2
 post_tran_cust_id :LONG
 settle_entity_id :INTEGER
 batch_nr : INTEGER  
 prev_post_tran_id : LONG
 next_post_tran_id : LONG 
 sink_node_name : STRING 
 tran_postilion_originated : DECIMAL 
 tran_completed : DECIMAL
 tran_amount_req : DECIMAL 
 tran_amount_rsp : DECIMAL 
 settle_amount_impact : DECIMAL 
 tran_cash_req : DECIMAL 
 tran_cash_rsp : DECIMAL 
tran_currency_code : STRING 
tran_tran_fee_req : DECIMAL 
tran_tran_fee_rsp : DECIMAL 
tran_tran_fee_currency_code : STRING 
tran_proc_fee_req : DECIMAL 
tran_proc_fee_rsp : DECIMAL 
tran_proc_fee_currency_code : STRING 
settle_amount_req : DECIMAL 
settle_amount_rsp : DECIMAL 
settle_cash_req : DECIMAL 
settle_cash_rsp : DECIMAL 
settle_tran_fee_req : DECIMAL 
settle_tran_fee_rsp : DECIMAL 
settle_proc_fee_req : DECIMAL 
settle_proc_fee_rsp : DECIMAL 
settle_currency_code : STRING

Однако, когда я запускаю запрос к набору данных, я получаю следующее исключение

SYSTEM ERROR: ClassCastException: org.apache.drill.exec.vector.NullableDecimal28SparseVector cannot be cast to org.apache.drill.exec.vector.VariableWidthVector

Более того, та же ошибка возникает, когда я включаю десятичное поле в предложение select. Пожалуйста, есть что-то, что я пропускаю или делаю неправильно, Любой указатель будет высоко оценен

С уважением

1 Ответ

0 голосов
/ 30 апреля 2018

Десятичные значения в таблице паркета хранятся с использованием примитивного типа BINARY, но в настоящее время Drill не поддерживает десятичные числа, хранящиеся в двоичном виде.

Это будет исправлено в DRILL-6094 и будет доступно в версии 1.14.

...