- Subscribe to RSS Feed
- Mark Question as New
- Mark Question as Read
- Float this Question for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page
Can't run Merge query to update or insert SQL Server table in PUTSQL in NiFi
- Labels:
-
Apache NiFi
Created on ‎10-03-2023 06:14 PM - edited ‎10-03-2023 07:18 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am trying to run a merge query in PUTSQL after using ExecuteSQL to pull from source database. I then pass the results through ConvertAvrotoJSON and then to convertJSONToSQL (set to INSERT since there is no UPSERT for SQL server database). I want to now run the merge query to update if the primary key is matched or insert if not, but I have been getting all sorts of errors
Input flowfile has the following attributes
sql.args.1.type
12
sql.args.1.value
A-001
sql.args.2.type
12
sql.args.2.value
DDD
sql.args.3.type
12
sql.args.3.value
2B
sql.args.4.type
12
sql.args.4.value
AAA
sql.args.5.type
12
sql.args.5.value
2B
sql.args.6.type
12
sql.args.6.value
BBB
sql.args.7.type
93
sql.args.7.value
1954-08-01 22:46:50.73
sql.catalog
CUSDB
sql.table
CUSTOMERS
uuid
50a3daf9-e5d8-422b-b6cb-9c92da723c55
I created the following attributes in UpdateAtributes
I directed this flowfile to UpdateAttribute where I created above properties like this
sql.args.1.type = 12; sql.args.1.value = ${vkey}
sql.args.2.type = 12; sql.args.2.value = ${AP}
sql.args.3.type = 12; sql.args.3.value = ${BP}
........
sql.args.7.type = 93; sql.args.7.value = ${LAST_MOD_DATE}
But when I check the results of the queue of the UpdateAtributes, I see that sql.args.1.type, sql.args.2.type, ... sql.args.7.type return blank values. I am doing something wrong in the way I have defined those properties?
Merge query in PutSQL looks like this
MERGE INTO CUSDB.dbo.CUSTOMERS as t
USING (select ? as vkey, ? as ap, ? as bp, ? as lm, ? as lnum, ? as wn, ? as LAST_MOD_DATE) s
ON t.EKEY = s.EKEY
WHEN MATCHED THEN
UPDATE SET
t.ap = s.ap,
t.bp = s.bp,
t.lm = s.lm,
t.lnum = s.lnum,
t.wn = s.wn,
t.LAST_MOD_DATE = s.LAST_MOD_DATE
WHEN NOT MATCHED THEN
INSERT (vkey, ap, bp, lm, lnum, wn, LAST_MOD_DATE) VALUES (?, ?, ?, ?, ?, ?, to_date(?, 'YYYY-MM-DD HH34:MI:SS'))
I get the error that all parameters are blank. Can someone please point me in the direction to resolve this issue. Why are the attributes going blank when I set them in UpdateAttributes?
Created ‎10-05-2023 08:02 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@LKB
Can you share screenshots of your UpdateAttribute processor configuration?
Are you using the advanced UI of the UpdateAttribute processor?
The UpdateAttribute processor is fairly simplistic in design. Without configuring the advanced UI, it simply can remove attributes or create/modify existing attributes. Each Attribute is defined by key:value pairs where the property name is the key and property value is the key. The Advanced UI allows for conditionally based attribute additions or modifications.
If you found any of the suggestions/solutions provided helped you with your issue, please take a moment to login and click "Accept as Solution" on one or more of them that helped.
Thank you,
Matt
