Skip to content

Instantly share code, notes, and snippets.

@fhoffa
Created September 19, 2013 18:18
Show Gist options
  • Save fhoffa/6627613 to your computer and use it in GitHub Desktop.
Save fhoffa/6627613 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "twiliocon"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": "Check our post explaining this plots at [http://googlecloudplatform.blogspot.com/2013/09/introducing-corr-to-google-bigquery.html](http://googlecloudplatform.blogspot.com/2013/09/introducing-corr-to-google-bigquery.html)\n\n"
},
{
"cell_type": "code",
"collapsed": false,
"input": "import bq\nimport datetime\nimport pandas as pd\nimport tabulate\nclient = bq.Client.Get()",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 18
},
{
"cell_type": "code",
"collapsed": false,
"input": "import matplotlib.pylab as pylab\npylab.rcParams['figure.figsize'] = 8, 6 # that's default image size for this interactive session",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 28
},
{
"cell_type": "code",
"collapsed": false,
"input": "query = \"\"\"SELECT room, COUNT(*) c\nFROM [data-sensing-lab:twiliocon.twiliocon]\nGROUP BY 1\"\"\"\nfields, rows = client.ReadSchemaAndRows(client.Query(query)['configuration']['query']['destinationTable'], max_rows = 1000)\nrows = [[x[0], float(x[1])] for x in rows]\nrows",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "\rWaiting on bqjob_reee3f41cfc200d6_00000141376a4b5f_29 ... (0s) Current status: RUNNING"
},
{
"output_type": "stream",
"stream": "stdout",
"text": " \rWaiting on bqjob_reee3f41cfc200d6_00000141376a4b5f_29 ... (1s) Current status: RUNNING"
},
{
"output_type": "stream",
"stream": "stdout",
"text": " \rWaiting on bqjob_reee3f41cfc200d6_00000141376a4b5f_29 ... (2s) Current status: RUNNING"
},
{
"output_type": "stream",
"stream": "stdout",
"text": " \rWaiting on bqjob_reee3f41cfc200d6_00000141376a4b5f_29 ... (3s) Current status: RUNNING"
},
{
"output_type": "stream",
"stream": "stdout",
"text": " \rWaiting on bqjob_reee3f41cfc200d6_00000141376a4b5f_29 ... (3s) Current status: DONE "
},
{
"output_type": "stream",
"stream": "stdout",
"text": "\n"
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 62,
"text": "[[u'booths', 103726.0],\n [u'lounge', 144160.0],\n [u'cafe', 51464.0],\n [u'create', 87645.0],\n [u'registration', 159101.0],\n [u'east_hallway', 51082.0],\n [u'sun_room', 51469.0],\n [None, 122130.0],\n [u'west_hallway', 56510.0],\n [u'google_booth', 17791.0]]"
}
],
"prompt_number": 62
},
{
"cell_type": "code",
"collapsed": false,
"input": "df = pd.DataFrame(rows)\nfig = figure()\nax = subplot(111)\nwidth=0.8\nax.bar(range(len(df[0])), df[1], width=width)\nax.set_xticks(np.arange(len(df[0])) + width/2)\n_ = ax.set_xticklabels(df[0], rotation=90)",
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\neUlaWppMnjz5sp1abSWOiooKqaio0Lzeejk5OXL27FkpLy+XV155RWbOnClZWVma1e/r6yvFxcXq\n/okTJzS/gtho9G4TEZG3335bevXqJS+99JL8+c9/Fh8fH1m0aJEmdd/Qp4/OnTuHs2fP4oEHHlBD\nvQDg1KlTGDp0KP7zn/9oFsv333+PN95445JhsVr/Qvf398f+/fsbHRr3799f8zmY9IojISEBEydO\nxMKFCxudO5efz6U///zzrVr/xbZu3YqBAwfi1ltv1bTeer6+vjh06JB6L2pra+Hn54d///vfusST\nl5eH3/3ud9i9ezcA4L777sOiRYs0XUtF7zYB6tpl79696NChA4C6099BQUGatMsNffroww8/xKJF\ni1BQUIB+/fqp8k6dOmHatGmaxjJ27FjExMTgySefRPv27QHos5xo/XlaZ2dnbNy4Eb/5zW9QVlbW\nZuI4e/YsgLqOOyMs57py5Uo8++yz6Ny5M+677z7cd999GDRoEDp37qxJ/UOHDkV4eDgee+wxiAg+\n+eQTXaf/iI6OxuOPP65Oqa5atQrR0dGXHY3TWvRuk3oNLybUdEocTY5HdKbVYVdT/P399Q5BREQ+\n++wzKSsrk0OHDsn9998vffv2leTkZM3j2LBhg65x7Nq1q1llWrFarbJo0SJxdXWV9u3ba1ZvbW2t\nJCUlycyZM2XmzJmydu1azeq+nMtNEqnHxJEi+rWJiMjChQvF19dXXnnlFXn55Zeld+/e8uabb2pS\n9w19+qheVVUV3n//fezcuVNdFfjMM89odjUxUDfksWvXrhg1apQaDw4AXbp00SwGAIiKisKiRYvU\nr57S0lLMmjULf//73zWNQ299+/bFgQMHGpXVn9LSUkJCAnbv3o1Dhw6ha9euGDRoEAYNGoR7771X\nsxjqRx8BwIABA3QdfTRkyBBER0erI5fExET8/e9/V9PDaMEIbQLUTUlTPz/Y4MGD0bdvX03qbRNJ\nYerUqaiursakSZPUhUo2Njb429/+plkMbm5ulz1dkZ2drVkMwOWH1mk9BBKo62N59tlnUVRUhMOH\nD+PQoUPYsGED/vznP7dqvfUXz7311lt4/vnnG108t27dOhw8eLBV67+Yo6Mj3N3dERMTg+DgYM0X\nk7l49NHOnTt1HX2Uk5OD6dOnY+/evQCAe++9F+++++4lM+q2Jr3bpF796COgrm9Fq+to2kRSaNiZ\n2VRZW+Dn54cdO3aoI5TS0lLcf//9mncs3nfffViwYAGeeeYZHDhwACICHx8fHD58uFXr/eKLL7Bj\nxw58+OGHeOaZZ1R5p06dMHz4cM1nzxURHD58GLt27VIrjnl6euIf//iHJvX37t0bW7duVUcHJ0+e\nREhISJv8v1FP7zYBgEWLFmHp0qUYNWoURATr16/Hb3/7W02mOb+hO5rr2djY4IcffoCHhweAuqtZ\ntV5DID4+/rJHCpqspNTArFmzcM8992DcuHEQEaxZswZ/+tOfNI0BqOvwHTBggLpvMpk0OZ13//33\n4/7778fkyZN1vXiuXmVlJXJzc3H8+HHk5OSgvLxc005FEUHXrl3VfUdHR02vk6hXf2X1xer/z7z8\n8suaxaJ3mwDA3/72N6Snp6vRRy+++CKCgoKYFK6XBQsWYMiQIeowMCcnR/Nz6PVXjAJ1Q2W3b98O\nf39/zZNCVFQU+vXrh+3bt8NkMmHdunXo2bOnpjEAQNeuXfHDDz+o+0lJSbjjjjs0q1/vi+fqDRw4\nEIMGDcLgwYMxbdo0TYdeAsYZfdShQ4dLfjSdOXMGy5Ytw3//+19Nk4LebVJPr9FHbeL0EQCcP38e\nR48eBQB4eXk16uzVQ3l5OSIjI7F582Zd49DLsWPH8NRTT2HPnj1wcHBAjx49sGrVKs1+vYeGhiIy\nMhJvvPEGPvzwQ6xYsQJdu3bF66+/rkn9RiAiyMvLwzfffNOoQ/PRRx/VNa5Tp07hnXfewbJlyzBu\n3DjMmjXLEFOzaOnNN9/EihUrGp0+mjx5MmbOnNnqdbeJpNBw9BFQt8CK1qOPLheTj4+PSlRtSU1N\nDebMmYM33ngDp0+fRm1tLezs7DSNQe+L+C6eqbYhrWYpFRH4+vriu+++a/W6mqOkpARvvfUWVq1a\nhaioKDz33HOaXhtghDZpSK/RR23i9FFMTAyqq6vx//7f/1Ojj2JiYjQdfdTwA1dbW4vMzEyMGzdO\ns/qNpH379ti9ezdEBB07dtQlBr0v4ps1a5ZmdV2JyWRCv3798PXXXyMwMFDXWH7/+99j3bp1eOqp\np3Do0CHN1kJuyAhtcjH5+Up7LX+7t4kjBSOMPmq4opKNjQ26d+8OV1dXzeo3mmeeeQYFBQUYO3Ys\nbrvtNgDazoa5ceNGDBo0CHl5eZg+fTpOnTqF2NhYREREaFK/UXh5eeGHH37AnXfeqTo1TSaT5qOP\n2rVr12gW44a0ntHYCP7yl79gzZo16vRRcnIyxowZg5deeqnV624TScHf3x+rV69uNPpo7Nixml+o\nZKQpivUWHR19SZlWS6TW1NRg0aJFms9z1FDDufIvpuWX8pXWG67v2yktLdX8Aku9GKVNAMDT0xOH\nDh3CLbfcAqBucIqfn58mp5vbxOmj+tFHd911F0REl9FHRpuiWG/1X8wXX1mthfbt2+Pjjz/WNSl8\n9tlnutXd0NU69kNCQi658vtGZZQ2AQAXFxecO3dOJYXz589rNgqqTSSFe++9F0899RS2b98OBwcH\nhIeHa37J+l//+ld88803l1wk1FaTwqFDhxp1Inbp0kXTL59BgwZh2rRpiIyMRIcOHdS5W39/f03q\nN8I1EtSYEdpk+vTpAOrWVejVqxfCwsIA1C3PqVW/T5tIClFRUbCzs8NLL70EEcE///lPTJw4EWvW\nrNEsBqNcJGQUItLo1ERpaSlqamo0q//AgQMwmUyXjH/fsWOHZjEAxlgPmBrTs0369esHk8mE/v37\nqwW5TCYTgoODNZvVt00khcOHDyMzM1PdHzJkiOYXbBnlIiGj0PvK6uXLl+Ouu+5qVPbjjz9qVn89\nvddopkvp2SaTJ09u1najR4/Gp59+2ioxaHvttk78/f0brb27d+/eRusraOH111/H008/jYMHD+Lf\n//43nn766TZ1odTFoqKisHbtWnTr1g3Ozs5Yt26dpld3jxkz5pIyvU7lWSwW1NTUoH379oiOjkZK\nSooucdD/GL1NWvMHzA19pFA/mqC6uhoDBw6Eq6srTCYTcnNz4eXlpWksJpMJo0ePxujRozWt18h6\n9eqFXr16aVrnkSNHkJmZifLycqxdu1b1JZw6dQrnz5/XNBZA/zWagbpO/+LiYrUiIAA1K+nWrVs1\njcUIjNAmerqhk0JTowm0Oj/XsWPHK9bVFsdf6+3o0aP47LPPUFFR0ejz0alTJyxdulTzeFauXIna\n2lq89957eOutt5Cfn99qpwUu591330VcXBy6deumVgQEoGbN1WyxeAPRu0301iauUyC62J49e3DP\nPffoHYbu3N3d8fXXX7fJL/9fs8stEnW9tIk+BaKLrV27FqdOncJPP/2EkJAQ3H777UhISNA8jt27\ndyM0NBQWiwU9evRAjx49LukAb03du3fXfN4po9O7TeqdPXv2ih3c8+fPb7V6eaRAbZKfnx8OHjyI\n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\n",
"text": "<matplotlib.figure.Figure at 0x55a3c10>"
}
],
"prompt_number": 63
},
{
"cell_type": "code",
"collapsed": false,
"input": "query = '''\nSELECT a.room, a.sensortype, b.room, b.sensortype, CORR(a.data, b.data) corr, COUNT(*) c\nFROM (\n SELECT TIME(USEC_TO_TIMESTAMP(INTEGER(Timestamp / 60000000) * 60000000 - 8*60*60000000)) time, AVG(DATA) data, room, sensortype\n FROM [data-sensing-lab:twiliocon.twiliocon]\n WHERE DATE(USEC_TO_TIMESTAMP(Timestamp- 8*60*60000000)) = '2013-09-18'\n AND sensortype != 'pressure' AND sensortype != 'altitude' AND sensortype != 'totalmotion' AND sensortype != 'humidity'\n GROUP each BY time, room, sensortype) a\nJOIN EACH (\n SELECT TIME(USEC_TO_TIMESTAMP(INTEGER(Timestamp / 60000000) * 60000000 - 8*60*60000000)) time, AVG(data) data, room, sensortype\n FROM [data-sensing-lab:twiliocon.twiliocon]\n WHERE DATE(USEC_TO_TIMESTAMP(Timestamp- 8*60*60000000)) = '2013-09-18'\n AND sensortype != 'pressure' AND sensortype != 'altitude' AND sensortype != 'totalmotion' AND sensortype != 'humidity'\n GROUP each BY time, room, sensortype) b\nON a.time=b.time\nWHERE a.room < b.room\nGROUP BY 1, 2, 3, 4\nHAVING corr is not null\nORDER BY corr DESC\n'''\nfields, rows = client.ReadSchemaAndRows(client.Query(query)['configuration']['query']['destinationTable'], max_rows = 1000)\n",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "\rWaiting on bqjob_r5575378022cea6fa_00000141376a8fdc_30 ... (0s) Current status: RUNNING"
},
{
"output_type": "stream",
"stream": "stdout",
"text": " \rWaiting on bqjob_r5575378022cea6fa_00000141376a8fdc_30 ... (1s) Current status: RUNNING"
},
{
"output_type": "stream",
"stream": "stdout",
"text": " \rWaiting on bqjob_r5575378022cea6fa_00000141376a8fdc_30 ... (2s) Current status: RUNNING"
},
{
"output_type": "stream",
"stream": "stdout",
"text": " \rWaiting on bqjob_r5575378022cea6fa_00000141376a8fdc_30 ... (3s) Current status: RUNNING"
},
{
"output_type": "stream",
"stream": "stdout",
"text": " \rWaiting on bqjob_r5575378022cea6fa_00000141376a8fdc_30 ... (3s) Current status: DONE "
},
{
"output_type": "stream",
"stream": "stdout",
"text": "\n"
}
],
"prompt_number": 64
},
{
"cell_type": "code",
"collapsed": false,
"input": "print tabulate.tabulate(rows[0:20])",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "------------ ----------- ------------ ----------- -------- ----\ncafe temperature registration temperature 0.967113 1432\nregistration temperature west_hallway temperature 0.965861 1396\nsun_room temperature west_hallway temperature 0.957649 1392\ncafe temperature east_hallway temperature 0.955361 1425\ncafe temperature west_hallway temperature 0.954679 1395\nregistration temperature sun_room temperature 0.948838 1428\ncafe temperature sun_room temperature 0.938821 1427\neast_hallway temperature west_hallway temperature 0.934553 1392\neast_hallway temperature sun_room temperature 0.920812 1421\neast_hallway temperature registration temperature 0.920482 1426\nbooths temperature cafe temperature 0.912682 1429\nbooths temperature east_hallway temperature 0.881605 1422\nbooths temperature registration temperature 0.87587 1429\nbooths temperature west_hallway temperature 0.857088 1392\ncafe light east_hallway light 0.841369 1410\nbooths temperature sun_room temperature 0.841148 1424\nbooths gas lounge gas 0.833786 1414\nbooths gas google_booth gas 0.810003 424\nregistration light west_hallway temperature 0.788401 1396\nlounge light registration light 0.784041 1433\n------------ ----------- ------------ ----------- -------- ----\n"
}
],
"prompt_number": 65
},
{
"cell_type": "code",
"collapsed": false,
"input": "print tabulate.tabulate(rows[-20:])",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "------------ ----------- ------------ ----------- --------- ----\nlounge gas sun_room light -0.592363 1414\nbooths gas sun_room light -0.618244 1425\neast_hallway light lounge gas -0.628131 1412\nbooths temperature lounge gas -0.628935 1414\nbooths gas registration mic -0.659795 1429\nlounge gas registration mic -0.667738 1418\nbooths gas registration light -0.670266 1429\nbooths gas east_hallway light -0.69318 1419\nlounge gas registration light -0.704142 1418\nbooths gas lounge light -0.736001 1429\neast_hallway temperature lounge gas -0.789501 1414\ncafe temperature lounge gas -0.790408 1417\nlounge gas registration temperature -0.821811 1418\nlounge gas west_hallway temperature -0.824311 1385\nlounge gas sun_room temperature -0.845697 1413\nbooths gas east_hallway temperature -0.853517 1422\nbooths gas cafe temperature -0.871581 1428\nbooths gas west_hallway temperature -0.88931 1393\nbooths gas registration temperature -0.895455 1429\nbooths gas sun_room temperature -0.912105 1424\n------------ ----------- ------------ ----------- --------- ----\n"
}
],
"prompt_number": 53
},
{
"cell_type": "code",
"collapsed": false,
"input": "print tabulate.tabulate([x for x in rows if x[1]=='mic'][0:20])",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "------------ --- ------------ ----------- -------- ----\nbooths mic lounge mic 0.727837 1419\nregistration mic west_hallway temperature 0.725982 1396\nregistration mic sun_room temperature 0.717888 1428\nbooths mic west_hallway temperature 0.668492 1385\nlounge mic west_hallway temperature 0.658121 1396\nbooths mic east_hallway temperature 0.643513 1412\nbooths mic registration temperature 0.636738 1419\nbooths mic west_hallway mic 0.631887 1408\nbooths mic sun_room temperature 0.630367 1414\nbooths mic cafe temperature 0.624933 1418\nlounge mic sun_room temperature 0.62175 1428\nlounge mic registration mic 0.617497 1433\nbooths mic registration mic 0.613749 1419\nlounge mic registration temperature 0.608534 1433\nbooths mic registration light 0.607512 1419\nbooths mic lounge light 0.602171 1419\nlounge mic west_hallway mic 0.597601 1422\ncreate mic sun_room temperature 0.590251 1428\nregistration mic sun_room light 0.589262 1429\ncreate mic west_hallway temperature 0.584864 1396\n------------ --- ------------ ----------- -------- ----\n"
}
],
"prompt_number": 54
},
{
"cell_type": "code",
"collapsed": false,
"input": "print tabulate.tabulate([x for x in rows if x[0]=='create'][0:20])\nprint tabulate.tabulate([x for x in rows if x[0]=='create'][-20:])",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "------ ----- ------------ ----------- -------- ----\ncreate light lounge light 0.764741 1431\ncreate mic sun_room temperature 0.590251 1428\ncreate mic west_hallway temperature 0.584864 1396\ncreate mic east_hallway temperature 0.582547 1426\ncreate light registration light 0.549755 1431\ncreate mic registration mic 0.546955 1433\ncreate mic registration temperature 0.545615 1433\ncreate mic lounge light 0.532813 1433\ncreate light east_hallway light 0.520559 1421\ncreate mic sun_room light 0.517144 1429\ncreate mic lounge mic 0.502934 1433\ncreate light west_hallway temperature 0.487674 1395\ncreate light registration rf 0.482773 1430\ncreate mic registration light 0.481488 1433\ncreate mic east_hallway light 0.455389 1423\ncreate light sun_room temperature 0.45516 1427\ncreate light sun_room light 0.450955 1427\ncreate light registration temperature 0.450146 1431\ncreate light registration mic 0.412962 1431\ncreate light lounge mic 0.407997 1431\n------ ----- ------------ ----------- -------- ----\n------ ----------- ------------ ----------- ----------- ----\ncreate mic lounge temperature 0.0657353 1433\ncreate temperature west_hallway mic 0.0634842 1418\ncreate temperature lounge motion 0.0612123 1353\ncreate temperature sun_room rf 0.0537885 1428\ncreate temperature google_booth mic 0.0488256 403\ncreate light lounge temperature 0.0410105 1431\ncreate mic google_booth mic 0.0144591 403\ncreate temperature lounge temperature 0.012081 1429\ncreate temperature west_hallway light 0.0101916 1387\ncreate temperature google_booth gas -0.00189062 424\ncreate temperature east_hallway rf -0.0165526 1426\ncreate temperature google_booth temperature -0.0482564 421\ncreate temperature google_booth light -0.0522026 408\ncreate mic google_booth gas -0.10033 424\ncreate temperature lounge gas -0.115112 1415\ncreate mic google_booth temperature -0.199188 421\ncreate light google_booth temperature -0.251924 421\ncreate light lounge gas -0.359512 1417\ncreate light google_booth gas -0.465565 424\ncreate mic lounge gas -0.527529 1418\n------ ----------- ------------ ----------- ----------- ----\n"
}
],
"prompt_number": 55
},
{
"cell_type": "code",
"collapsed": false,
"input": "base_query = '''select t, a_data, b_data\nfrom(\nSELECT a.time t, a.data a_data, sum(a_data) over() a_sum, b.data b_data, sum(b_data) over() b_sum, count(a_data) over() c\nFROM (\n SELECT TIME(USEC_TO_TIMESTAMP(INTEGER(Timestamp / 60000000) * 60000000 - 8*60*60000000)) time, AVG(DATA) data, room\n FROM [data-sensing-lab:twiliocon.twiliocon]\n WHERE DATE(USEC_TO_TIMESTAMP(Timestamp- 8*60*60000000)) = '2013-09-18'\n and sensortype='%s'\n and room = '%s'\n and INTEGER(Timestamp / 60000000) %% 9 = 0\n GROUP each BY time, room) a\nJOIN EACH (\n SELECT TIME(USEC_TO_TIMESTAMP(INTEGER(Timestamp / 60000000) * 60000000 - 8*60*60000000)) time, AVG(data) data, room\n FROM [data-sensing-lab:twiliocon.twiliocon]\n WHERE DATE(USEC_TO_TIMESTAMP(Timestamp- 8*60*60000000)) = '2013-09-18'\n and sensortype='%s'\n AND room = '%s'\n GROUP each BY time, room) b\nON a.time=b.time\n)\norder by t;'''",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 76
},
{
"cell_type": "code",
"collapsed": false,
"input": "r1 = 'create'\nr2 = 'lounge'\ns1 = 'mic'\ns2 = 'gas'\n\nquery = base_query % (s1,r1,s2,r2)\nfields, rows = client.ReadSchemaAndRows(client.Query(query)['configuration']['query']['destinationTable'], max_rows = 1000)\nrows = [[x[0], float(x[1]), float(x[2])] for x in rows]\ndf = pd.DataFrame(rows, columns=[['time'], s1, s2]).plot(title='2nd day in %s' % r1)\n_ = df.set_xticklabels([rows[min(int(x), len(rows)-1)][0][0:5] for x in df.get_xticks()])\n\n",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "\rWaiting on bqjob_r72b819a9511a1647_0000014137707fae_42 ... (0s) Current status: RUNNING"
},
{
"output_type": "stream",
"stream": "stdout",
"text": " \rWaiting on bqjob_r72b819a9511a1647_0000014137707fae_42 ... (1s) Current status: RUNNING"
},
{
"output_type": "stream",
"stream": "stdout",
"text": " \rWaiting on bqjob_r72b819a9511a1647_0000014137707fae_42 ... (2s) Current status: RUNNING"
},
{
"output_type": "stream",
"stream": "stdout",
"text": " \rWaiting on bqjob_r72b819a9511a1647_0000014137707fae_42 ... (3s) Current status: RUNNING"
},
{
"output_type": "stream",
"stream": "stdout",
"text": " \rWaiting on bqjob_r72b819a9511a1647_0000014137707fae_42 ... (5s) Current status: RUNNING"
},
{
"output_type": "stream",
"stream": "stdout",
"text": " \rWaiting on bqjob_r72b819a9511a1647_0000014137707fae_42 ... (5s) Current status: DONE "
},
{
"output_type": "stream",
"stream": "stdout",
"text": "\n"
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": "<matplotlib.figure.Figure at 0x59ad6d0>"
}
],
"prompt_number": 80
},
{
"cell_type": "markdown",
"metadata": {},
"source": "- Follow the most interesting BigQuery news at [http://www.reddit.com/r/bigquery](http://www.reddit.com/r/bigquery). \n\n- Ask your technical questions using the [google-bigquery] tag on [Stack Overflow](http://stackoverflow.com/questions/tagged/google-bigquery)."
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment