What's New in JMP Live 18.0 and JMP Live 18.1
Learn all about the many improvements to JMP Live 18.0 and JMP Live 18.1.
Let’s start with collaboration. You can now @ mention a colleague so that they are notified about your comment and can follow a link right to your report and/or data to join the conversation.
We’ve made it easier to find the content that you care about with easier navigation around folders and between reports and the data they rely on. We’ve simplified sorting reports and have improved embedding of JMP Live reports in other applications.
What about control charts? There’s now support for control chart limits in separate *.jmp tables. And we didn’t forget data handling. In addition to improving data preview on JMP Live, we’ve also made it easier to work with data suppliers. You can give targeted access to data suppliers, and they can upload new data in various file formats (*.csv, *.json, etc.). Plus, your script, running on JMP Live, can now transform the data into a *.jmp table and automatically refresh your reports. We’ve even added some support for Python in data refresh scripts.
Lastly, we’ve improved the overall administration of JMP Live, including:
- Centralizing the view of all data refresh schedules.
- Syncing groups and users from an Active Directory server.
- Deleting users (with GDPR support).
- Improving the experience for understanding user and group relationships.
- Refining access permissions on specific JMP Live folders.
- Improved license management.
- Auditing JMP Live activity, including a better download experience for audit logs and records.
Hi. My name is Aurora Tiffany Davis. I'm a software developer on the JMP Live team. Today, I'm going to talk to you about a few of the things that are new in JMP Live versions 18 and 18.1. I am going to focus just on the things that are new. I'll assume that you've seen JMP Live before. But in case you haven't, and you're just watching this because you're curious, then very briefly, JMP Live is a secure collaboration platform, that's hosted on your own company's servers. JMP Live allows you to share JMP content with your colleagues, whether or not they have JMP themselves.
Let's get started by opening up JMP Live. This will be a pretty informal demo. I have some reports that I want to show you, but along the way, whenever I see something new, I'm just going to stop and talk about it. Here on the homepage of JMP Live, I see something new right away, and that is this Sort button.
We're looking at a list of reports. By default, whenever JMP Live shows you a list of reports, we show you the most recently updated reports first. But now you can change that sort order if you want. You could choose to show the oldest things first, or I'll choose sorting alphabetically. Whenever you've expressed a preference, we'll remember that for you, and we'll show you things alphabetically in this example everywhere on JMP Live.
I see something else here, and that's a notification that I have. Notifications aren't new. But this particular notification is new. You can now be explicitly mentioned in a comment. It looks like I've been mentioned in a comment. Let me follow this to get more details. The administrator says, "Aurora, this data is 4 years old." I can look up here in the upper right and see that this data was published back in 2020.
The administrator says, "Aurora, this data is 4 years old. Should we update it? Make it refreshable? Delete it? Leave it alone? Think about it and let me know." Let's find out who owns the data. It looks like this was published by Josh Lopresti. I certainly don't want to delete anything before I talk to him. I want to reply here, but I want to explicitly mention Josh in the comment. That way, he'll get a notification just like I did, and he can be included in the conversation.
"I think we should check with Josh," I'll press D, "before we do anything." Just to do that a bit slower, all I did here was type the @ symbol on my keyboard, and that brings up a list of all the users. When you start typing, it starts filtering down. Pretty common interaction you might have on a website. I'll submit that comment, and Josh will get a notification. You can do this anywhere you comment on JMP Live. You could do this on a data post like the one I'm showing here, or on a report post, or on a folder.
After taking that little detour, let's keep moving towards those reports I want to show you. I'll open up the collaboration space, where I have my reports. I've called that collaboration space, Discovery Americas 2024. When I land on this space, I see something else new, so I'll stop and talk about it. The things that I see here that are new are the history and the views tabs. You'll see these if you are the administrator of your organization's JMP Live site, or if you've been put in charge of one collaboration space.
You don't have to be a site-wide admin. If somebody has delegated you to be in charge of a space, you'll also see these. The history tab shows you, what's been going on in your collaboration space: what happened, what post it happened to, who did it, when. Pretty basic. The newest stuff is shown on the top of this list. You can also filter this list of actions that have happened, to your collaboration space. Maybe I just want to see the things that happened today. Maybe I want to filter even further and just see the things that I did.
You can also download this history table. The views tab is similar, but instead of showing you everything that happened on your collaboration space, it shows you who has been accessing your collaboration space. It shows you who has been looking at what, and when they did that. It also shows you how they access this content. Did they just look at it or did they download it? Similar to the history table, you can filter and you can download.
Now, there's something that used to be over here on the side panel for a space that's actually not here anymore, and that is permissions. The reason that that has moved is that it used to be the case, that you could just set permissions on the collaboration space as a whole, but that's not true anymore. Now you can set collaboration space permissions, but you can also refine on a folder-by-folder basis.
Let me show you an example of what I mean. Here, I'm showing you the permissions on the space as a whole. We can see that all users have the right to view things in this space, so they can look at all the reports. Aaron Andersen can do a few more things. He can download and he can contribute new content. Josh can do almost everything on this collaboration space. I can do literally everything on this collaboration space.
However, on the Top Secret Project, I want to refine these permissions. I've really scaled this back, and I've said that on this folder and anything beneath it, only myself and Aaron can have access. Even Aaron's access is very limited. On the other hand, here's another folder in the same space. On this folder, I haven't done anything, because this folder is not special. There's no special security needs here. I've accepted the default behavior of JMP Live, which is simply to inherit permissions from the space, and that's fine with me.
Now we can start to get into these reports I want to show you. Let's say that we've diversified our business, and we're now running a couple of wineries in North Carolina. We want to keep track of the weather, we want to keep track of the grapes that we're growing, and we want to keep track of some measurements related to the glass bottles that we use to bottle our wine.
Let me start here with the Map Report. This shows you some temperatures in North Carolina. You can see a few more blue dots over here in the western part of the state. That means it's cooler over there because we have a mountain range. JMP can produce some truly, complex impressive reports. This is not one of them. This is pretty simple. What's neat about it, is how it gets the data that drives this report. That's what I want to show you because we've made several improvements to the handling of data in JMP Live.
Like you might imagine with a weather report, we want to refresh this data periodically, and we're using the existing data refresh feature to do that. What's new here is that any report on JMP Live, which is based on refreshable data, we'll now show you at the top of the report not only when the report was most recently updated, 2 minutes ago, but when we expect it to be updated again, about 48 minutes from now, because that's when the data will be refreshed.
Let's take a deeper look at the data. First, I have to find it. We got some feedback from our customers that it was not extremely obvious how to find the data from a report. We've tried to make that extremely obvious. If you look over here on the side panel, you see a data tab now. We can see that this report relies on one data source called Weather Observations NC. Let's open that up. Pretty simple data. A series of weather stations which report information including where they are and what's the current temperature.
Where did I get this data? I got this data from the weather.gov website, which maintains a REST API. I used Python to write a script, to go and get that data. Let me show you what that Python looks like just briefly. It's pretty straightforward. It goes out and tries to find out all the weather stations in North Carolina, that participate in this weather.gov REST API. For every station, it tries to get information, just temperature and longitude and latitude in my case.
It could be the case that the station does not respond. Maybe it's down at the moment. It could be the case that that particular station doesn't actually report everything I asked for. That's okay, too. I just skip those. When I do find what I'm looking for, I just add the data into this list of weather data. It's not that fancy of a script. It's not that impressive, but you know what? I like it because I wrote it and it works. I really don't want to have to rewrite this into JSL in order to use it in a data refresh script.
We've made an improvement here where you can actually talk a Python script inside of your JSL data refresh script, and I'll show you how that works. When we come here to the settings for this data post, it pretty much works like it always has. First, you tell JMP Live, "I want this data to be refreshable." Then you provide JMP Live with a script that tells JMP Live, "How do I go out and get that data whenever it's time to refresh?"
Optionally, you can set up a refresh schedule, and I chose to refresh this every hour, every day. Let's take a look at the script itself. All I've done here is take my Python script that I showed you a moment ago, and I've wrapped it in a string. Then I'm using the new JSL command, Python Execute.
The first parameter here is what JSL variables do I want to pass into a Python script? In my case, there aren't any because my Python script is pretty be self-sufficient. The second parameter is what variables do I want to get back from my Python script after it's done running? In my case, I just have one thing I want to get back, which is the list called All_Weather_Data. Finally, you pass in, the Python commands in the form of a string.
After this point, my JSL now has access to the All_Weather_Data list. All I need to do, is create a new JMP data table and format my columns. I'm used to doing this in JSL, so I just kept all this as JSL. The Python script is doing what it does best, which is going to get that weather data. If you want more information about the integration between Python and JSL, check out the JMP scripting index.
Let's take a look at another report in the same folder, dealing with our wineries. Here we have bottle analysis. This is trying to see if we have any correlation between these various attributes that go into bottle manufacturing and the defect rate. In this case, it looks like as silica content goes up, our defect rate goes down. We have a column switcher here, so we could look at other attributes as well. It looks like our defect rate is hovering right around 1.5%, which isn't great. I'm hopeful that our suppliers can get this defect rate lower.
Let's take a look at the data that's driving this report. Again, we'll go to this data tab here on the left-hand sidebar. Where am I getting this data from? Well, as the title implies, I'm getting it from our bottle supplier. But unlike the weather data, which I'm pulling from this web API, our bottle supplier doesn't have a web API. They don't expose their internal databases for us to be able to interrogate and get data out of. Not only that, but our bottle supplier doesn't even use JMP, so they're not going to make JMP data tables available to us. What they're doing right now is they're just e-mailing us CSV files.
I want a better way to handle data updates than opening my e-mail, realizing somebody sent me a new CSV file, stopping what I'm doing, turning that into a JMP data table, etc. We've now come up with a strategy for handling pretty much this exact situation where you have a supplier who's providing data to you, but it's not in the form of a JMP data table.
Let's take a look here in the settings. You can see now that in addition to the two options we already had—uploading a JMP data table and pulling data in via data refresh—we now have a third option that we're calling import. With this feature, you can give very limited targeted access to your supplier, where they can come in here, and they can just import data and do nothing else in just one folder. You can do more. You come in here, and you tell JMP Live, "I want this data to be importable." Then you tell JMP Live, "What file type do I expect from my supplier?" In my case, I expect a CSV file. But it could also be an Excel file, JSON, XML, etc.
Finally, you have to tell JMP Live how to turn the file that your supplier is going to upload into a JMP data table. Let's open the script. I'll give you a little secret here. I didn't write this script, and neither should you. JMP is really good about once it's done something, providing you with a script on how to reproduce it. I went back to one of those e-mails I had with a CSV file that the supplier gave us, and I opened it in JMP. Then I had a data table. That data table has in it a source script. That source script pretty much very directly translated into this import script.
Now, it's not always that easy, but it's usually pretty darn easy. I really encourage you to lean on JMP's ability to produce scripts for you. In fact, when you go in here to set up an import script the first time, you'll see options related to the source script, copying it and viewing it and so on. That is a fantastic head start.
When the supplier comes in here and imports the data, as always, whether it's a manual upload of a JMP data table, whether it's a data refresh script, or whether it's this new option import, anytime JMP Live gets new data, it automatically refreshes all of the reports that use that data for you. Let's open up the Reports tab, so we can keep an eye on that while we do this data import.
For a moment, I'll pretend that I'm the data supplier, and I will use the updated information here. We can see now that JMP Live is working on the data table itself. It's using this import script that we defined to take the CSV file I just uploaded and turn it into a JMP data table, which is what JMP Live works with, of course.
Now it's got that latest data firmly stored in JMP Live, and it's regenerating each one of the three reports that use the data. Let's go back to the report we looked at just a moment ago. We can see now that the defect rate has dropped from around 1.5% to around 0.5%, a big improvement. What's good about this is that once you get all this set up, it doesn't take very long, your supplier can update the data whenever it's available to them, and it doesn't interrupt your workflow.
I have one more report to show you. That one is a control chart. This control chart keeps track of various measurements that we make on the grapes that we grow for our wine. We have several different varieties of grape: Aglianico, Garnacha, Sangiovese, etc. We measure yield, we measure the sugar content, and we measure the pH, the acidity.
This isn't new. Control charts in JMP Live aren't new. They've been doing this for a while. What is new here, again, has to do with data. We can now support in JMP Live a separate file for your control limits. You see here this particular report relies on not one, but two different JMP data tables. One contains the data about the grapes themselves, and the other contains the control limits.
That covers most of what's new for most JMP Live users, but I do also want to take a moment to talk through some of the things that are new for the subset of users that administer the JMP Live site. If you're an admin, you'll have some more things that are new. Let's work our way through the side panel on the admins page.
Don't worry, there isn't something new on every tab, but there is something new in this first tab, Server. We make it easier now for you to understand when JMP Live reauthorization is going to be required. When it is needed, we make it easier for you to work through that process. You click the blue Authorize button, and then it works you through a couple of pretty simple steps. You're going to copy this request code. You're going to go to jmp.com/authorize, paste in this request code. It's going to give you back an authorization code. You put it in here, and you're done. It's pretty easy now.
Working our way down the side panel, the next place where we have something new is on the users tab. Let me look for a user, one of my coworkers here, Michael. What's new here is that we give you the opportunity to easily delete a user through the UI. When you do that, we also offer you the choice of deleting all of their personally identifiable information. This might be useful to you if you work in a region where you're governed by certain privacy regulations, such as GDPR in Europe.
Another thing that's new here is that we offer you the ability to find out what groups a given user is in. We already had it working the other way. You could easily find users from groups. Now you can also easily find groups from users. That's helpful because you can follow these relationships, piece by piece and build a mental model of what the user group relationships are like on your site.
This by the way, unlike most of what I'm going to show you on the Admin page, this exploration of user group relationships, is available not only to a site-wide admin but also to somebody who's in charge of a collaboration space, because for them, it's going to be really useful to figure out those relationships so that they can do a better job of deciding who to give access to their space. Of course, somebody who's only in charge of one collaboration space won't be able to do everything on users and groups. They certainly won't be able to delete a user.
Let's go through a quick demonstration of how you would explore these user group relationships. My coworker, Michael, is of course part of the JMP Live group. JMP Live also contains Eric Hill. Eric Hill is not just in the JMP Live group, he's also in a group called People Named Eric. The People Named Eric group, that also has Eric Bourn. You can see you can easily click through these relationships.
Working our way down the side panel here, the next place we have something new is in schedules. A while ago, I showed you an example of refreshable data on a schedule, and that was this weather observations NC. In this location on the Admin page, you can get an overview of all of the data refresh that's happening across your whole site. In my example, there are only three data refresh schedules set up on the site. That's because this is a small site here at the JMP offices that we use to do demos. But in your situation, you might have hundreds, possibly even thousands, of data refresh schedules set up.
This can be a great dashboard to keep an eye on them. Whichever schedule is slated to next run, for example, this is the one that's going to run next in 35 minutes, that's going to show up at the top. The one that's the furthest away in time is going to show up at the bottom. This table is going to show you every post that is set up for data refresh. Who set it up? What's the frequency? When it will next run?
You can also edit these schedules right here in place if you want to adjust things, or maybe you want to stop your data refreshers from being really bunched up at one particular time of day. If you have a whole lot of data refresh schedules, you might also find it helpful to filter them.
Moving along down here on the side panel, we come to the Log or the Audit Log. This isn't new. We've had the Audit Log forever. There's really no exciting new feature here with the Audit Log. But if you've ever tried to download hundreds of thousands or maybe even millions of Audit Log records, you might not have been thrilled with the user experience.
We've taken a real effort to improve that experience. Now when you download a very large number of Audit Log records, we give you immediate feedback that we're working on it. You can also get an idea of how long it will take by watching this progress bar.
We've covered a lot during this demonstration, so let me see if I can summarize for you. All JMP Live users can now make use of a sort, and whatever you choose as your preference for sorting, it will be applied everywhere until you change it. All users can now @mention a colleague. When you are @mention you get a link that brings you directly into that conversation, so you can jump in right away.
Users that publish control charts might be happy to know that JMP Live now supports control limits in a separate file. We've made it easier to find data from reports, and we made it easier to find reports from data. Those who write refresh scripts for their data might enjoy that you can now execute Python code inside those refresh scripts.
You can now set up very targeted, specific access for data suppliers so that they can just import data and do nothing else in just one folder and nowhere else on JMP Live. You just provide a import file type and a script that tells JMP Live how to turn whatever your supplier uploads into a JMP data table. When you're looking at writing that script, I strongly encourage you to start with the data table source script. Really lean on JMP's ability to write scripts for you whenever you can.
For a user who's in charge of a collaboration space, you can now see what has happened in your space, and you can see who has accessed your space. In both cases, these tables can be filtered and downloaded. You're no longer limited to just setting up permissions on the space on a wide level, but instead, you can now refine those permissions on a specific folder if you want to.
For users who administer JMP Live, there are several other things that are new or improved. We've made easier to perform JMP Live reauthorization. We have built-in support for deleting a user, and we're supporting regulations such as GDPR, which might compel you to delete a user's personally identified reliable information.
We've made it easier to explore the relationships between users and groups. We've added the ability to sync users and groups from an Active Directory server. You now have the ability to review or edit data refresh schedules across the entire JMP Live site, and large audit log downloads are no longer a problem.
That was a lot to get through in a short amount of time. I appreciate you joining me. I would encourage you to check out the other on-demand videos that are available for this conference as well. Thank you and have a great day. Bye.
Presenter
Files
- BottleSupplier_TempAndTime.jsl
- BottleSupplier_DefectRate.jsl
- Weather Observations NC.jmp
- NorthCarolinaWeather.py
- Bottle_Supplier_Data.csv
- NorthCarolinaWeather_Map.jsl
- Bottle_Supplier_Data_Updated.csv
- BottleSupplier_Composition.jsl
- Grape Trials Control Limits.jmp
- Grape Trials.jmp
- NorthCarolinaWeather_Data.jsl
- Presentation_Slides.pptx