実行計画でイベント・テーブルからデータを読み取る必要があるプロジェクトでDAS 3.0.1を使用しています。wso2の実行計画のイベント・テーブルからデータを読み取る方法DAS 3.0.1
実際にはイベントテーブルの1つの列のみを更新しようとしていますが、イベントテーブルで更新する代わりに、その列のみで新しいエントリを作成します。
実行計画にフィルタ条件を適用して特定の列のみを更新する方法はありますか。
お勧めします。
実行計画でイベント・テーブルからデータを読み取る必要があるプロジェクトでDAS 3.0.1を使用しています。wso2の実行計画のイベント・テーブルからデータを読み取る方法DAS 3.0.1
実際にはイベントテーブルの1つの列のみを更新しようとしていますが、イベントテーブルで更新する代わりに、その列のみで新しいエントリを作成します。
実行計画にフィルタ条件を適用して特定の列のみを更新する方法はありますか。
お勧めします。
表にatt1、att2、att3などの複数の属性が含まれている場合。次に、次のようにテーブルを定義できます(名前が "YourEventTableName"の場合)。
define table YourEventTableName (tableAtt1 int, tableAtt2 string, tableAtt3 string);
theresのストリーム(名前は「YourEventStream」である場合)は、
define stream YourEventStream (streamAtt int, streamAtt2 string);
としてストリームを定義することができ、あなたが更新するtableAtt1属性をYourEventStreamでstreamAtt属性値から必要と仮定tableAtt3として "aaa"を含む表の行に挿入します。
from YourEventStream
select streamAtt as tableAtt1
update YourEventTableName
on YourEventTableName.tableAtt3 == "aaa";
は、更新するtableAtt1 YourEventStreamでstreamAtt属性値から属性を、tableAtt3として「AAA」が含まれている表の行に必要とします。
from YourEventStream
select streamAtt as tableAtt1
update YourEventTableName
on YourEventTableName.tableAtt3 == streamAtt2;
詳細については、Siddhi documentationを参照してください。
あなたのクエリを検証する際にいくつかの問題が見つかりました。次は更新クエリです。
from InStream
select StatusDescription as StatusDescription
update NGPOCYTEST
ON NGPOCYTEST.StatusDescription == StatusDescription
クエリの「選択」セクションには、テーブルを更新する必要がある属性値が必要です。そして、それは "InStream"の属性でなければなりません。私はあなたの "InStream"で "StatusDescription"という属性を見つけることができません。とにかく、あなたが何をする必要があるか
from InStream
select $streamAttributeName$ as $tableColumnName$
update NGPOCYTEST
ON NGPOCYTEST.StatusDescription == $anotherStreamAttributeNameOrTheSame$
$ streamAttributeName $、である - あなたがから特定の列を更新する必要がある値を含むストリームの属性の名前。
$ tableColumnName $は - PNumber、CNumber、SCODE列など
$ anotherStreamAttributeNameOrTheSame $のいずれかになります、あなたのテーブルに更新する必要が列である - その値を含むストリームの属性の名前表を更新するためには、表の列とストリームの間で満足される必要があります。ストリームの属性名にすることができます
お返事ありがとうございます。私はそれを試みたが、それは私のために仕事をしなかった。
以下のパラメータを格納するイベントテーブルNGPOCYTESTが1つあります。 (PNumber int、CNumber文字列、SCode文字列、StatusDescription文字列、PCode文字列、UpDate文字列、PoDate文字列、CompanyID int、Product文字列);
私は以下のように1つのストリームNgStreamを持っています。 (CNumber文字列、CompanyAbbr列、NgID列、NgDate文字列、NgCategory文字列、NgReason列、DocumentNumber列、イベントタイプの文字列、ResolveCode列、ResolveDate文字列)
私は詳細ビジネス要件であなたを教えてみましょう。
httpリクエストとしてDASで受け取ったNgStream(NGPOCYTESTテーブルとは異なるパラメータを使用)があります。私はこのストリームをDAS(SQLサーバー)の別のテーブルに格納しています。 このリクエストを受け取った場合、NGPOCYTESTのステータス(1列のみ)をリアルタイムで更新する必要があります。 以下のように、ステータスをリアルタイムで更新する実行計画を作成しました。残念ながら、NGPOCYTESTのステータスは更新されていません。私が何か悪いことをしてくれたら教えてください。
@from(イベントテーブル= 'analytics.table'、jdbc.url = 'JDBC:のSQLServer:// localhostを:1433; databaseNameの= ###'、ユーザ名= '***'、パスワード= '****'、driver.name = 'com.microsoft.sqlserver.jdbc.SQLServerDriver'、table.name = 'NGPOCYTEST')
定義テーブルNGPOCYTEST(PNumber int、CNumber文字列、SCode文字列、StatusDescription文字列、PCode文字列、UpDate文字列、PoDate文字列、CompanyID int、Prdct文字列);
@import( 'NgStream:1.0.0') ストリームインストリームを定義する(CNumber列、CompanyAbbr列、NgID列、NgDate列、NgCategoryストリング、NgReason列、DocuNo列、EvType列、ResCode列、ResDate列)インストリームから
はNGPOCYTEST.StatusDescription == StatusDescription ON StatusDescription 更新NGPOCYTEST と応答のための
感謝をStatusDescriptionを選択 。 – Joney
これは私のために働いていません。以下のように私の回答を見てください。 – Joney
Ramindu、私は上記の構文で試しましたが、私のために働いていません。私は以下のように実行計画を掲載しました。それを見直して、欠けているものがあれば教えてください。 – Joney