{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Ingredient: Using anonymizers\n",
    "\n",
    "This example shows a shelf with anonymizers. Anonymizers make a dataset look like it has random\n",
    "data by modifying the ingredient value."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SELECT census.state AS state_raw,\n",
      "       sum(census.pop2000) AS population_raw\n",
      "FROM census\n",
      "GROUP BY census.state\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>state_raw</th>\n",
       "      <th>population_raw</th>\n",
       "      <th>state</th>\n",
       "      <th>state_id</th>\n",
       "      <th>population</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Alabama</td>\n",
       "      <td>4438559</td>\n",
       "      <td>amabalA</td>\n",
       "      <td>Alabama</td>\n",
       "      <td>4439559</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Alaska</td>\n",
       "      <td>608588</td>\n",
       "      <td>aksalA</td>\n",
       "      <td>Alaska</td>\n",
       "      <td>609588</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Arizona</td>\n",
       "      <td>5143931</td>\n",
       "      <td>anozirA</td>\n",
       "      <td>Arizona</td>\n",
       "      <td>5144931</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Arkansas</td>\n",
       "      <td>2672434</td>\n",
       "      <td>sasnakrA</td>\n",
       "      <td>Arkansas</td>\n",
       "      <td>2673434</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>California</td>\n",
       "      <td>33829442</td>\n",
       "      <td>ainrofilaC</td>\n",
       "      <td>California</td>\n",
       "      <td>33830442</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Colorado</td>\n",
       "      <td>4300877</td>\n",
       "      <td>odaroloC</td>\n",
       "      <td>Colorado</td>\n",
       "      <td>4301877</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Connecticut</td>\n",
       "      <td>3403620</td>\n",
       "      <td>tucitcennoC</td>\n",
       "      <td>Connecticut</td>\n",
       "      <td>3404620</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Delaware</td>\n",
       "      <td>782386</td>\n",
       "      <td>erawaleD</td>\n",
       "      <td>Delaware</td>\n",
       "      <td>783386</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>District of Columbia</td>\n",
       "      <td>568103</td>\n",
       "      <td>aibmuloC fo tcirtsiD</td>\n",
       "      <td>District of Columbia</td>\n",
       "      <td>569103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>Florida</td>\n",
       "      <td>15976093</td>\n",
       "      <td>adirolF</td>\n",
       "      <td>Florida</td>\n",
       "      <td>15977093</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>Georgia</td>\n",
       "      <td>8161776</td>\n",
       "      <td>aigroeG</td>\n",
       "      <td>Georgia</td>\n",
       "      <td>8162776</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>Hawaii</td>\n",
       "      <td>1167027</td>\n",
       "      <td>iiawaH</td>\n",
       "      <td>Hawaii</td>\n",
       "      <td>1168027</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>Idaho</td>\n",
       "      <td>1294560</td>\n",
       "      <td>ohadI</td>\n",
       "      <td>Idaho</td>\n",
       "      <td>1295560</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>Illinois</td>\n",
       "      <td>12405300</td>\n",
       "      <td>sionillI</td>\n",
       "      <td>Illinois</td>\n",
       "      <td>12406300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>Indiana</td>\n",
       "      <td>6089161</td>\n",
       "      <td>anaidnI</td>\n",
       "      <td>Indiana</td>\n",
       "      <td>6090161</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>Iowa</td>\n",
       "      <td>2926878</td>\n",
       "      <td>awoI</td>\n",
       "      <td>Iowa</td>\n",
       "      <td>2927878</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>Kansas</td>\n",
       "      <td>2675929</td>\n",
       "      <td>sasnaK</td>\n",
       "      <td>Kansas</td>\n",
       "      <td>2676929</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>Kentucky</td>\n",
       "      <td>4028389</td>\n",
       "      <td>ykcutneK</td>\n",
       "      <td>Kentucky</td>\n",
       "      <td>4029389</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>Louisiana</td>\n",
       "      <td>4449489</td>\n",
       "      <td>anaisiuoL</td>\n",
       "      <td>Louisiana</td>\n",
       "      <td>4450489</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>Maine</td>\n",
       "      <td>1271694</td>\n",
       "      <td>eniaM</td>\n",
       "      <td>Maine</td>\n",
       "      <td>1272694</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>Maryland</td>\n",
       "      <td>5274039</td>\n",
       "      <td>dnalyraM</td>\n",
       "      <td>Maryland</td>\n",
       "      <td>5275039</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>Massachusetts</td>\n",
       "      <td>6357515</td>\n",
       "      <td>sttesuhcassaM</td>\n",
       "      <td>Massachusetts</td>\n",
       "      <td>6358515</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>Michigan</td>\n",
       "      <td>9951873</td>\n",
       "      <td>nagihciM</td>\n",
       "      <td>Michigan</td>\n",
       "      <td>9952873</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>Minnesota</td>\n",
       "      <td>4931897</td>\n",
       "      <td>atosenniM</td>\n",
       "      <td>Minnesota</td>\n",
       "      <td>4932897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>Mississippi</td>\n",
       "      <td>2830133</td>\n",
       "      <td>ippississiM</td>\n",
       "      <td>Mississippi</td>\n",
       "      <td>2831133</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>Missouri</td>\n",
       "      <td>5588759</td>\n",
       "      <td>iruossiM</td>\n",
       "      <td>Missouri</td>\n",
       "      <td>5589759</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>Montana</td>\n",
       "      <td>899459</td>\n",
       "      <td>anatnoM</td>\n",
       "      <td>Montana</td>\n",
       "      <td>900459</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>Nebraska</td>\n",
       "      <td>1705040</td>\n",
       "      <td>aksarbeN</td>\n",
       "      <td>Nebraska</td>\n",
       "      <td>1706040</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>Nevada</td>\n",
       "      <td>2010272</td>\n",
       "      <td>adaveN</td>\n",
       "      <td>Nevada</td>\n",
       "      <td>2011272</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>New Hampshire</td>\n",
       "      <td>1239307</td>\n",
       "      <td>erihspmaH weN</td>\n",
       "      <td>New Hampshire</td>\n",
       "      <td>1240307</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>New Jersey</td>\n",
       "      <td>8420023</td>\n",
       "      <td>yesreJ weN</td>\n",
       "      <td>New Jersey</td>\n",
       "      <td>8421023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>New Mexico</td>\n",
       "      <td>1809015</td>\n",
       "      <td>ocixeM weN</td>\n",
       "      <td>New Mexico</td>\n",
       "      <td>1810015</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>New York</td>\n",
       "      <td>18978668</td>\n",
       "      <td>kroY weN</td>\n",
       "      <td>New York</td>\n",
       "      <td>18979668</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>North Carolina</td>\n",
       "      <td>7978581</td>\n",
       "      <td>aniloraC htroN</td>\n",
       "      <td>North Carolina</td>\n",
       "      <td>7979581</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>North Dakota</td>\n",
       "      <td>633621</td>\n",
       "      <td>atokaD htroN</td>\n",
       "      <td>North Dakota</td>\n",
       "      <td>634621</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>Ohio</td>\n",
       "      <td>11355210</td>\n",
       "      <td>oihO</td>\n",
       "      <td>Ohio</td>\n",
       "      <td>11356210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>Oklahoma</td>\n",
       "      <td>3430420</td>\n",
       "      <td>amohalkO</td>\n",
       "      <td>Oklahoma</td>\n",
       "      <td>3431420</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>Oregon</td>\n",
       "      <td>3428319</td>\n",
       "      <td>nogerO</td>\n",
       "      <td>Oregon</td>\n",
       "      <td>3429319</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>Pennsylvania</td>\n",
       "      <td>12276157</td>\n",
       "      <td>ainavlysnneP</td>\n",
       "      <td>Pennsylvania</td>\n",
       "      <td>12277157</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>Rhode Island</td>\n",
       "      <td>1047200</td>\n",
       "      <td>dnalsI edohR</td>\n",
       "      <td>Rhode Island</td>\n",
       "      <td>1048200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>South Carolina</td>\n",
       "      <td>3983917</td>\n",
       "      <td>aniloraC htuoS</td>\n",
       "      <td>South Carolina</td>\n",
       "      <td>3984917</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>South Dakota</td>\n",
       "      <td>752231</td>\n",
       "      <td>atokaD htuoS</td>\n",
       "      <td>South Dakota</td>\n",
       "      <td>753231</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>Tennessee</td>\n",
       "      <td>5685230</td>\n",
       "      <td>eessenneT</td>\n",
       "      <td>Tennessee</td>\n",
       "      <td>5686230</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>Texas</td>\n",
       "      <td>20830810</td>\n",
       "      <td>saxeT</td>\n",
       "      <td>Texas</td>\n",
       "      <td>20831810</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>Utah</td>\n",
       "      <td>2238675</td>\n",
       "      <td>hatU</td>\n",
       "      <td>Utah</td>\n",
       "      <td>2239675</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>Vermont</td>\n",
       "      <td>609480</td>\n",
       "      <td>tnomreV</td>\n",
       "      <td>Vermont</td>\n",
       "      <td>610480</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>Virginia</td>\n",
       "      <td>6955790</td>\n",
       "      <td>ainigriV</td>\n",
       "      <td>Virginia</td>\n",
       "      <td>6956790</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>Washington</td>\n",
       "      <td>5863102</td>\n",
       "      <td>notgnihsaW</td>\n",
       "      <td>Washington</td>\n",
       "      <td>5864102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>West Virginia</td>\n",
       "      <td>1805847</td>\n",
       "      <td>ainigriV tseW</td>\n",
       "      <td>West Virginia</td>\n",
       "      <td>1806847</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>Wisconsin</td>\n",
       "      <td>5372159</td>\n",
       "      <td>nisnocsiW</td>\n",
       "      <td>Wisconsin</td>\n",
       "      <td>5373159</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50</th>\n",
       "      <td>Wyoming</td>\n",
       "      <td>490336</td>\n",
       "      <td>gnimoyW</td>\n",
       "      <td>Wyoming</td>\n",
       "      <td>491336</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               state_raw  population_raw                 state  \\\n",
       "0                Alabama         4438559               amabalA   \n",
       "1                 Alaska          608588                aksalA   \n",
       "2                Arizona         5143931               anozirA   \n",
       "3               Arkansas         2672434              sasnakrA   \n",
       "4             California        33829442            ainrofilaC   \n",
       "5               Colorado         4300877              odaroloC   \n",
       "6            Connecticut         3403620           tucitcennoC   \n",
       "7               Delaware          782386              erawaleD   \n",
       "8   District of Columbia          568103  aibmuloC fo tcirtsiD   \n",
       "9                Florida        15976093               adirolF   \n",
       "10               Georgia         8161776               aigroeG   \n",
       "11                Hawaii         1167027                iiawaH   \n",
       "12                 Idaho         1294560                 ohadI   \n",
       "13              Illinois        12405300              sionillI   \n",
       "14               Indiana         6089161               anaidnI   \n",
       "15                  Iowa         2926878                  awoI   \n",
       "16                Kansas         2675929                sasnaK   \n",
       "17              Kentucky         4028389              ykcutneK   \n",
       "18             Louisiana         4449489             anaisiuoL   \n",
       "19                 Maine         1271694                 eniaM   \n",
       "20              Maryland         5274039              dnalyraM   \n",
       "21         Massachusetts         6357515         sttesuhcassaM   \n",
       "22              Michigan         9951873              nagihciM   \n",
       "23             Minnesota         4931897             atosenniM   \n",
       "24           Mississippi         2830133           ippississiM   \n",
       "25              Missouri         5588759              iruossiM   \n",
       "26               Montana          899459               anatnoM   \n",
       "27              Nebraska         1705040              aksarbeN   \n",
       "28                Nevada         2010272                adaveN   \n",
       "29         New Hampshire         1239307         erihspmaH weN   \n",
       "30            New Jersey         8420023            yesreJ weN   \n",
       "31            New Mexico         1809015            ocixeM weN   \n",
       "32              New York        18978668              kroY weN   \n",
       "33        North Carolina         7978581        aniloraC htroN   \n",
       "34          North Dakota          633621          atokaD htroN   \n",
       "35                  Ohio        11355210                  oihO   \n",
       "36              Oklahoma         3430420              amohalkO   \n",
       "37                Oregon         3428319                nogerO   \n",
       "38          Pennsylvania        12276157          ainavlysnneP   \n",
       "39          Rhode Island         1047200          dnalsI edohR   \n",
       "40        South Carolina         3983917        aniloraC htuoS   \n",
       "41          South Dakota          752231          atokaD htuoS   \n",
       "42             Tennessee         5685230             eessenneT   \n",
       "43                 Texas        20830810                 saxeT   \n",
       "44                  Utah         2238675                  hatU   \n",
       "45               Vermont          609480               tnomreV   \n",
       "46              Virginia         6955790              ainigriV   \n",
       "47            Washington         5863102            notgnihsaW   \n",
       "48         West Virginia         1805847         ainigriV tseW   \n",
       "49             Wisconsin         5372159             nisnocsiW   \n",
       "50               Wyoming          490336               gnimoyW   \n",
       "\n",
       "                state_id  population  \n",
       "0                Alabama     4439559  \n",
       "1                 Alaska      609588  \n",
       "2                Arizona     5144931  \n",
       "3               Arkansas     2673434  \n",
       "4             California    33830442  \n",
       "5               Colorado     4301877  \n",
       "6            Connecticut     3404620  \n",
       "7               Delaware      783386  \n",
       "8   District of Columbia      569103  \n",
       "9                Florida    15977093  \n",
       "10               Georgia     8162776  \n",
       "11                Hawaii     1168027  \n",
       "12                 Idaho     1295560  \n",
       "13              Illinois    12406300  \n",
       "14               Indiana     6090161  \n",
       "15                  Iowa     2927878  \n",
       "16                Kansas     2676929  \n",
       "17              Kentucky     4029389  \n",
       "18             Louisiana     4450489  \n",
       "19                 Maine     1272694  \n",
       "20              Maryland     5275039  \n",
       "21         Massachusetts     6358515  \n",
       "22              Michigan     9952873  \n",
       "23             Minnesota     4932897  \n",
       "24           Mississippi     2831133  \n",
       "25              Missouri     5589759  \n",
       "26               Montana      900459  \n",
       "27              Nebraska     1706040  \n",
       "28                Nevada     2011272  \n",
       "29         New Hampshire     1240307  \n",
       "30            New Jersey     8421023  \n",
       "31            New Mexico     1810015  \n",
       "32              New York    18979668  \n",
       "33        North Carolina     7979581  \n",
       "34          North Dakota      634621  \n",
       "35                  Ohio    11356210  \n",
       "36              Oklahoma     3431420  \n",
       "37                Oregon     3429319  \n",
       "38          Pennsylvania    12277157  \n",
       "39          Rhode Island     1048200  \n",
       "40        South Carolina     3984917  \n",
       "41          South Dakota      753231  \n",
       "42             Tennessee     5686230  \n",
       "43                 Texas    20831810  \n",
       "44                  Utah     2239675  \n",
       "45               Vermont      610480  \n",
       "46              Virginia     6956790  \n",
       "47            Washington     5864102  \n",
       "48         West Virginia     1806847  \n",
       "49             Wisconsin     5373159  \n",
       "50               Wyoming      491336  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from examples_base import *\n",
    "\n",
    "# The state anonymizer reverses the state name.\n",
    "# The population anonymizer adds 1000\n",
    "shelf = Shelf({\n",
    "    'state': Dimension(Census.state, anonymizer=lambda v: v[::-1]),\n",
    "    'population': Metric(func.sum(Census.pop2000), anonymizer=lambda v: v+1000)\n",
    "})\n",
    "\n",
    "# To use the anonymizer, the extension class Anonymize must be used.\n",
    "# and the anonymize flag must be True\n",
    "recipe = Recipe(shelf=shelf, session=oven.Session(), extension_classes=[Anonymize])\\\n",
    "    .dimensions('state').metrics('population').anonymize(True)\n",
    "\n",
    "# Look at the output.\n",
    "print(recipe.to_sql())\n",
    "recipe.dataset.df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SELECT census.state AS state_raw,\n",
      "       sum(census.pop2000) AS population_raw\n",
      "FROM census\n",
      "GROUP BY census.state\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>state_raw</th>\n",
       "      <th>population_raw</th>\n",
       "      <th>state</th>\n",
       "      <th>state_id</th>\n",
       "      <th>population</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Alabama</td>\n",
       "      <td>4438559</td>\n",
       "      <td>Steven Williams</td>\n",
       "      <td>Alabama</td>\n",
       "      <td>4439559</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Alaska</td>\n",
       "      <td>608588</td>\n",
       "      <td>Donald Calderon</td>\n",
       "      <td>Alaska</td>\n",
       "      <td>609588</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Arizona</td>\n",
       "      <td>5143931</td>\n",
       "      <td>Shannon Bean</td>\n",
       "      <td>Arizona</td>\n",
       "      <td>5144931</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Arkansas</td>\n",
       "      <td>2672434</td>\n",
       "      <td>Mr. Kyle Hurst</td>\n",
       "      <td>Arkansas</td>\n",
       "      <td>2673434</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>California</td>\n",
       "      <td>33829442</td>\n",
       "      <td>Stephanie Mitchell</td>\n",
       "      <td>California</td>\n",
       "      <td>33830442</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Colorado</td>\n",
       "      <td>4300877</td>\n",
       "      <td>Alex Graham</td>\n",
       "      <td>Colorado</td>\n",
       "      <td>4301877</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Connecticut</td>\n",
       "      <td>3403620</td>\n",
       "      <td>John Newton</td>\n",
       "      <td>Connecticut</td>\n",
       "      <td>3404620</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Delaware</td>\n",
       "      <td>782386</td>\n",
       "      <td>Samantha Norman</td>\n",
       "      <td>Delaware</td>\n",
       "      <td>783386</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>District of Columbia</td>\n",
       "      <td>568103</td>\n",
       "      <td>Justin Taylor</td>\n",
       "      <td>District of Columbia</td>\n",
       "      <td>569103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>Florida</td>\n",
       "      <td>15976093</td>\n",
       "      <td>Tanya Kelley</td>\n",
       "      <td>Florida</td>\n",
       "      <td>15977093</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>Georgia</td>\n",
       "      <td>8161776</td>\n",
       "      <td>Jacob Koch</td>\n",
       "      <td>Georgia</td>\n",
       "      <td>8162776</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>Hawaii</td>\n",
       "      <td>1167027</td>\n",
       "      <td>Natalie Walsh</td>\n",
       "      <td>Hawaii</td>\n",
       "      <td>1168027</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>Idaho</td>\n",
       "      <td>1294560</td>\n",
       "      <td>Michael Austin</td>\n",
       "      <td>Idaho</td>\n",
       "      <td>1295560</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>Illinois</td>\n",
       "      <td>12405300</td>\n",
       "      <td>Mr. Paul Olson</td>\n",
       "      <td>Illinois</td>\n",
       "      <td>12406300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>Indiana</td>\n",
       "      <td>6089161</td>\n",
       "      <td>Natalie Mcfarland</td>\n",
       "      <td>Indiana</td>\n",
       "      <td>6090161</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>Iowa</td>\n",
       "      <td>2926878</td>\n",
       "      <td>Laurie Smith</td>\n",
       "      <td>Iowa</td>\n",
       "      <td>2927878</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>Kansas</td>\n",
       "      <td>2675929</td>\n",
       "      <td>Robert Baker</td>\n",
       "      <td>Kansas</td>\n",
       "      <td>2676929</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>Kentucky</td>\n",
       "      <td>4028389</td>\n",
       "      <td>Carol Wright</td>\n",
       "      <td>Kentucky</td>\n",
       "      <td>4029389</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>Louisiana</td>\n",
       "      <td>4449489</td>\n",
       "      <td>Michael Harrison</td>\n",
       "      <td>Louisiana</td>\n",
       "      <td>4450489</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>Maine</td>\n",
       "      <td>1271694</td>\n",
       "      <td>Cassandra Berry</td>\n",
       "      <td>Maine</td>\n",
       "      <td>1272694</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>Maryland</td>\n",
       "      <td>5274039</td>\n",
       "      <td>Matthew Warren</td>\n",
       "      <td>Maryland</td>\n",
       "      <td>5275039</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>Massachusetts</td>\n",
       "      <td>6357515</td>\n",
       "      <td>Michael Bryant</td>\n",
       "      <td>Massachusetts</td>\n",
       "      <td>6358515</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>Michigan</td>\n",
       "      <td>9951873</td>\n",
       "      <td>Michelle Nelson</td>\n",
       "      <td>Michigan</td>\n",
       "      <td>9952873</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>Minnesota</td>\n",
       "      <td>4931897</td>\n",
       "      <td>Rebekah Berg</td>\n",
       "      <td>Minnesota</td>\n",
       "      <td>4932897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>Mississippi</td>\n",
       "      <td>2830133</td>\n",
       "      <td>Elaine Wood</td>\n",
       "      <td>Mississippi</td>\n",
       "      <td>2831133</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>Missouri</td>\n",
       "      <td>5588759</td>\n",
       "      <td>Kevin Johnson</td>\n",
       "      <td>Missouri</td>\n",
       "      <td>5589759</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>Montana</td>\n",
       "      <td>899459</td>\n",
       "      <td>Lindsey Adams</td>\n",
       "      <td>Montana</td>\n",
       "      <td>900459</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>Nebraska</td>\n",
       "      <td>1705040</td>\n",
       "      <td>Linda Wade</td>\n",
       "      <td>Nebraska</td>\n",
       "      <td>1706040</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>Nevada</td>\n",
       "      <td>2010272</td>\n",
       "      <td>Mark Hayes</td>\n",
       "      <td>Nevada</td>\n",
       "      <td>2011272</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>New Hampshire</td>\n",
       "      <td>1239307</td>\n",
       "      <td>Matthew Anderson</td>\n",
       "      <td>New Hampshire</td>\n",
       "      <td>1240307</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>New Jersey</td>\n",
       "      <td>8420023</td>\n",
       "      <td>Kathleen Little</td>\n",
       "      <td>New Jersey</td>\n",
       "      <td>8421023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>New Mexico</td>\n",
       "      <td>1809015</td>\n",
       "      <td>Edward Andrews</td>\n",
       "      <td>New Mexico</td>\n",
       "      <td>1810015</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>New York</td>\n",
       "      <td>18978668</td>\n",
       "      <td>Mary James</td>\n",
       "      <td>New York</td>\n",
       "      <td>18979668</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>North Carolina</td>\n",
       "      <td>7978581</td>\n",
       "      <td>Matthew Myers</td>\n",
       "      <td>North Carolina</td>\n",
       "      <td>7979581</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>North Dakota</td>\n",
       "      <td>633621</td>\n",
       "      <td>Luke Huynh</td>\n",
       "      <td>North Dakota</td>\n",
       "      <td>634621</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>Ohio</td>\n",
       "      <td>11355210</td>\n",
       "      <td>Jessica Guerrero</td>\n",
       "      <td>Ohio</td>\n",
       "      <td>11356210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>Oklahoma</td>\n",
       "      <td>3430420</td>\n",
       "      <td>Valerie Zimmerman</td>\n",
       "      <td>Oklahoma</td>\n",
       "      <td>3431420</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>Oregon</td>\n",
       "      <td>3428319</td>\n",
       "      <td>Jennifer Stephenson</td>\n",
       "      <td>Oregon</td>\n",
       "      <td>3429319</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>Pennsylvania</td>\n",
       "      <td>12276157</td>\n",
       "      <td>Timothy Johnson</td>\n",
       "      <td>Pennsylvania</td>\n",
       "      <td>12277157</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>Rhode Island</td>\n",
       "      <td>1047200</td>\n",
       "      <td>Michael Garcia</td>\n",
       "      <td>Rhode Island</td>\n",
       "      <td>1048200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>South Carolina</td>\n",
       "      <td>3983917</td>\n",
       "      <td>Timothy Kramer</td>\n",
       "      <td>South Carolina</td>\n",
       "      <td>3984917</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>South Dakota</td>\n",
       "      <td>752231</td>\n",
       "      <td>Christopher Henson</td>\n",
       "      <td>South Dakota</td>\n",
       "      <td>753231</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>Tennessee</td>\n",
       "      <td>5685230</td>\n",
       "      <td>Michael Rodriguez PhD</td>\n",
       "      <td>Tennessee</td>\n",
       "      <td>5686230</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>Texas</td>\n",
       "      <td>20830810</td>\n",
       "      <td>Eric Cross</td>\n",
       "      <td>Texas</td>\n",
       "      <td>20831810</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>Utah</td>\n",
       "      <td>2238675</td>\n",
       "      <td>Rachael Pratt</td>\n",
       "      <td>Utah</td>\n",
       "      <td>2239675</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>Vermont</td>\n",
       "      <td>609480</td>\n",
       "      <td>Michelle Schultz</td>\n",
       "      <td>Vermont</td>\n",
       "      <td>610480</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>Virginia</td>\n",
       "      <td>6955790</td>\n",
       "      <td>Laura Summers</td>\n",
       "      <td>Virginia</td>\n",
       "      <td>6956790</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>Washington</td>\n",
       "      <td>5863102</td>\n",
       "      <td>Shannon Young</td>\n",
       "      <td>Washington</td>\n",
       "      <td>5864102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>West Virginia</td>\n",
       "      <td>1805847</td>\n",
       "      <td>Connie Mitchell</td>\n",
       "      <td>West Virginia</td>\n",
       "      <td>1806847</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>Wisconsin</td>\n",
       "      <td>5372159</td>\n",
       "      <td>Evan Lee</td>\n",
       "      <td>Wisconsin</td>\n",
       "      <td>5373159</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50</th>\n",
       "      <td>Wyoming</td>\n",
       "      <td>490336</td>\n",
       "      <td>Marcus Williams</td>\n",
       "      <td>Wyoming</td>\n",
       "      <td>491336</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               state_raw  population_raw                  state  \\\n",
       "0                Alabama         4438559        Steven Williams   \n",
       "1                 Alaska          608588        Donald Calderon   \n",
       "2                Arizona         5143931           Shannon Bean   \n",
       "3               Arkansas         2672434         Mr. Kyle Hurst   \n",
       "4             California        33829442     Stephanie Mitchell   \n",
       "5               Colorado         4300877            Alex Graham   \n",
       "6            Connecticut         3403620            John Newton   \n",
       "7               Delaware          782386        Samantha Norman   \n",
       "8   District of Columbia          568103          Justin Taylor   \n",
       "9                Florida        15976093           Tanya Kelley   \n",
       "10               Georgia         8161776             Jacob Koch   \n",
       "11                Hawaii         1167027          Natalie Walsh   \n",
       "12                 Idaho         1294560         Michael Austin   \n",
       "13              Illinois        12405300         Mr. Paul Olson   \n",
       "14               Indiana         6089161      Natalie Mcfarland   \n",
       "15                  Iowa         2926878           Laurie Smith   \n",
       "16                Kansas         2675929           Robert Baker   \n",
       "17              Kentucky         4028389           Carol Wright   \n",
       "18             Louisiana         4449489       Michael Harrison   \n",
       "19                 Maine         1271694        Cassandra Berry   \n",
       "20              Maryland         5274039         Matthew Warren   \n",
       "21         Massachusetts         6357515         Michael Bryant   \n",
       "22              Michigan         9951873        Michelle Nelson   \n",
       "23             Minnesota         4931897           Rebekah Berg   \n",
       "24           Mississippi         2830133            Elaine Wood   \n",
       "25              Missouri         5588759          Kevin Johnson   \n",
       "26               Montana          899459          Lindsey Adams   \n",
       "27              Nebraska         1705040             Linda Wade   \n",
       "28                Nevada         2010272             Mark Hayes   \n",
       "29         New Hampshire         1239307       Matthew Anderson   \n",
       "30            New Jersey         8420023        Kathleen Little   \n",
       "31            New Mexico         1809015         Edward Andrews   \n",
       "32              New York        18978668             Mary James   \n",
       "33        North Carolina         7978581          Matthew Myers   \n",
       "34          North Dakota          633621             Luke Huynh   \n",
       "35                  Ohio        11355210       Jessica Guerrero   \n",
       "36              Oklahoma         3430420      Valerie Zimmerman   \n",
       "37                Oregon         3428319    Jennifer Stephenson   \n",
       "38          Pennsylvania        12276157        Timothy Johnson   \n",
       "39          Rhode Island         1047200         Michael Garcia   \n",
       "40        South Carolina         3983917         Timothy Kramer   \n",
       "41          South Dakota          752231     Christopher Henson   \n",
       "42             Tennessee         5685230  Michael Rodriguez PhD   \n",
       "43                 Texas        20830810             Eric Cross   \n",
       "44                  Utah         2238675          Rachael Pratt   \n",
       "45               Vermont          609480       Michelle Schultz   \n",
       "46              Virginia         6955790          Laura Summers   \n",
       "47            Washington         5863102          Shannon Young   \n",
       "48         West Virginia         1805847        Connie Mitchell   \n",
       "49             Wisconsin         5372159               Evan Lee   \n",
       "50               Wyoming          490336        Marcus Williams   \n",
       "\n",
       "                state_id  population  \n",
       "0                Alabama     4439559  \n",
       "1                 Alaska      609588  \n",
       "2                Arizona     5144931  \n",
       "3               Arkansas     2673434  \n",
       "4             California    33830442  \n",
       "5               Colorado     4301877  \n",
       "6            Connecticut     3404620  \n",
       "7               Delaware      783386  \n",
       "8   District of Columbia      569103  \n",
       "9                Florida    15977093  \n",
       "10               Georgia     8162776  \n",
       "11                Hawaii     1168027  \n",
       "12                 Idaho     1295560  \n",
       "13              Illinois    12406300  \n",
       "14               Indiana     6090161  \n",
       "15                  Iowa     2927878  \n",
       "16                Kansas     2676929  \n",
       "17              Kentucky     4029389  \n",
       "18             Louisiana     4450489  \n",
       "19                 Maine     1272694  \n",
       "20              Maryland     5275039  \n",
       "21         Massachusetts     6358515  \n",
       "22              Michigan     9952873  \n",
       "23             Minnesota     4932897  \n",
       "24           Mississippi     2831133  \n",
       "25              Missouri     5589759  \n",
       "26               Montana      900459  \n",
       "27              Nebraska     1706040  \n",
       "28                Nevada     2011272  \n",
       "29         New Hampshire     1240307  \n",
       "30            New Jersey     8421023  \n",
       "31            New Mexico     1810015  \n",
       "32              New York    18979668  \n",
       "33        North Carolina     7979581  \n",
       "34          North Dakota      634621  \n",
       "35                  Ohio    11356210  \n",
       "36              Oklahoma     3431420  \n",
       "37                Oregon     3429319  \n",
       "38          Pennsylvania    12277157  \n",
       "39          Rhode Island     1048200  \n",
       "40        South Carolina     3984917  \n",
       "41          South Dakota      753231  \n",
       "42             Tennessee     5686230  \n",
       "43                 Texas    20831810  \n",
       "44                  Utah     2239675  \n",
       "45               Vermont      610480  \n",
       "46              Virginia     6956790  \n",
       "47            Washington     5864102  \n",
       "48         West Virginia     1806847  \n",
       "49             Wisconsin     5373159  \n",
       "50               Wyoming      491336  "
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from examples_base import *\n",
    "\n",
    "# The state anonymizer reverses the state name.\n",
    "# The population anonymizer adds 1000\n",
    "shelf = Shelf({\n",
    "    'state': Dimension(Census.state, anonymizer='{fake:name}'),\n",
    "    'population': Metric(func.sum(Census.pop2000), anonymizer=lambda v: v+1000)\n",
    "})\n",
    "\n",
    "# To use the anonymizer, the extension class Anonymize must be used.\n",
    "# and the anonymize flag must be True\n",
    "recipe = Recipe(shelf=shelf, session=oven.Session(), extension_classes=[Anonymize])\\\n",
    "    .dimensions('state').metrics('population').anonymize(True)\n",
    "\n",
    "# Look at the output.\n",
    "print(recipe.to_sql())\n",
    "recipe.dataset.df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Using an anonymizer injects the anonymize function as the last formatter. The original value is available as `ingredient_raw`."
   ]
  }
 ],
 "metadata": {
  "celltoolbar": "Edit Metadata",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
