https://github.com/quansight/ipymapd
Interactive tools for MapD Ibis
https://github.com/quansight/ipymapd
Last synced: 6 months ago
JSON representation
Interactive tools for MapD Ibis
- Host: GitHub
- URL: https://github.com/quansight/ipymapd
- Owner: Quansight
- Created: 2018-08-06T20:02:53.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-08-06T21:09:57.000Z (almost 8 years ago)
- Last Synced: 2025-03-10T15:17:09.399Z (over 1 year ago)
- Language: Jupyter Notebook
- Size: 65.4 KB
- Stars: 0
- Watchers: 51
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: readme.ipynb
Awesome Lists containing this project
README
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Interactive tools for MapD\n",
"\n",
"MapD is cool technology. This tool bundles MapD technologies into a user friendly IPython API."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%reload_ext ipymapd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Connecting to a database"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* List known connections"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Return known MapD database connections using a configuration file."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" %mapd connect"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Connect to a database connection."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" contains the tables: ['flights_donotmodify', 'contributions_donotmodify', 'tweets_nov_feb', 'zipcodes_orig', 'zipcodes', 'demo_vote_clean']\n"
]
}
],
"source": [
"%mapd connect metis"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"List the tables in the connection. This could return a sick widget to explore the data."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" %mapd table metis --interactive"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Connect to a database using arguments"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" %mapd connect \\\n",
" --user mapd \\\n",
" --password HyperInteractive \\\n",
" --host metis.mapd.com \\\n",
" --port 443 \\\n",
" --database mapd \\\n",
" --protocol https "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Queries\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\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",
"\n",
"\n",
" \n",
" \n",
" \n",
" x\n",
" y\n",
" rowid\n",
" \n",
" \n",
" \n",
" \n",
" 0\n",
" -13563874.0\n",
" 4.384050e+06\n",
" 4448\n",
" \n",
" \n",
" 1\n",
" -4913196.5\n",
" -2.574509e+06\n",
" 10016\n",
" \n",
" \n",
" 2\n",
" -7009535.0\n",
" -4.230903e+06\n",
" 4608\n",
" \n",
" \n",
" 3\n",
" 11907241.0\n",
" -6.886003e+05\n",
" 4576\n",
" \n",
" \n",
" 4\n",
" -7630287.0\n",
" -3.707356e+06\n",
" 9408\n",
" \n",
" \n",
" 5\n",
" -8239380.0\n",
" 4.968139e+06\n",
" 9888\n",
" \n",
" \n",
" 6\n",
" -5436762.0\n",
" -3.040998e+06\n",
" 4416\n",
" \n",
" \n",
" 7\n",
" 13476805.0\n",
" 1.632640e+06\n",
" 4960\n",
" \n",
" \n",
" 8\n",
" -8241296.5\n",
" 4.973656e+06\n",
" 4449\n",
" \n",
" \n",
" 9\n",
" -7277123.5\n",
" -3.884417e+06\n",
" 9984\n",
" \n",
" \n",
"\n",
""
],
"text/plain": [
" x y rowid\n",
"0 -13563874.0 4.384050e+06 4448\n",
"1 -4913196.5 -2.574509e+06 10016\n",
"2 -7009535.0 -4.230903e+06 4608\n",
"3 11907241.0 -6.886003e+05 4576\n",
"4 -7630287.0 -3.707356e+06 9408\n",
"5 -8239380.0 4.968139e+06 9888\n",
"6 -5436762.0 -3.040998e+06 4416\n",
"7 13476805.0 1.632640e+06 4960\n",
"8 -8241296.5 4.973656e+06 4449\n",
"9 -7277123.5 -3.884417e+06 9984"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%mapd \n",
"SELECT goog_x as x, goog_y as y, tweets_nov_feb.rowid FROM tweets_nov_feb limit 10"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Visualization\n",
"\n",
"The `mapd` magic may accept yaml in the body. When `yaml` is used we return a visualization."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.mapd.vega+json": {
"connection": {
"dbName": "mapd",
"host": "metis.mapd.com",
"password": "HyperInteractive",
"port": "443",
"protocol": "https",
"user": "mapd"
},
"vega": {
"config": {
"ticks": false
},
"data": [
{
"name": "tweets",
"sql": "SELECT goog_x as x, goog_y as y, tweets_nov_feb.rowid FROM tweets_nov_feb"
}
],
"height": 564,
"marks": [
{
"from": {
"data": "tweets"
},
"properties": {
"fillColor": "green",
"size": {
"value": 1
},
"x": {
"field": "x",
"scale": "x"
},
"y": {
"field": "y",
"scale": "y"
}
},
"type": "points"
}
],
"scales": [
{
"domain": [
3650484.1235206556,
7413325.514451755
],
"name": "x",
"range": "width",
"type": "linear"
},
{
"domain": [
5778161.9183506705,
10471808.487466192
],
"name": "y",
"range": "height",
"type": "linear"
}
],
"width": 384
}
},
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAI0CAYAAAAUdP5BAAAgAElEQVR4Xu3dCfwdZX3v8W82AgGyBwIhZCEhC4QQwh6SkEASIkKAsO+bgaIioOyyqMUdl1pttS2oVMW1LlC9Xl9at9Yu1vZ2eXm99Wpre9vrfV2v7W3tq7VX7+834YSTk/M/Z+bMMzPPzHweXxEx58w8z/uZMzPP9nskEgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggg0CKB6VrYotJS1OgFZmmpDteJ0eeTDCLQBIEF2tCEYlCGpghwQTalJikHAggggAACCCCAAAIIIIAAAggggAACCCCAQAUC+2u65mp1BWfmlAgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEBNBRZqY01zTrYRQAABBHIJLNCG5PsztDjXcfgyAggggEBNBVZqZ01zTrYRQAABBBBAAAEEEEAgu8CBmpP9S3wDAQQQQKD+AnQB1b8OKQECCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEDLBHzXqc16dctKTXERQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAAB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",
"text/plain": [
""
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%mapd\n",
"width: 384\n",
"height: 564\n",
"config: {ticks: false}\n",
"data:\n",
" - name: 'tweets'\n",
" sql: 'SELECT goog_x as x, goog_y as y, tweets_nov_feb.rowid FROM tweets_nov_feb' \n",
"scales:\n",
" - name: 'x'\n",
" type: 'linear'\n",
" domain: [3650484.1235206556, 7413325.514451755]\n",
" range: 'width'\n",
" - name: 'y'\n",
" type: 'linear'\n",
" domain: [5778161.9183506705, 10471808.487466192]\n",
" range: 'height'\n",
"marks:\n",
" - type: 'points'\n",
" from: {data: 'tweets'}\n",
" properties:\n",
" x: {scale: 'x', field: 'x'}\n",
" y: {scale: 'y', field: 'y'}\n",
" fillColor: 'green'\n",
" size: {value: 1}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Disconnect the last database that was created"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"%mapd disconnect "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Completion\n",
"\n",
"* Queries have completion\n",
"* The line magic has completion"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Alternatives\n",
"\n",
"* ibis.mapd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Assumptions\n",
"\n",
"* A user will experiment with a query before visualizing it.\n",
"* Typing out the connection information in _unfun_"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[NbConvertApp] Converting notebook readme.ipynb to markdown\n",
"[NbConvertApp] Writing 4364 bytes to readme.md\n",
"[NbConvertApp] Converting notebook ipymapd/arguments.ipynb to python\n",
"[NbConvertApp] Writing 1843 bytes to ipymapd/arguments.py\n",
"[NbConvertApp] Converting notebook ipymapd/connection.ipynb to python\n",
"[NbConvertApp] Writing 1487 bytes to ipymapd/connection.py\n",
"[NbConvertApp] Converting notebook ipymapd/isql.ipynb to python\n",
"[NbConvertApp] Writing 799 bytes to ipymapd/isql.py\n",
"[NbConvertApp] Converting notebook ipymapd/magics.ipynb to python\n",
"[NbConvertApp] Writing 3461 bytes to ipymapd/magics.py\n"
]
}
],
"source": [
"if __name__ == '__main__':\n",
" !jupyter nbconvert --to markdown readme.ipynb\n",
" !jupyter nbconvert --to python ipymapd/*.ipynb"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "p6",
"language": "python",
"name": "other-env"
},
"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.6.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}