Используя SQL-запрос Phoenix, нам нужно получить предыдущие версии данных для столбцов с типом данных, отличным от varchar.Если у нас нет запроса с использованием Phoenix для получения всех данных для версий, как мы можем сделать то же самое с использованием запросов Hbase, для которых используемый тип данных Phoenix отличается от varchar?
Я создал таблицу, в которой один из столбцов имеет тип данных double, а для версий было установлено значение 5.
Теперь, после обновления одной и той же строки в таблице пятью различными значениями, мыдолжен иметь возможность получить все версии суммы при запуске запроса HBase для получения версий.Но все значения закодированы в HBase, и с помощью Phoenix невозможно получить все эти версии.
create table DDL which was used:
CREATE TABLE INVOICE(
ID INTEGER NOT NULL PRIMARY KEY,
AMOUNT DOUBLE
)
COLUMN_ENCODED_BYTES = 0,
VERSIONS = 5
Upserting five times on the row having ID as 1:
UPSERT INTO INVOICE VALUES(1,1.0);
UPSERT INTO INVOICE VALUES(1,2.0);
UPSERT INTO INVOICE VALUES(1,3.0);
UPSERT INTO INVOICE VALUES(1,4.0);
UPSERT INTO INVOICE VALUES(1,5.0);
To get all the versions of the AMOUNT column:
scan "INVOICE",{COLUMNS => "0:AMOUNT",VERSIONS=>5}
Я ожидаю, что при сканировании таблицы HBase для версий в столбце будут получены все версии.ценности.Здесь в части COLUMN + CELL 'value =' должны иметь все предыдущие значения суммы.Но я получил что-то следующее в качестве вывода:
ROW COLUMN+CELL
\x80\x00\x00\x01 column=0:AMOUNT, timestamp=1558440485579, value=\xC0\x14\x00\x00\x00\x00\x00\x01
\x80\x00\x00\x01 column=0:AMOUNT, timestamp=1558440483513, value=\xC0\x10\x00\x00\x00\x00\x00\x01
\x80\x00\x00\x01 column=0:AMOUNT, timestamp=1558440483506, value=\xC0\x08\x00\x00\x00\x00\x00\x01
\x80\x00\x00\x01 column=0:AMOUNT, timestamp=1558440483497, value=\xC0\x00\x00\x00\x00\x00\x00\x01
\x80\x00\x00\x01 column=0:AMOUNT, timestamp=1558440483458, value=\xBF\xF0\x00\x00\x00\x00\x00\x01
1 row(s) in 0.1190 seconds