Authorization: Production ========================= After creating a design script and receiving an approval, we can now execute the same analysis using *real* data. The analysis must be the same as the one that was approved. Any deviation will be prevent the script from being run. .. attention:: This script must be run in the authorized/production environment When running the script on production data, you can duplicate the design script and just make some minor changes: These changes are: 1. Remove the dummy data creation/uploads as it will use ``get_table()`` to access the real data using the handles from upload 2. Replace ``cd.script.record()`` with ``cd.script.load('{ANALYSIS NAME}.approved')`` (fill in the name of the .approved file you downloaded from the web portal). 3. Replace ``cd.script.save()`` with ``cd.script.close()``. Changing any other part of the script when executing in production, will produce a ``NoMatchingAuthorization`` error. Ensure that you reference your analyst key (such that it lets you execute the script), this key needs to correspond to the user that uploaded the script for approval. .. code:: python #load libraries import crandas as cd import plotly.express as px # On a jupyter environment provided by Roseman Labs, session variables are set automatically in the background - unless you wish to test the approval flow within jupyter (shown below) # Set the session base_path and session.endpoint manually when executing this notebook in any other environment # To test the approval flow in Jupyter, you will need the following lines to set your analyst key (downloaded from the portal). This must be referenced correctly. cd.base.session.analyst_key = 'PATH_TO_ANALYST_KEY_HERE' # session.endpoint = 'https://localhost:9820/api/v1' Load the approval file ---------------------- After downloading an approval from the web portal, it must be loaded to crandas. .. code:: python # The approval file should be in the same directory as this script script = cd.script.load('analysis.approved') **Note: the above file can only be downloaded following approval of your uploaded analysis** The handles for each party below should be updated to refer to the handles linked to the production datasets uploaded. .. code:: python # Replace the handles from the original input party1_table = cd.get_table('INPUT_TABLE_1_HANDLE_HERE') .. code:: python # Replace the handles from the original input party2_table = cd.get_table('INPUT_TABLE_2_HANDLE_HERE') Join tables -------------------------------------- After doing this, we can go through the same analysis that we did in the design state. .. code:: python merged = cd.merge(party1_table, party2_table, how='inner', on=['year', 'month', 'day', 'article_nr', 'batch_nr', 'smokes']) .. code:: python merged['condition_y'].mean() .. code:: python merged[(merged["smokes"]==1)]["condition_y"].mean() .. code:: python def compute_sum(month): try: result = merged[((merged["condition_y"]==1) & (merged['month']==month)).with_threshold(3)]["condition_y"].sum() return result # computes means only if there are 3 cases for the month except: return None # if not, no output is given dic={"Month": ['Jan', 'May', 'September'], "Sum of Asthma": [ compute_sum(1),compute_sum(5),compute_sum(9)]} # Data visualization is done with data that is already iin the clear, so it does not need to be in the script. # But it can plot=px.bar(dic, x="Month", y="Sum of Asthma") plot.show() The following code diverges from the approved script. Uncommenting it should result in a ``NoMatchingAuthorization`` error. .. code:: python #merged[(merged["smokes"]==0)]["condition_y"].mean() Finally we reset the script, as we now only need to run local operation. .. code:: python script = cd.script.reset() As mentioned in the design step, the visualization does not involve the VDL so it can be done outside of the script .. code:: python plot=px.bar(dic, x="Month", y="Sum of Asthma") plot.show() We have now executed a script on private data *only after receiving the appropriate permissions*. We have also seen that attempting to do any different analysis will not work.