12 Replies Latest reply on Apr 24, 2015 8:12 AM by pthivierge

    What is the best way to handle KPI in PI?


      Good morning,


      We are currently working on an implementation of KPIs on one of our plants, and I have trouble identifying the best way to handle them. Idealy we would like to have somthing like Aspentech's KPI Builder, allowing us to define for a KPI its value, its target, the high and low limits (and low-low and high-high), a flag, so that I can quickly know whether the KPI value is OK or not, and a hierarchy (eg. If KPI 1 is affected by process values PV 1 and PV 2, il would like to be able to assess this in the definition). All of these have to be recorded.


      Is there any built-in way of doing this, or do I have to create multiple tags, the downside being the huge cost in tags of course.


      Thank you for your help,

      Maxime Visconte

        • Re: What is the best way to handle KPI in PI?
          Eugene Lee

          Hi Maxime,


          There is a video about building KPI reports in Datalink. You could use their AF structure as an example.


          Building KPI Reports in PI DataLink


          Regarding building multiple tags, every data stream that you want to be historized in the PI Data Archive will be one tag.

            • Re: What is the best way to handle KPI in PI?

              Thank you for your answer.


              I am familiar with this video, but the problem at hand here is not about reports or visualization, it is about a cost-effective way to create and store them in the database as such.


              I understand from your answer that there is no such method, and that I should go with the old-fashioned one value-one tag method, which is kind of a deal-breaker for me.

            • Re: What is the best way to handle KPI in PI?
              Roger Palmen

              I would recommend using AF to build your data model to derive KPI's. Event without using Pi Analytics (consuming tags when data is written to output tags), you can build quite complex calculations using the PI Point and Formula DataReferences. Using AF Element templates helps massively to build and manage your KPI calculations.

              • Re: What is the best way to handle KPI in PI?

                In fact, the calculations are made on the DCS side.

                I have at my disposal the KPI values tags, already stored in the PI database.


                My wish is to store this KPI's limits, target, parents and children without consuming 5+ tags per KPI. Something like Aspentech's KPI tool, allowing me to have all those informations at the cost of one tag (an with a user-friendly GUI, but that is a bonus).


                Is there any way to do this?

                  • Re: What is the best way to handle KPI in PI?
                    Roger Palmen

                    Don't see a good way to do that without consuming PI Tags, unless you can retrieve and store the values outside of PI e.g. in a Database and include into the AFmodel using AF Table Lookup.


                    The concept of a 'tag' in AspenTech IP21 is fundametally different from PI. In AspenTech you can build more complex datasets on a 'tag', whereas in PI, a tag only holds a single value. Can't really comment on the cost of a PI tag, as that is highly dependant on your specific situation (free space,m licens restrictions, customer-specific pricing). There are benefits and drawbacks to both license structures of PI and Aspen.

                    • Re: What is the best way to handle KPI in PI?

                      Hello Maxime,


                      Are your KPI's limits changing a lot?

                      Assuming they don't ( it is rarely the case) you may use a simple AF Attribute to store limits information, this is why they were invented for .

                      However, usually interfaces cannot update an attribute, they always update a PI Tag, so you will need to find a way to update the attributes but only when your limit changes.  Please do not update the AF simple attributes continuously because you may end up with performances issues, use a PI Tag instead.


                      You say at some point: "things need to be recorded", as well as a having a "nice UI" ?

                      The PI System (AF) can serve you well with that as you may also create templates and analysis which can help you a lot in your KPI definitions and calculations.

                      It can also record changes upon "check in" where you can provide comment when creating a new version of an element (KPI).

                      When using your attributes as configuration items the Element is checked out automatically, thus can force you to enter a comment after you made the change.

                      Furthermore, you may want to consider using Analyses to create event frames, this is a very powerful way of doing KPI's with the PI System.

                      And finally, using the AF Structure you have built, as well as event frames you are generating, the users may use PI Coresight to visualize the data - demo of coresight here: OSIsoft: What is PI Coresight? - YouTube.


                      You may also use PI Notifications to generate emails to alert the right people when KPI's go out of their normal values.


                      Here is an example of a KPI structure I am thinking of:


                      You create an AF Element KPI1 for which you would be using only one tag.


                      + KPI value    : PI Tag

                      + KPI Hi        : attribute, double

                      + KPI Target  : attribute, double

                      + KPI Low      : attribute, double

                      + KPI OK?    : attribute formula, (  KPI Value > Low and KPI value<Hi )


                      If you produce a trend, you should be able to see your "Simple attribute" values changes on the trend, however, keep in mind that this method is not suited for a big rate of data, you should use a PI Tag in this case.

                      2015-04-20_14-21-37_Time Series Data.png



                      I hope this helps and let us know how your KPI's project goes, we are really looking forward to see you succeed in this task!

                        • Re: What is the best way to handle KPI in PI?

                          Thank you Patrice, this is one really good answer.


                          At this point of our thinking, the limits will be updated directly in the DB from an Excel file. and that would be maybe once or twice a year, so we are good here. Those attributes seem to be doing exactly what we what to do with them.


                          I will take a good look in those event frames, see how we can adapt this to our hiearchy, and let you know.

                            • Re: What is the best way to handle KPI in PI?

                              Hi Maxime,


                              I am happy that you like this answer .


                              Regarding the Event Frames they can serve to an infinite use cases but with a same common denominator: you need to split the Time into "events", thus you are not manipulating time anymore when reporting but instead you are using events of the same type.

                              Here is an example of an event frame you may use to get the idea:


                              Event Frame Example


                              Imagine you are the manager of a wind farm and you are interested to produce the Monthly Power Curve report of each of your turbines ( for warranty reasons.. ).

                              A power curve is

                              X: wind speed and

                              Y: Power Produced.

                              Since the wind changes all the time, this is a very hard problem, and it would be very difficult to get good performances.

                              To solve this, you could create event frames based on wind changes for each wind category:




                              Wind Change -Turbine 1

                                   + Start Time

                                   + End Time

                                   + Wind category: 1-2 m/s

                                   + Power average Kw


                              Wind Change -Turbine 1

                                   + Start Time

                                   + End Time

                                   + Wind category: 2-3 m/s

                                   + Power average Kw



                              To build your report you then only need to:


                              For each wind category:

                              • Get all event frames for this category
                              • Make the average of all Power average Kw attributes.



                              This was a little example to illustrate, but there can be a lot of use cases!

                                • Re: What is the best way to handle KPI in PI?

                                  To build on your example, what I would like to do is the following:


                                  KPI 1: Power delivered. If this KPI is not within its limits, then, by a simple manipulation (eg. clicking on the KPI), I can look at

                                  KPI 1.1: Wind speed

                                  KPI 1.2: Age of the captain


                                  And if I see that wind speed is not in its limits, than I can break it down to


                                  KPI 1.1.1: Mill orientation

                                  KPI 1.1.2: Length of the captains mustache.


                                  So that when I see that KPI 1 is off limits, I drive down to root causes quite easily.


                                  Is this something I can do with those events? I looked at it, and I am not really sure. Is there any other way?


                                  Thanks again,

                                    • Re: What is the best way to handle KPI in PI?

                                      Hello Maxime,


                                      Generally speaking, you would probably need another piece of technology to create the KPI Reporting or Dashboard you need.  One of the simplest I can think of is to use Excel and PI Datalink, and to create a Pivot Table to analyse your data.

                                      I could see recently some very nice examples made with Powerview. It was combined with PI OLEDB Enterprise to query data from PI.  But you could probably use PI Datalink too, store the data on a sheet and build your Powerview display on top of that.


                                      We have a list of Youtube videos to get you started with event frames and see how our native tools ( PI Datalink, PI Coresight ) can restitute them.

                                      PI Event Frames - YouTube


                                      We also have Developer Technologies that can help you if you want to build your own displays that can better suit your needs in case our standard tool set is not enough.


                                      I am pretty certain that other people may have ideas on this , let's see if we can get more ideas.

                                        • Re: What is the best way to handle KPI in PI?

                                          Thank you for those answers.


                                          I have looked a little bit into Coresight, and it seems quite limited.


                                          Is there a way to add a waterfall chart easily for example (I mean, with the same level of integration as the trend for example. I do not want to build each view in a Process Book and put them online after). I would like to add a new item, like a waterfall chart, and connect it to whatever tag I see fit.


                                          Thank you for your answer

                                            • Re: What is the best way to handle KPI in PI?

                                              Hello Maxime,


                                              PI Coresight is built to be very easy to use to visualize time series data.  Thus there was a trade off made for simplicity vs complexity.


                                              If you are willing to go and build your own site

                                              Highcharts is considered a good product by many of our PI Square members and there is a waterfall chart available in it: http://www.highcharts.com/demo/waterfall

                                              Then to retrieve data from the PI Data Archive and bring it to your JavaScript, you could use our PI Web API.


                                              There should be already some content to get started with PI Web API on the PI Square, other than that feel free to ask more questions on the community forums at anytime if you feel you are stuck,


                                              Hope this helps.