Every Mode report contains an integrated notebook-style environment where you can use either Python or R to further explore and visualize your query results. Use moveable code blocks and markdown cells for exploratory data analysis, visualization, and collaboration. The integrated Notebook environment supports Python 3.6 and R version 3.4.3. Notebooks are pre-loaded with a variety of Python libraries and R packages. You can add the results of output cells to reports, or share a link to the Notebook directly.
Using the Notebook
To get started using the Notebook:
- Open an existing report or create a new report and run one or more SQL queries from the Query Editor.
- Click New Notebook. Your query results will automatically be loaded into a
- On the right side panel, click the dropdown to select the language you want to work in, either Python 2.7, Python 3.6, or R.
Key elements of the Mode Notebook:
- Toolbar - Where you can manipulate and run your Notebook, restart the session, export, and more.
- Cells - Compose code and view results in a Code cell, or contextualize your work with a Markdown cell.
- Resources Panel - The right side panel provides resources to help you including keyboard shortcuts, external documentation, and supported libraries/packages.
- Status Indicator - Where you are notified about your Notebook session status.
Working with cells
There are two types of cells in the Notebook:
Markdown - Markdown cells allow you to add context to your analysis. Any markdown code will render right in your Notebook.
Code - Input Python or R code into the IN section of the cell. When this cell runs, any corresponding output (including visualizations) will be shown in in the OUT section.
- When you run your notebook, cells are executed in the order they are displayed, starting from the top cell.
- To select or change a cell’s type, go to the dropdown menu in the top toolbar and choose Code or Markdown.
- To run a cell, select it and press
Return. Or click Run Cell in the toolbar.
- The number next to the cell label will increment by one every time code in the cell is successfully run.
- Restart Session - Stops any current computations running in the Notebook. Changes to the Notebook that are stored in memory will be reverted, but code in input cells will be available to re-run after the Notebook restarts.
- Run Notebook - Runs all input cells in the Notebook in sequence (from top to bottom)
- Run Cell - Runs code in the selected cell
- Add New Cell - Adds new input cell above or below the current cell
- Move Cell Up - Moves the current input or markdown cell up
- Move Cell Down - Moves the current cell down
- Delete Cell - Deletes the current cell
- Freeze Cell - Freezes the current input cell so that no changes are allowed; also prevents this cell from running
- Fold Cell - Folds (hides) the current cell
- Markdown/Code dropdown - Allows you to select the type for the current input cell (as code or markdown)
- Add to Report Builder - Adds the output of the selected cell to the Report Builder
- Export Notebook - Exports all markdown and input cells as a .py or .r file
The status indicator, located in the bottom right corner of the browser window, will notify you if there is an issue with your session. It may prompt you to restart the kernel.
- Setting up notebook - Displayed when opening up a new Notebook, or after re-starting your session.
- Ready - Notebook is ready to go.
- Running - Your code is executing.
- Loading dataframes - This message may display for larger datasets while dataframe information is loaded into the Notebook.
- Notebook has encountered an unexpected error - Your session has crashed and will need to be restarted.
- There was a problem with your session - Your session has terminated and you need to click Restart to get things working again.
- Cell is still running. Hang tight! - This can appear when code being run includes long-running, computationally intense functions. The Notebook is still online.
- Notebook is having trouble, try running again - The Notebook is experiencing problems. Please try running your code again to fix the issue.
Accessing query results
The Notebook has access to the results of every query in your report. However, the way you access those results differs depending on the language you’re using. In each case, all query results are delivered to the Notebook as a custom object called
datasets contains objects of the following type:
Python: pandas DataFrame
R: Data Frame
In your Notebook code, reference query result sets in the
datasets list by query name, position, or token. For example:
|To return results for:||Python||R|
|First query added to report||
|Second query added to report||
|Query named ‘Active Users’||
|Query with token ‘6763b688fb54’||
datasetsobject won’t update in the Notebook until after all queries in the report have run successfully.
- Remember that R is 1-indexed and Python is 0-indexed.
- If you refer to query results by the query name, remember to update your code if you rename the query in your report.
- The order of the results in the
datasetsobject is based on when the query was added to the report. Renaming a query may change the order it’s displayed in the report editor but will not affect its position in the
How to find a query’s token
To find the query token starting from the Notebook or editor, click View in the header, then View details, and then click SQL for the query you wish to use. The URL for SQL contains the query token at the end:
Adding cell output to your report
Add contents of the OUT section of any Notebook cell to the Report Builder by clicking on the cell and then clicking Add to Report Builder in the toolbar. You can adjust the dimensions and placement of this cell in the Report Builder.
Add CSV export to a cell
You can add an export button to a Notebook output cell so viewers can export the calculated results contained in any pandas DataFrame (Python) or R Data Frame to a CSV. The following examples add an export button to an output cell that will generate a downloadable CSV of the query results of a query named “New Users”:
import notebooksalamode as mode # Required library in Python df = datasets["New Users"] # export_csv() accepts any valid pandas DataFrame. This mode.export_csv(df) # example uses the result set from a query named "New Users".
df <- datasets[["New Users"]] # export_data() accepts any valid Data Frame. This export_data(df) # example uses the result set from a query named "New Users".
The Notebook supports separate environments for Python v2.7 and v3.6. Each environment comes pre-loaded with the following libraries:
IMPORTANT: Mode will end support for the legacy Python 2.7 environment at the end of 2019. Any new libraries and non-critical updates to libraries will be released for the Python 3.6 environment only.
IMPORTANT: We strongly discourage using the
requestslibrary to access APIs that require authentication using personally identifiable credentials and information, as they will be visible to viewers of your report.
The Notebook supports R version 3.4.3 and comes pre-loaded with the following R packages:
IMPORTANT: We strongly discourage using the
httrlibrary to access APIs that require authentication using personally identifiable credentials and information, as they will be visible to viewers of your report.
How much memory is available to the Notebook?
Each Notebook session has the following resources available, depending on the version of your Mode organization:
|Available Memory||Run-time Limit|
|Mode Studio||4GB||60 minutes|
|Mode Business||12GB||60 minutes|
The Notebook environment will suspend after 15 minutes of inactivity and can be resumed at any time by running a cell or the entire Notebook.
Can I import custom libraries into the Notebook?
Not currently, but this is something we’re thinking about adding in a future release. If you would like to see this feature or know of open source libraries you’d like to see added, please let us know!
How long will Mode continue to support Python 2.7?
Mode will continue to support Python 2.7 until the end of 2019. Starting in 2020 Mode, along with the majority of the Python community, will end support for Python 2.x and require Python 3.x.
Starting October 2018, Mode will not release any new libraries or non-critical library updates in the Python 2.7 environment. We encourage you to migrate your work to Python 3.6 so you can access the latest versions of supported libraries.
Why should I use Python 3.6 instead of Python 2.7?
Will my code break if I switch my Notebook to Python 3.6?
Python 2.7 code will likely not execute in a Python 3.6 environment without some modification. There are a number of syntax differences to take into consideration when migrating to Python 3.6. For more information, read about porting Python 2 code to Python 3.
In the Notebook, why can I only select Python 3.6 and not Python 2.7?
Given that Mode is ending support for Python 2.7 at the end of 2019, the Python 2.7 environment will not be enabled for Mode organizations created on or after October 2018. If you would like us to enable Python 2.7 in your organization to support your transition to Python 3.6, please contact Mode’s Customer Success team and let us know.
Last updated May 17, 2018