# Hour meter Data to pie chart workflow?

**URL:** <https://forum.inductiveautomation.com/t/hour-meter-data-to-pie-chart-workflow/62764>\
**Category:** Ignition\
**Tags:** perspective\
**Created:** [August 8, 2022, 8:00am UTC](https://forum.inductiveautomation.com/t/hour-meter-data-to-pie-chart-workflow/62764 "2022-08-08T08:00:48Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![IgnitionNewbie](https://avatars.discourse-cdn.com/v4/letter/i/94ad74/32.png) [@IgnitionNewbie](https://forum.inductiveautomation.com/u/IgnitionNewbie)\
**Post date:** [August 8, 2022, 8:00am UTC](https://forum.inductiveautomation.com/t/hour-meter-data-to-pie-chart-workflow/62764/1 "2022-08-08T08:00:49Z")

</div>

Hello again all , I am trying to get data from my transaction group to work in a pie chart  
The meters count everytime a machine is in a certain status, letting me know the uptime , downtime, total time, etc.

I have it working in a named query that at the moment makes tables in the report module, but it makes a column for every meter (around 10+ columns), from what I have seen , the format of my table is rejected by both the perspective pie chart and the report module pie chart , I think its because both are looking for 2 columns only , one for a string and one for a value

is there any way to make the tables I have the correct format to work on a pie chart? either by doing something to the named query or perhaps a setting on the transaction manager or the pie charts I can use? preferably in the report module so we can see the visuals for the uptime next to the table I have made

---

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [August 8, 2022, 8:18am UTC](https://forum.inductiveautomation.com/t/hour-meter-data-to-pie-chart-workflow/62764/2 "2022-08-08T08:18:09Z")

</div>

If there is only one row and 10+ columns then it would be easy to manipulate in a script transform on the binding’s result.

Here’s a script to play with in the Script Console. Modify to suit.

```auto
# In the binding specify Return Format as JSON.
value = {"col1": 17, "col2": 24, "col3": 10, "col4": 7, "col5": 15} # Sample data returned by query.

output = []
for key, val in value.iteritems():   
	output.append({"flavor": key, "count": val})
	
print output

```

Note that `value` is the data returned by the query. Output will be passed back to the pie chart.

---

<div class="post-metadata">

**Author:** ![IgnitionNewbie](https://avatars.discourse-cdn.com/v4/letter/i/94ad74/32.png) [@IgnitionNewbie](https://forum.inductiveautomation.com/u/IgnitionNewbie)\
**Post date:** [August 8, 2022, 8:21am UTC](https://forum.inductiveautomation.com/t/hour-meter-data-to-pie-chart-workflow/62764/3 "2022-08-08T08:21:49Z")

</div>

I should probably mention that hourmeters add 1 to their value by creating a new row with a timestamp each time , so im not sure if/how that would work

really the only row that matters to me is the latest row for a pie chart function , but it does create a new row every time it updates , so once a minute

---

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [August 8, 2022, 8:55am UTC](https://forum.inductiveautomation.com/t/hour-meter-data-to-pie-chart-workflow/62764/4 "2022-08-08T08:55:14Z")

</div>

OK. Set the binding’s output format to JSON then right-click on the chart data, copy and paste it in here.  
 ![JSON data copy](https://us1.discourse-cdn.com/inductiveautomation/original/3X/5/c/5cfaa47d4347f4204ebfe3017bff4be8c0338c4a.png)

Use the \</\> button to format it as code. Then, if it’s a bit long, select the code, hit the ⚙ gear icon and select _Hide details_.

---

<div class="post-metadata">

**Author:** ![IgnitionNewbie](https://avatars.discourse-cdn.com/v4/letter/i/94ad74/32.png) [@IgnitionNewbie](https://forum.inductiveautomation.com/u/IgnitionNewbie)\
**Post date:** [August 8, 2022, 9:04am UTC](https://forum.inductiveautomation.com/t/hour-meter-data-to-pie-chart-workflow/62764/5 "2022-08-08T09:04:18Z")

</div>

```auto
[
  {
    "t_stamp": 1659941958000,
    "AC1IdleMeterMin": 1,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 120
  },
  {
    "t_stamp": 1659942018000,
    "AC1IdleMeterMin": 2,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 121
  },
  {
    "t_stamp": 1659942078000,
    "AC1IdleMeterMin": 3,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 122
  },
  {
    "t_stamp": 1659942138000,
    "AC1IdleMeterMin": 4,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 123
  },
  {
    "t_stamp": 1659942198000,
    "AC1IdleMeterMin": 5,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 124
  },
  {
    "t_stamp": 1659942258000,
    "AC1IdleMeterMin": 6,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 125
  },
  {
    "t_stamp": 1659942318000,
    "AC1IdleMeterMin": 7,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 126
  },
  {
    "t_stamp": 1659942378000,
    "AC1IdleMeterMin": 8,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 127
  },
  {
    "t_stamp": 1659942438000,
    "AC1IdleMeterMin": 9,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 128
  },
  {
    "t_stamp": 1659942498000,
    "AC1IdleMeterMin": 10,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 129
  },
  {
    "t_stamp": 1659942558000,
    "AC1IdleMeterMin": 11,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 130
  },
  {
    "t_stamp": 1659942618000,
    "AC1IdleMeterMin": 12,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 131
  },
  {
    "t_stamp": 1659942678000,
    "AC1IdleMeterMin": 13,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 132
  },
  {
    "t_stamp": 1659942738000,
    "AC1IdleMeterMin": 14,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 133
  },
  {
    "t_stamp": 1659942798000,
    "AC1IdleMeterMin": 15,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 134
  },
  {
    "t_stamp": 1659942858000,
    "AC1IdleMeterMin": 16,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 135
  },
  {
    "t_stamp": 1659942918000,
    "AC1IdleMeterMin": 17,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 136
  },
  {
    "t_stamp": 1659942978000,
    "AC1IdleMeterMin": 18,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 137
  },
  {
    "t_stamp": 1659943038000,
    "AC1IdleMeterMin": 19,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 138
  },
  {
    "t_stamp": 1659943098000,
    "AC1IdleMeterMin": 20,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 139
  },
  {
    "t_stamp": 1659943158000,
    "AC1IdleMeterMin": 21,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 140
  },
  {
    "t_stamp": 1659943218000,
    "AC1IdleMeterMin": 22,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 141
  },
  {
    "t_stamp": 1659943278000,
    "AC1IdleMeterMin": 23,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 142
  },
  {
    "t_stamp": 1659943338000,
    "AC1IdleMeterMin": 24,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 143
  },
  {
    "t_stamp": 1659943398000,
    "AC1IdleMeterMin": 25,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 144
  },
  {
    "t_stamp": 1659943458000,
    "AC1IdleMeterMin": 26,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 145
  },
  {
    "t_stamp": 1659943518000,
    "AC1IdleMeterMin": 27,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 146
  },
  {
    "t_stamp": 1659943578000,
    "AC1IdleMeterMin": 28,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 147
  },
  {
    "t_stamp": 1659943638000,
    "AC1IdleMeterMin": 29,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 148
  },
  {
    "t_stamp": 1659943698000,
    "AC1IdleMeterMin": 30,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 149
  },
  {
    "t_stamp": 1659943759000,
    "AC1IdleMeterMin": 31,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 150
  },
  {
    "t_stamp": 1659943819000,
    "AC1IdleMeterMin": 32,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 151
  },
  {
    "t_stamp": 1659943879000,
    "AC1IdleMeterMin": 33,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 152
  },
  {
    "t_stamp": 1659943939000,
    "AC1IdleMeterMin": 34,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 153
  },
  {
    "t_stamp": 1659943999000,
    "AC1IdleMeterMin": 35,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 154
  },
  {
    "t_stamp": 1659944059000,
    "AC1IdleMeterMin": 36,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 155
  },
  {
    "t_stamp": 1659944119000,
    "AC1IdleMeterMin": 37,
    "AC1RunningMeterMin": 0,
    "AC1OffMeterMin": 0,
    "AC1MaintenanceMeterMin": 0,
    "AC1EStopMeterMin": 0,
    "AC1VacAlarmMeterMin": 0,
    "AC1PressureAlarmMeterMin": 0,
    "AC1Limit1MeterMin": 0,
    "AC1Limit2MeterMin": 0,
    "AC1Limit3MeterMin": 0,
    "AC1Limit4MeterMin": 0,
    "AC1MultipleAlarmOnMeterMin": 0,
    "AC1TotalMinutes": 156
  },
]

```

I had to cut a bunch of it out because it was too many characters, but its just this over and over again anyway , if the status changed the others would go up by 1 instead depending on which status it had at the time , and the total goes up by 1 each time , every minute a new row is added until the hourmeters purge it all at the end of a day

---

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [August 8, 2022, 9:19am UTC](https://forum.inductiveautomation.com/t/hour-meter-data-to-pie-chart-workflow/62764/6 "2022-08-08T09:19:02Z")

</div>

Try this:

> **Script console demo**
>
> ```auto
> value = [
> {
> "t_stamp": 1659941958000,
> "AC1IdleMeterMin": 1,
> "AC1RunningMeterMin": 0,
> "AC1OffMeterMin": 0,
> "AC1MaintenanceMeterMin": 0,
> "AC1EStopMeterMin": 0,
> "AC1VacAlarmMeterMin": 0,
> "AC1PressureAlarmMeterMin": 0,
> "AC1Limit1MeterMin": 0,
> "AC1Limit2MeterMin": 0,
> "AC1Limit3MeterMin": 0,
> "AC1Limit4MeterMin": 0,
> "AC1MultipleAlarmOnMeterMin": 0,
> "AC1TotalMinutes": 120
> },
> {
> "t_stamp": 1659942018000,
> "AC1IdleMeterMin": 2,
> "AC1RunningMeterMin": 0,
> "AC1OffMeterMin": 0,
> "AC1MaintenanceMeterMin": 0,
> "AC1EStopMeterMin": 0,
> "AC1VacAlarmMeterMin": 0,
> "AC1PressureAlarmMeterMin": 0,
> "AC1Limit1MeterMin": 0,
> "AC1Limit2MeterMin": 0,
> "AC1Limit3MeterMin": 0,
> "AC1Limit4MeterMin": 0,
> "AC1MultipleAlarmOnMeterMin": 0,
> "AC1TotalMinutes": 121
> },
> {
> "t_stamp": 1659942078000,
> "AC1IdleMeterMin": 3,
> "AC1RunningMeterMin": 0,
> "AC1OffMeterMin": 0,
> "AC1MaintenanceMeterMin": 0,
> "AC1EStopMeterMin": 0,
> "AC1VacAlarmMeterMin": 0,
> "AC1PressureAlarmMeterMin": 0,
> "AC1Limit1MeterMin": 0,
> "AC1Limit2MeterMin": 0,
> "AC1Limit3MeterMin": 0,
> "AC1Limit4MeterMin": 0,
> "AC1MultipleAlarmOnMeterMin": 0,
> "AC1TotalMinutes": 122
> }
> ]
> 
> output = []
> lastItem = value[-1] # Returns the last row of data.
> for key, val in lastItem.iteritems():
> if key is not 't_stamp':
> output.append({"meterName": key, "count": val})
> 	
> print output
> 
> ```

---

<div class="post-metadata">

**Author:** ![IgnitionNewbie](https://avatars.discourse-cdn.com/v4/letter/i/94ad74/32.png) [@IgnitionNewbie](https://forum.inductiveautomation.com/u/IgnitionNewbie)\
**Post date:** [August 8, 2022, 9:41am UTC](https://forum.inductiveautomation.com/t/hour-meter-data-to-pie-chart-workflow/62764/7 "2022-08-08T09:41:12Z")

</div>

in the script it shows its working(or at least its not saying any errors) but on the pie chart itself it still thinks its invalid data

the logs give this error

```auto
 level: LEVEL_ERROR message: "components.PieChart: Data invalid. Each pie section object must have a label (string) and a value (number)" line_number: 6 source: "http://localhost:8088/res/perspective/js/PerspectiveClient.316b952f2b48e83fb82c.js"

```

---

<div class="post-metadata">

**Author:** ![IgnitionNewbie](https://avatars.discourse-cdn.com/v4/letter/i/94ad74/32.png) [@IgnitionNewbie](https://forum.inductiveautomation.com/u/IgnitionNewbie)\
**Post date:** [August 8, 2022, 9:44am UTC](https://forum.inductiveautomation.com/t/hour-meter-data-to-pie-chart-workflow/62764/8 "2022-08-08T09:44:50Z")

</div>

![noerror](https://us1.discourse-cdn.com/inductiveautomation/original/3X/c/7/c70b5e97d78f9b2ef6c92a9f8d8a652f3172d46b.png)

does return value go above or below your script? , this is all new to me

the data is even showing up properly in the properties, its just on the screen itself it says its invalid

 ![Data invalid](https://us1.discourse-cdn.com/inductiveautomation/original/3X/0/2/025dd2b74e29eb0ba5141a66d20a5c3035199084.jpeg)

---

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [August 8, 2022, 10:07am UTC](https://forum.inductiveautomation.com/t/hour-meter-data-to-pie-chart-workflow/62764/9 "2022-08-08T10:07:10Z")

</div>

I used `print` for demonstration in Script Console.  
For your binding you need to change the last line to  
` return output`  
If you see `t_stamp` in your pie chart data then the transform isn’t working.

[https://docs.inductiveautomation.com/display/DOC81/Script+Transform](https://docs.inductiveautomation.com/display/DOC81/Script+Transform)

There’s also an Inductive University training video linked on that page.

---

<div class="post-metadata">

**Author:** ![IgnitionNewbie](https://avatars.discourse-cdn.com/v4/letter/i/94ad74/32.png) [@IgnitionNewbie](https://forum.inductiveautomation.com/u/IgnitionNewbie)\
**Post date:** [August 8, 2022, 10:10am UTC](https://forum.inductiveautomation.com/t/hour-meter-data-to-pie-chart-workflow/62764/10 "2022-08-08T10:10:09Z")

</div>

![timestamp took over](https://us1.discourse-cdn.com/inductiveautomation/original/3X/4/9/49d4a7bdc600394865aa5683e2f7c799094be2bb.jpeg)

this is what i see at the moment , I have a visual , the part that checks for last row isnt working however

I see the count and the metername in the data now however , so that append is working

 ![changed](https://us1.discourse-cdn.com/inductiveautomation/original/3X/8/d/8d866cbd87307082ec048008e851e9979e24ec33.jpeg)

here is the script , it looks like it still appended timestamp even though the if key is not part is in there

---

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [August 8, 2022, 10:24am UTC](https://forum.inductiveautomation.com/t/hour-meter-data-to-pie-chart-workflow/62764/11 "2022-08-08T10:24:46Z")

</div>

Your script is letting the t\_stamp value through and since that’s a huge number it’s hogging the whole pie.

 ![Pie chart 100](https://us1.discourse-cdn.com/inductiveautomation/original/3X/4/0/40d5d233512c55bf9bd405abe00e3910353da30a.png)

Test: set `props.valueFormat.showValueAsPercent: false` and you should see some actual numbers in there.

It looks like my code is faulty. Try

```auto
	output = []
	lastItem = value[-1]
	for key, val in lastItem.iteritems():
		if key not in ['t_stamp']:
			key, val
			output.append({"flavor": key, "count": val})
	return output

```

---

<div class="post-metadata">

**Author:** ![IgnitionNewbie](https://avatars.discourse-cdn.com/v4/letter/i/94ad74/32.png) [@IgnitionNewbie](https://forum.inductiveautomation.com/u/IgnitionNewbie)\
**Post date:** [August 8, 2022, 10:32am UTC](https://forum.inductiveautomation.com/t/hour-meter-data-to-pie-chart-workflow/62764/12 "2022-08-08T10:32:14Z")

</div>

![all 0](https://us1.discourse-cdn.com/inductiveautomation/original/3X/3/1/3177019f18d51686d88315d6a29f2d80f86f4a25.jpeg)

kk i turned the % prop off , also the script removed timestamp but its still not grabbing any data its just using the default values still

---

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [August 8, 2022, 11:04am UTC](https://forum.inductiveautomation.com/t/hour-meter-data-to-pie-chart-workflow/62764/13 "2022-08-08T11:04:54Z")

</div>

Delete the `value = [....]` from the script transform.  
`value` is returned by the query. (It was only in my sample script so that Script Console would have some data to work with. By adding it into your script transform you are overwriting the values returned by the query.)

---

<div class="post-metadata">

**Author:** ![IgnitionNewbie](https://avatars.discourse-cdn.com/v4/letter/i/94ad74/32.png) [@IgnitionNewbie](https://forum.inductiveautomation.com/u/IgnitionNewbie)\
**Post date:** [August 8, 2022, 11:13am UTC](https://forum.inductiveautomation.com/t/hour-meter-data-to-pie-chart-workflow/62764/14 "2022-08-08T11:13:01Z")

</div>

and its workinggg, you are a BOSS!!  
boy do I feel dumb for leaving that in 🥸  
also had to remove total time because it takes up the whole chart  
_facepalm_ but its working!

---

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [August 8, 2022, 11:28am UTC](https://forum.inductiveautomation.com/t/hour-meter-data-to-pie-chart-workflow/62764/15 "2022-08-08T11:28:28Z")

</div>

Good work.  
The script transforms are worth getting to understand. Spend a bit of time studying Python **lists** and **dictionaries** and how to work them. Remember that Ignition is using Jython and the Python 2.7 documentation is relevant (and Python 3 features won’t work).  
I find it’s sometimes easier to create a simple, understandable SQL query and do the manipulation in Python.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [August 8, 2022, 11:56am UTC](https://forum.inductiveautomation.com/t/hour-meter-data-to-pie-chart-workflow/62764/16 "2022-08-08T11:56:13Z")

</div>

> [@Transistor](#):
>
> I find it’s sometimes easier to create a simple, understandable SQL query and do the manipulation in Python.

Keep in mind that a well-designed Named Query with no transform will run much, much faster. Jython has significant startup overhead. If your server bogs down with load, this should be one of the areas you focus on.

---

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [August 8, 2022, 1:46pm UTC](https://forum.inductiveautomation.com/t/hour-meter-data-to-pie-chart-workflow/62764/17 "2022-08-08T13:46:39Z")

</div>

Thanks, Phil. I had included the word ‘sometimes’ just for you!
