I have 2 source. Oracle and SQL Server. I need to extract CustomerID from both and match. I need 2 outputs.
Number of CustomerID from Oracle
Number of CustomerID matching between Oracle and SQL Server.
Then, generate report and send it through mail to user.
Source - Oracle
Source - MS SQL
Joiner (Detail outer join with oracle)
Router
Group 1: CustomerID(Oracle) is not null and CustomerID(SQL Server) is null
Group 2: CustomerID from both not null
AGG transformation after both group to get count
Union to merge it
Load into target file
Now I will have to use Shell script to prepare mail and send it to user.
Is there way we can do it simple? like assigning count to workflow variable and then use it in Email task?
goto workflow:
open the session task and navigate to components tab
edit on sucess email and set type t0 non-reusable
click on edit button in value
click on edit button next to email text
enter "%l" . this will get the count of records and send to you in the email body.
Related
SUPPOSE If i run any form in apex and then I will update any record then they get capture "APEX_PUBLIC_USER".
I want to capture my login user id by default using login URL
how to solve this ??
I'm not sure I understand what
I want to capture my login user id by default using login URL
means, but - user who is currently logged in is contained in :APP_USER so I suggest you use it.
The best practice in APEX to capture the audit fields (created_by, created, updated_by, update) is to use a trigger on the table. That way no coding is needed in apex itself.
Suppose you have a table rahul with a column "name" that you want to add records to via apex. Then you'd just create a form with the page item P1_NAME and let the database handle the other columns for you with the trigger.
create table rahul (
id number generated by default on null as identity
constraint koen_id_pk primary key,
name varchar2(255 char),
created date not null,
created_by varchar2(255 char) not null,
updated date not null,
updated_by varchar2(255 char) not null
)
;
-- triggers
create or replace trigger rahul_biu
before insert or update
on rahul
for each row
begin
if inserting then
:new.created := sysdate;
:new.created_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
end if;
:new.updated := sysdate;
:new.updated_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
end rahul_biu;
/
When I am trying to get the GUID (or any record level attribute) for Email or case using "Email Message" or Case from the Queue Item view, it is coming as blank/null.
Step 1-
Step 2-
How to get GUID of the selected record in Power Automate.
Ultimately I want selected Email's QueueItem ID, which is present in output of selected email object, but how to get it in PowerAutomate.
I believe I've done everything right when creating my graphite DB. Grafana can see the data but won't let me select all the fields when I try to "Add Query".
Output from my server shows that the DB is working:
show measurements
name: measurements
name
PORT
select * from "PORT"
name: PORT
time CardNo Counter Nodename PortNo value
---- ------ ------- -------- ------ -----
1511214407000000000 18 bcast_inpackets ALPRGAGQPN2 1 500
However, when I try to "Add Query" in Grafana, I can see PORT in "FROM" (which is what I want), but in the "WHERE" section, when I try to narrow my selection using CardNo, Counter, etc., it appears to behave randomly. If I select CardNo first, it will let me select 18 (see picture below), but then clicking "+" to add another criteria doesn't display the option for say "PortNo" (all I get is an empty dialog box). I can enter the field value manually (eg PortNo) but other users will be plotting graphs and won't necessarily know the underlying schema. Also, if I select Nodename first, then I can select CardNo (weird). I'd like it so the end user can specify ALL the fields (in this case CardNo, Counter, Nodename and PortNo).
My graphite template is this:
"[[graphite]]
# Determines whether the graphite endpoint is enabled.
enabled = true
database = "graphite"
# retention-policy = ""
bind-address = ":2003"
protocol = "tcp"
# consistency-level = "one"
templates = [ "ASR.PORT.* .measurement.Nodename.CardNo.PortNo.Counter"
]
and the data I feed to InfluxDB to test my setup is:
echo "ASR.PORT.ALPRGAGQPN2.18.1.bcast_inpackets 500 `date +%s`" | nc localhost 2003
Firstly, template is better written as:
"ASR.PORT.* .measurement.Nodename.CardNo.PortNo.field"
Which makes bcast_inpackets and any other value after PortNo into a field containing data. This reduces cardinality of series, which improves performance and scalability, by combining all counters into multiple fields on the same series as opposed to separate series with unique tags with their own value fields.
Grafana's influx query builder will filter tag values for the value of the already selected tags. In other words, if you select PortNo=1 and try to select another tag, only tag keys where PortNo=1 will be shown.
If you look at queries Grafana runs in browser, you will see something like show tag keys from PORT where PortNo='1' if PortNo=1 is already selected and different queries for other tags.
This is why you may not see other tags and why which tags you see depends on the tags already selected. This is by design so if you want something different you will need to adjust the schema by, for example, making PortNo and CardNo into fields instead of tags.
You might also be interested in InfluxGraph which can query InfluxDB via Graphite API and also supports same template configuration as InfluxDB.
How can I overcome this {Ajax call returned server error ORA-01403: no data found for} problem? Problem arises ,When I want to set Order_Status_Field value 2 in IG where query was Order_Status_Id=1.
My IG query was :
SELECT P.ORDER_ID, P.ORDER_STATUS_ID FROM ORDER_DETAILS P WHERE P.ORDER_STATUS_ID=1;
My Workspace Name: ZISHAN
User: ZISHANIIUC#GMAIL.COM
Pass: 123
Problem Page No: 3 (Order Report)
1. Before Updating Order Status:
2. After Updating Order Status:
I saw your are using standard "Interactive Grid - Automatic Row Processing (DML)" process, which is an AJAX approach. this apex behaviour is a call ajax using json format for data. so you have a filter on your sql query
SELECT T.ORDER_ID,
T.TABLE_ID,
T.TAKEN_BY,
T.ORDER_STATUS_ID,
T.TOTAL_COST
FROM ORDER_DETAILS T
WHERE T.ORDER_STATUS_ID=2
and you want to update your filter column (data has change) it's seem like apex do not find the prevouis data filter and return no_data_found (not really sure what happen ) but for solution : .
put your filter in interactive grid --> action button ---> filter
or
write your own custom process
When i tried do alter the process from the "Interactive Grid - Automatic Row Processing (DML)" that apex creats, for my own custom PL/SQL Code i needed to choose one of the columns from the query to be the primary key, and then i could use the pl/sql custom process as found here on this blog:
https://mikesmithers.wordpress.com/2019/07/23/customizing-dml-in-an-apex-interactive-grid/ without the no data found error.
I have an ApEx application which, amongst other purposes, has a requirement to upload billing data provided by telecommunications providers. The data is being provided as a CSV file.
We have two tables. The first table, phone_invoice, contains per-invoice metadata such as billing dates and provider name. The second table, phone_invoice_detail is based largely on call logs.
phone_invoice_detail has a foreign key, invoice_id, which keys into phone_invoice(id). This creates a stock-standard master-detail relationship.
We have used the ApEx Data Load Wizard to set up the import capability for our users. But I need to assign the invoice_id to each imported row.
Currently, I have a Phone Invoice page. Users click a button, "Import Data for Invoice", which branches to the Data Load Wizard and sets a page item, P1000_INVOICE_ID with the value of that invoice ID -- P999_ID.
When the user begins the process, the CSV data supplied has all the fields except for an invoice ID. What I want is for that column in the underlying table -- invoice_id -- to be set to to the value of P1000_INVOICE_ID.
My current focus is on using the Transformation Rules. This has been tremendously frustrating because the documentation tells you nothing about them and there are no examples.
Permutations I have tried:
-- PL/SQL Expression:
:INVOICE_ID := :P1000_INVOICE_ID
:INVOICE_ID := :P999_ID
SELECT :P1000_INVOICE_ID INTO :INVOICE_ID FROM DUAL
SELECT :P999_ID INTO :INVOICE_ID FROM DUAL
-- Replace:
-- Expression 1 Expression 2
:P1001_INVOICE_ID :INVOICE_ID
:P999_INVOICE_ID :INVOICE_ID
As you can see, APEX creates 4 pages for import. And it use apex collection named LOAD_CONTENT to store imported data. So, you can change this collection before it will be loaded into the table.
Go to the page named 'Data Validation' (this page have report Data Validation), and add page process, with next parameters:
Type: PL/SQL anonymous block
Process Point: On Load - Before Header
Source:
declare
-- Local variables here
i integer;
begin
for i in (
select t.seq_id
from apex_collections t
where t.collection_name = 'LOAD_CONTENT'
) loop
apex_collection.update_member_attribute(
p_collection_name => 'LOAD_CONTENT',
p_seq => i.seq_id,
p_attr_number => 3, -- here number of your column you want update
p_attr_value => :P1000_INVOICE_ID -- value
);
end loop;
end;
But change in this process number of your column.
I've tried this example in my APEX version 4.1 - it works fine.