AWS Kinesis Analytics doesn't receive data on Real-time analytics

Viewed 516

I'm trying to implement AWS Kinesis Analytics but without success. I've implemented Kineses Stream, Kinesis Analytics schema with success. When I open Real-time analytics (SQL editor), I have this on the tab "Source data":

enter image description here

On the tab "Real-time analytics", I'm getting only "No rows have arrived yet.":

enter image description here

This is my SQL query:

-- ** Continuous Filter ** 
-- Performs a continuous filter based on a WHERE condition.
--          .----------.   .----------.   .----------.              
--          |  SOURCE  |   |  INSERT  |   |  DESTIN. |              
-- Source-->|  STREAM  |-->| & SELECT |-->|  STREAM  |-->Destination
--          |          |   |  (PUMP)  |   |          |              
--          '----------'   '----------'   '----------'               
-- STREAM (in-application): a continuously updated entity that you can SELECT from and INSERT into like a TABLE
-- PUMP: an entity used to continuously 'SELECT ... FROM' a source STREAM, and INSERT SQL results into an output STREAM
-- Create output stream, which can be used to send to a destination
CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (LASTNAME VARCHAR(8), AGE REAL);
-- Create pump to insert into output 
CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM"
-- Select all columns from source stream
SELECT STREAM LASTNAME, AGE
FROM "SOURCE_SQL_STREAM_001"
-- LIKE compares a string to a string pattern (_ matches all char, % matches substring)
-- SIMILAR TO compares string to a regex, may use ESCAPE
-- WHERE sector SIMILAR TO '%TECH%';

Why doesn't DESTINATION_SQL_STREAM receive any data?

Thank you!

Note: I'm sending the same data every 1 second by the command: while sleep 1; do aws kinesis put-record --stream-name Foo --partition-key 123 --data "{\"LASTNAME\": \"Hil3pet\", \"AGE\": 26}"; done

1 Answers

The problem was I forgot ; at the end of the queries sentences.

Instead:

CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (LASTNAME VARCHAR(8), AGE REAL);
CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM"
SELECT STREAM LASTNAME, AGE
FROM "SOURCE_SQL_STREAM_001"

The correct way:

CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (LASTNAME VARCHAR(8), AGE REAL);
CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM";
SELECT STREAM LASTNAME, AGE;
FROM "SOURCE_SQL_STREAM_001";
Related