Hi Guys,
Is there an easy way to export the new Alarm Journal table to CSV?
Cheers for any help.
Tim…
Hi Guys,
Is there an easy way to export the new Alarm Journal table to CSV?
Cheers for any help.
Tim…
You’ll want to use the new scripting function system.alarm.queryJournal() to get information from a specific journal, and then call getDataset() to get the journal information returned as a dataset, since system.dataset.exportCSV() requires a dataset. You would then use exportCSV() as usual:
data = system.alarm.queryJournal(journalName="Journal").getDataset()
filePath = system.dataset.exportCSV("data.csv",1,data)
if filePath != None:
system.net.openURL("file://"+filePath)
Thanks James,
I am finding that I am only getting these headers with no data
EventId, Source, DisplayPath, EventTime, EventState, Priority, IsSystemEvent
I would like to be able to get the filtered data from the displayed Journal thats in the root container with the headers as shown Event Time, Name, Priority, Ack’ed By, Event State…
Cheers
Tim…
Here’s the script you can put on a button that will print the events of the alarm Journal. Also, you can use the Alarm Journal binding function to populate a dataset in any other component.
start = event.source.parent.getComponent(‘Alarm Journal’).startDate
end = event.source.parent.getComponent(‘Alarm Journal’).endDate
journal = system.alarm.queryJournal(start, end, “Journal”).getDataset()
system.dataset.exportCSV(“data.csv”, 1, journal)
Robert McKenzie
Training and Support Services
Inductive Automation
Is there a SQL query that we can run to return a dataset in the same format as the Alarm Journal object? The queryJournal script is a good start, but I really don’t have any use for the EventId column, and it would be really nice to have the ‘Ack’d By’ column and the Priority expressed as plain text.
claytonic47
this post may be useful, the script can be modified to give you what you want
https://www.inductiveautomation.com/forum/viewtopic.php?f=70&t=12141
Right on, that script looks quite powerful. However, I still can’t get an ‘Ack’ed By’ column. If you examine each AlarmEvent object with getAckData() only the acknowledge event time is returned, not the user who acknowledged it.
I’ve figured out a way to do this with a SQL Query:
(only tested using V7.7.2)
SELECT
alarm_events.eventtime as 'Event Time',
substring(alarm_events.source,instr(alarm_events.source, "/alm:")+5) as 'Name',
alarm_events.displaypath as 'Display Path',
REPLACE(REPLACE(REPLACE(alarm_events.eventtype, 0, 'Active'), 1, 'Clear'), 2, 'Ack') as 'Event State',
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(alarm_events.priority, 0, 'Diagnostic'), 1, 'Low'), 2, 'Medium'), 3, 'High'), 4, 'Critical') as 'Priority',
IF(propname = 'ackUser', substring(strvalue, instr(strvalue, "/usr:")+5), null) as "Ack'ed By"
FROM alarm_event_data
inner join alarm_events on alarm_events.id = alarm_event_data.id
where dtype != 0
and alarm_events.eventtime > '{Root Container.Alarm Journal.startDate}'
and alarm_events.eventtime < '{Root Container.Alarm Journal.endDate}'
order by alarm_event_data.id desc
Hope this helps anyone else who might be looking