Невозможно принять данные JSON с помощью Mem SQL ТРУБОПРОВОД В ПРОЦЕДУРУ - PullRequest
0 голосов
/ 13 марта 2020
I am facing issue while ingesting a JSON data via PIPELINE to a table using Store Procedure.

I see NULL values are getting inserted in the table.

Хранимая процедура SQL:

    DELIMITER //
    CREATE OR REPLACE PROCEDURE ops.process_users(GENERIC_BATCH query(GENERIC_JSON json)) AS
    BEGIN
        INSERT INTO ops.USER(USER_ID,USERNAME)
        SELECT GENERIC_JSON::USER_ID, GENERIC_JSON::USERNAME
        FROM GENERIC_BATCH;
    END //
    DELIMITER ;

Mem SQL Используемая конвейерная команда:

    CREATE OR REPLACE PIPELINE ops.tweet_pipeline_with_sp AS LOAD DATA KAFKA ‘<KAFKA_SERVER_IP>:9092/user-topic’

    INTO PROCEDURE ops.process_users FORMAT JSON ;

JSON Данные отправлены в Kafka topi c: {«USER_ID»: «111», «USERNAME»: «Test_User»}

Table DDL Statement: CREATE TABLE ops.USER (USER_ID INTEGER, USERNAME VARCHAR(255));

Ответы [ 2 ]

0 голосов
/ 27 марта 2020

Получил решение от форума Mem SQL!

Ниже приведены сценарии конвейерной и хранимой процедуры, которые работали для меня,

CREATE OR REPLACE PIPELINE OPS.TEST_PIPELINE_WITH_SP 
AS LOAD DATA KAFKA '<KAFKA_SERVER_IP>/TEST-TOPIC'
INTO PROCEDURE OPS.PROCESS_USERS(GENERIC_JSON <- %) FORMAT JSON ;


DELIMITER //
CREATE OR REPLACE PROCEDURE ops.process_users(GENERIC_BATCH query(GENERIC_JSON json)) AS
BEGIN
INSERT INTO ops.USER(USER_ID,USERNAME)
SELECT GENERIC_JSON::USER_ID, json_extract_string(GENERIC_JSON,'USERNAME')
FROM GENERIC_BATCH;
END //
DELIMITER ;
0 голосов
/ 24 марта 2020

Похоже, что вы получаете помощь на форумах Mem SQL на https://www.memsql.com/forum/t/unable-to-ingest-json-data-with-pipeline-into-procedure/1702/3 В частности, это похоже на разницу :: (что дает JSON) и ::$ (который конвертируется в SQL типов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...