プロセスのステップが長すぎる(または停止して移動しなかった)ときに警告するKinesis Analyticsクエリを作成しようとしています。Amazon Kinesis - ステップのタイムアウトを確認する
私は、段階的なプロセスが段階的に進むにつれて状態の更新を含むデータを持っています。私は、特定の時間内に次のステップが発生していないことを特定できるクエリを作成しようとしています(別名タイムアウト)。具体的には、単一のProcessIDが「開始済み」から「実行中」に5分以内に移動しないことを知りたいと思います。
私はデータベースでこれを行う方法を知っていますが、タイムスケールが絶えず動いていると混乱します。あなたが提供できるどんな助けも大歓迎です!
私のイベントは3つの属性があります: - 整数
ステータス -
ProcessIDのを文字列( "実行"、 "開始"、または "完了")
HappenedOn - 日時(例:2017年10月2日15:私はLEFT OUTER JOINを使用して自分自身にイベントテーブルを結合を使用しますが、どのように把握することはできません17:00)
私はデータベースでこれを行うだろうか(非キネシス)
これをリアルタイムで実行する事態。
#This will show me the start events that don't have a corresponding 'running' event
SELECT * FROM events as F
LEFT OUTER JOIN events as S on F.PROCESSID = S.PROCESSID AND S.STATUS = 'running'
WHERE F.STATUS = 'start' AND S.STATUS IS NULL;
ソリューションこれまでキネシス
でこのクエリは、保存して実行しますが、私は探しています何を私に与えるものではありません。
CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (E1PROCESSID integer,
E1STATUS varchar(7), E1HAPPENED varchar(32), E2PROCESSID integer,
E2STATUS varchar(7), E2HAPPENED varchar(32));
CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM"
SELECT F.PROCESSID, F.STATUS, F.HAPPENED, S.PROCESSID, S.STATUS, S.HAPPENED
FROM "SOURCE_SQL_STREAM_001" OVER (RANGE INTERVAL '5' MINUTE PRECEDING) AS F
LEFT OUTER JOIN "SOURCE_SQL_STREAM_001" AS S
ON F.PROCESSID = S.PROCESSID AND S.STATUS = 'running'
WHERE F.STATUS = 'start' AND S.STATUS IS NULL;
私は上記のクエリは、仕事を得ることができたとしても、私はイベントのみ(またはそれらの欠如)に対応するために見てキネシスを必要とする5分起こった後の値(例えば電流との間のDATEDIFFを行う必要があります日時とHAPPENED)。これを追加する方法についてのアドバイスをいただければ幸いです。
また、私はPRECEDINGではなくFOLLOWINGを使用する必要があるように感じますが、SQLパーサは私を(そして私はなぜ見ることができますか?私はまた、OVERウィンドウを追加するストリーム結合に混乱しています... LEFT?右?どちらも?
事前に感謝します。
とDroolsのキネシスAnalyticsを作成できますが([この記事]に登録しようhttp://docs.aws.amazon.com/kinesisanalytics/latest/dev/stream-joins-concepts.html)、SQLバリデーターをPRECEDINGではなくFOLLOWINGを使用しようとするたびに、私は怒ってしまいます。 –