Yesterday, I posted on how to set up logging in Spotfire. At the end of that post, I showed you just how much data is available with logging, and it’s a lot. But, there is one place you can go to answer most logging question — the ACTIONLOG view. So, in this post, I will explain how to use the Spotfire ACTIONLOG data to understand user activity. We’ll ask and answer important questions like…
- Is usage increasing or decreasing?
- Is training helping users?
- Who isn’t using their license?
- Who are my top users?
- What are the most commonly used files?
- Who deleted my information link?
Read on to learn more.
Where to Start
Step 4 of the setup process tells you to download and install a kit that includes information links and a sample analysis file connected to your logging database. The sample analysis file is a great starting point. It should contain data from two information links (or views in the logging database) — ACTIONLOG and AUTH_LOGIN_LOGOUT. This post will explain what to look for in the ACTIONLOG. A future post will dive into the AUTH_LOGIN_LOGOUT.
Now, I am using the same DXP I downloaded years ago. TIBCO may have changed the contents, but here’s a summary of what you should find.
![](https://www.bigmountainanalytics.com/wp-content/uploads/2020/03/2020-03-12_10-13-32.png)
Next, let me explain how to interpret some of the data in the form of the questions you can ask and answer.
Spotfire ACTIONLOG
Is usage increasing or decreasing? Is training helping users? Who are my top users?
All of these can be investigated by counting (or unique counting) the SESSION_IDs and calculating the session duration. The SESSION_ID is a unique identifier assigned every time a user opens Spotfire. In the ACTIONLOG, there will be multiple records for a given SESSION_ID. There is one record for each logged action in a SESSION_ID, and the LOGGED_TIME provides a date and timestamp for when the action occurred. Taking a unique count of the SESSION_IDs will tell you how many times a user has opened Spotfire. This can help you understand if training is working because users should be more active in the application after training.
![](https://www.bigmountainanalytics.com/wp-content/uploads/2020/03/sessions-1024x321.png)
You can take it one step further by calculating the session duration as I have shown below. After all, if a user opens the application and then quickly closes it because they don’t know how to use it, that’s not a good thing. You can get a better understanding of usage by looking at number of sessions and session duration. Furthermore, once you have the session duration calculated, you can investigate user by user.
c.Start of Session = Min([LOGGED_TIME]) over ([SESSION_ID])
c.End of Session = Max([LOGGED_TIME]) over ([SESSION_ID])
c.Session Duration = DateDiff("hour",[c.Start of Session],[c.End of Session])
![](https://www.bigmountainanalytics.com/wp-content/uploads/2020/03/session-duration-1024x494.png)
When was the last time a user logged in?
This one seems simple, but you need to make sure you understand what time zone logging is occurring in. You might need to use the DateAdd function to add or subtract time from the LOGGED_TIME column. Figure this out by simply closing Spotfire, reopening it, and then looking for your username in the log. You will know what time you took the action and can compare that to the LOGGED_TIME.
To answer the question, create a cross table with USER_NAME on the categorical axis and Max([LOGGED_TIME]) on the value axis. Sort it, and you have the answer.
![](https://www.bigmountainanalytics.com/wp-content/uploads/2020/03/login.png)
What are the most frequently accessed DXPs saved in the library? What is not being used?
If you aren’t familiar with the log data, answer this question could be a bit tricky. However, you just need to know to use the ID2 column to find the file locations and names. A simple bar chart with (Row Count) on the value axis will help. You will definitely need zoom sliders for this and/or consider using the Show/Hide options to show only a certain number of results.
![](https://www.bigmountainanalytics.com/wp-content/uploads/2020/03/show-hide.png)
Note, the LOG_ACTION column is filtered down to the load_content log action. The load_content action is specific to opening a DXP. Opening an information link triggers a different action, as you will see below.
![](https://www.bigmountainanalytics.com/wp-content/uploads/2020/03/frequent-files-1024x294.png)
To understand what is not being used, apply data limiting or the Show/Hide functions to show when (Row Count) = 0.
What are the most frequently accessed information links saved in the library?
You can answer this question the same way as the question above, except rather than filtering the LOG_ACTION column to load_content, filter it to the values shown below. What are the largest files in the library?
![](https://www.bigmountainanalytics.com/wp-content/uploads/2020/03/info-links-1-1024x267.png)
What are the most frequently access files on the saved outside the library?
When answering this question, it’s helpful to be able to sort and filter by the file extension. To get that, you will need a calculation, which I have shown below.
c.File Extension = if(len(RXReplace([ID2],".*(\\.[0-9a-z]+)$","$1","i"))>8,"Unknown",RXReplace([ID2],".*(\\.[0-9a-z]+)$","$1","i"))
Investigate the results closely, and you’ll notice the c.File Extension calculation generates results of ” ” and “Unknown”. This is because the ID2 column contains a LOT of values that aren’t file locations, and the expression does not address these circumstances. To better understand all the ID and ARG columns, check out this bit of TIBCO documentation for an explanation of what should be in the column for a given log category and action.
![](https://www.bigmountainanalytics.com/wp-content/uploads/2020/03/file-extension-1024x264.png)
To learn more about specific files, use the ID2 on the category axis rather than the File Extension.
![](https://www.bigmountainanalytics.com/wp-content/uploads/2020/03/files-1024x305.png)
What are the largest files in the Spotfire library?
To see the largest files in the library, use the same bar chart as above (ID2 on categorical axis, limit LOG_ACTION to load_content) but change the value axis to this expression.
Max(Integer([ARG3]) / (1024 * 1024)) as [Size (MB)]
![](https://www.bigmountainanalytics.com/wp-content/uploads/2020/03/size.png)
Who deleted my information link?
This is certainly a fun question to ask. The answer is readily available by filtering on the ID2 column. Our administrators save all column elements and information links in specific folders. Thus, to answer this question, I filter to those folders using the ID2 column. Then, filter to LOG_ACTION = “delete”. The LOG_CATEGORY should be “library”.
![](https://www.bigmountainanalytics.com/wp-content/uploads/2020/03/delete-1.png)
That covers the most relevant questions from the Spotfire ACTIONLOG. In my next post, I’ll dive deeper into the LOG_CATEGORY and LOG_ACTION data since we just skimmed the surface here.
Spotfire Version
Content created with Spotfire 10.2
Check Out These Posts
- How to Set Up Spotfire Logging (release Monday, March 16)
- How to Use the Spotfire ACTIONLOG (release Tuesday, March 17)
- Understanding Spotfire Logging Categories and Actions (release Wednesday, March 18)
- Understanding Spotfire Logging Views (release Thursday, March 19)
More Logging Posts!
Check out my YouTube channel or …
- How to Set Up Spotfire Logging (release Monday, March 16)
- How to Use the Spotfire ACTIONLOG (release Tuesday, March 17)
- Understanding Spotfire Logging Categories and Actions (release Wednesday, March 18)
- Understanding Spotfire Logging Views (release Thursday, March 19)
- Join Logging Data Sets (release Friday, March 20)
- How to Search for DXP Dependencies
Pingback: How to Set Up Spotfire Logging » The Analytics Corner
Pingback: Spotfire Logging Categories and Actions » The Analytics Corner
Pingback: Understanding Spotfire Logging Views » The Analytics Corner
Pingback: Understanding Spotfire Logging Views » The Analytics Corner
Pingback: Join Logging Data Sets » The Analytics Corner