Loading...

vastorbit.jupyter.extensions.sql_magic.sql_magic

vastorbit.jupyter.extensions.sql_magic.sql_magic(line: str, cell: str | None = None, local_ns: dict | None = None) VastFrame

Executes SQL queries in the Jupyter cell.

Warning

In the case of profiling (using PROFILE keywords), the query will be executed twice: once for profiling and another time to build the VastFrame.

Parameters:
  • --command (-c /) – SQL Command to execute.

  • --file (-f /) – Input File. You can use this option if you want to execute the input file.

  • -ncols (int, optional) – Maximum number of columns to display.

  • -nrows (int, optional) – Maximum number of rows to display.

  • --output (-o /) – Output File. You can use this option if you want to export the result of the query to the CSV or JSON format.

  • -stdin (bool, optional) – If set to False and you’re trying to perform a local copy, the parser will not replace the file name with STDIN, simplifying the ingestion.

Returns:

Result of the query

Return type:

VastFrame

Examples

The following examples demonstrate:

  • Setting up the environment

  • Using SQL Magic

  • Getting the VastFrame of a query

  • Using variables inside a query

  • Limiting the number of rows and columns

  • Exporting a query to JSON or CSV

  • Executing SQL files

Setting up the environment

If you don’t already have a connection, create one:

import vastorbit as vo

# Save a new connection
vo.new_connection(
    {
        "host": "10.211.55.14",
        "port": "5433",
        "database": "testdb",
        "password": "XxX",
        "user": "dbadmin",
    },
    name = "VASTDSN",
)

If you already have a connection in a connection file, you can use it by running the following command:

# Connect using the VASTDSN connection
vo.connect("VASTDSN")

Load the extension:

%load_ext vastorbit.sql

Load a sample dataset. These sample datasets are loaded into the public schema by default. You can specify a target schema with the name and schema parameters:

from vastorbit.datasets import load_titanic, load_iris

titanic = load_titanic()
iris = load_iris()

SQL Magic

Use %%sql to run a query on the dataset:

%%sql
SELECT
    survived,
    AVG(fare) AS avg_fare,
    AVG(age) AS avg_age
FROM titanic
GROUP BY 1;

Execution: 0.006s

123
survived
Integer
123
avg_fare
Double
123
avg_age
Double
1023.35383056930691530.545363489499195
2149.3611836000000128.91824355971897
Rows: 1-2 | Columns: 3

You can also run queries with %sql and the -c option:

%sql -c 'SELECT DISTINCT Species FROM iris;'

Execution: 0.006s

Abc
Species
Varchar(30)
1Iris-setosa
2Iris-virginica
3Iris-versicolor
Rows: 1-3 | Column: Species | Type: varchar(30)

You can use a single cell for multiple queries:

Warning

Don’t forget to include a semicolon at the end of each query.

%%sql
DROP TABLE IF EXISTS test;
CREATE TABLE test AS SELECT 'Badr Ouali' AS name;
SELECT * FROM test;

Execution: 0.05s

Abc
name
Varchar(10)
1Badr Ouali
Rows: 1-1 | Column: name | Type: varchar(10)

To add comments to a query, use one of the following comment syntaxes:

Warning

VAST uses ‘/’ and ‘/’ for both comments and query hints. Whenever possible, use ‘–’ to avoid conflicts.

%%sql
-- Comment Test
/* My VAST Version */
SELECT version() AS version; -- Select my current version

Execution: 0.005s

Abc
version
Varchar
1479
Rows: 1-1 | Column: version | Type: varchar

Get the VastFrame of a query

Results of a SQL Magic query are stored in a VastFrame, which is assigned to a temporary variable called ‘_’. You can assign this temporary variable to a new variable to save your results.

%%sql
SELECT
    age,
    fare,
    pclass
FROM titanic
WHERE age IS NOT NULL AND fare IS NOT NULL;

Execution: 0.007s

123
age
Double
123
fare
Double
123
pclass
Integer
115.08.02923
235.07.753
324.016.13
419.016.13
555.58.053
621.07.7753
724.07.89583
821.07.89583
928.07.89583
1025.07.653
116.012.4753
1227.012.4753
1334.08.053
1424.07.753
1518.07.753
1622.07.89583
1715.07.2253
181.015.74173
1920.015.74173
2019.015.74173
2133.08.053
2212.011.24173
2314.011.24173
2429.07.9253
2528.08.053
2618.07.7753
2726.07.85423
2821.07.85423
2941.07.1253
3039.07.9253
3121.07.83
3228.57.22923
3322.07.753
3461.06.23753
3523.09.2253
3622.07.7753
379.03.17083
3828.022.5253
3942.08.40423
4031.07.85423
4128.07.85423
4232.07.7753
4320.09.2253
4423.08.66253
4520.08.66253
4620.08.66253
4716.09.21673
4831.08.68333
492.021.0753
506.021.0753
513.021.0753
528.021.0753
5329.021.0753
541.039.68753
557.039.68753
562.039.68753
5716.039.68753
5814.039.68753
5941.039.68753
6021.08.66253
6119.014.53
6232.07.89583
630.7513.7753
643.013.7753
6526.013.7753
6621.07.9253
6725.07.9253
6822.07.253
6925.07.7753
7024.08.053
7128.07.89583
7219.07.89583
7325.07.7753
7418.07.7753
7532.08.053
7617.08.66253
7724.08.66253
7838.07.89583
7921.08.053
8010.029.1253
814.029.1253
827.029.1253
832.029.1253
848.029.1253
8539.029.1253
8622.039.68753
8735.07.1253
8850.014.53
8947.014.53
902.020.21253
9118.020.21253
9241.020.21253
9350.08.053
9416.08.053
9525.07.2253
9638.57.253
9714.569.553
9824.09.3253
9921.07.653
10039.07.9253
Rows: 1-100 | Columns: 3

Assign the results to a new variable:

titanic_clean = _
display(titanic_clean)
123
age
Double
123
fare
Double
123
pclass
Integer
115.08.02923
235.07.753
324.016.13
419.016.13
555.58.053
621.07.7753
724.07.89583
821.07.89583
928.07.89583
1025.07.653
116.012.4753
1227.012.4753
1334.08.053
1424.07.753
1518.07.753
1622.07.89583
1715.07.2253
181.015.74173
1920.015.74173
2019.015.74173
2133.08.053
2212.011.24173
2314.011.24173
2429.07.9253
2528.08.053
2618.07.7753
2726.07.85423
2821.07.85423
2941.07.1253
3039.07.9253
3121.07.83
3228.57.22923
3322.07.753
3461.06.23753
3523.09.2253
3622.07.7753
379.03.17083
3828.022.5253
3942.08.40423
4031.07.85423
4128.07.85423
4232.07.7753
4320.09.2253
4423.08.66253
4520.08.66253
4620.08.66253
4716.09.21673
4831.08.68333
492.021.0753
506.021.0753
513.021.0753
528.021.0753
5329.021.0753
541.039.68753
557.039.68753
562.039.68753
5716.039.68753
5814.039.68753
5941.039.68753
6021.08.66253
6119.014.53
6232.07.89583
630.7513.7753
643.013.7753
6526.013.7753
6621.07.9253
6725.07.9253
6822.07.253
6925.07.7753
7024.08.053
7128.07.89583
7219.07.89583
7325.07.7753
7418.07.7753
7532.08.053
7617.08.66253
7724.08.66253
7838.07.89583
7921.08.053
8010.029.1253
814.029.1253
827.029.1253
832.029.1253
848.029.1253
8539.029.1253
8622.039.68753
8735.07.1253
8850.014.53
8947.014.53
902.020.21253
9118.020.21253
9241.020.21253
9350.08.053
9416.08.053
9525.07.2253
9638.57.253
9714.569.553
9824.09.3253
9921.07.653
10039.07.9253
Rows: 1-100 | Columns: 3

Temporary results are stored in a VastFrame, allowing you to call VastFrame methods:

titanic_clean["age"].max()

Using variables inside a query

You can use variables in a SQL query with the ‘:’ operator. This variable can be a VastFrame, a TableSample, a pandas.DataFrame, or any standard Python type.

import vastorbit.sql.functions as vof

class_fare = titanic_clean.groupby(
    "pclass",
    [vof.avg(titanic_clean["fare"])._as("avg_fare")],
)
class_fare
123
pclass
Integer
123
avg_fare
Double
1312.879299000000014
2221.85504444444445
3192.22935845070427
Rows: 1-3 | Columns: 2

Use the ‘class_fare’ variable in a SQL query:

%%sql
SELECT
    x.*,
    y.avg_fare
FROM titanic AS x LEFT JOIN (SELECT * FROM :class_fare) AS y
ON x.pclass = y.pclass;

Execution: 0.011s

123
pclass
Integer
123
survived
Integer
Abc
name
Varchar(164)
Abc
sex
Varchar(20)
123
age
Double
123
sibsp
Integer
123
parch
Integer
Abc
ticket
Varchar(36)
123
fare
Double
Abc
cabin
Varchar(30)
Abc
embarked
Varchar(20)
Abc
boat
Varchar(100)
123
body
Integer
Abc
home.dest
Varchar(100)
123
avg_fare
Double
131McCormack, Mr. Thomas Josephmale[null]003672287.75[null]Q[null][null][null]12.879299000000014
231McCoy, Miss. Agnesfemale[null]2036722623.25[null]Q16[null][null]12.879299000000014
331McCoy, Miss. Aliciafemale[null]2036722623.25[null]Q16[null][null]12.879299000000014
431McCoy, Mr. Bernardmale[null]2036722623.25[null]Q16[null][null]12.879299000000014
531McDermott, Miss. Brigdet Deliafemale[null]003309327.7875[null]Q13[null][null]12.879299000000014
630McEvoy, Mr. Michaelmale[null]003656815.5[null]Q[null][null][null]12.879299000000014
731McGovern, Miss. Maryfemale[null]003309317.8792[null]Q13[null][null]12.879299000000014
831McGowan, Miss. Anna "Annie"female15.0003309238.0292[null]Q[null][null][null]12.879299000000014
930McGowan, Miss. Katherinefemale35.00092327.75[null]Q[null][null][null]12.879299000000014
1030McMahon, Mr. Martinmale[null]003703727.75[null]Q[null][null][null]12.879299000000014
1130McNamee, Mr. Nealmale24.01037656616.1[null]S[null][null][null]12.879299000000014
1230McNamee, Mrs. Neal (Eileen O'Leary)female19.01037656616.1[null]S[null]53[null]12.879299000000014
1330McNeill, Miss. Bridgetfemale[null]003703687.75[null]Q[null][null][null]12.879299000000014
1430Meanwell, Miss. (Marion Ogden)female[null]00SOTON/O.Q. 3920878.05[null]S[null][null][null]12.879299000000014
1530Meek, Mrs. Thomas (Annie Louise Rowley)female[null]003430958.05[null]S[null][null][null]12.879299000000014
1630Meo, Mr. Alfonzomale55.500A.5. 112068.05[null]S[null]201[null]12.879299000000014
1730Mernagh, Mr. Robertmale[null]003687037.75[null]Q[null][null][null]12.879299000000014
1831Midtsjo, Mr. Karl Albertmale21.0003455017.775[null]S15[null][null]12.879299000000014
1930Miles, Mr. Frankmale[null]003593068.05[null]S[null][null][null]12.879299000000014
2030Mineff, Mr. Ivanmale24.0003492337.8958[null]S[null][null][null]12.879299000000014
2130Minkoff, Mr. Lazarmale21.0003492117.8958[null]S[null][null][null]12.879299000000014
2230Mionoff, Mr. Stoytchomale28.0003492077.8958[null]S[null][null][null]12.879299000000014
2330Mitkoff, Mr. Mitomale[null]003492217.8958[null]S[null][null][null]12.879299000000014
2431Mockler, Miss. Helen Mary "Ellie"female[null]003309807.8792[null]Q16[null][null]12.879299000000014
2530Moen, Mr. Sigurd Hansenmale25.0003481237.65F G73S[null]309[null]12.879299000000014
2631Moor, Master. Meiermale6.00139209612.475E121S14[null][null]12.879299000000014
2731Moor, Mrs. (Beila)female27.00139209612.475E121S14[null][null]12.879299000000014
2830Moore, Mr. Leonard Charlesmale[null]00A4. 545108.05[null]S[null][null][null]12.879299000000014
2931Moran, Miss. Berthafemale[null]1037111024.15[null]Q16[null][null]12.879299000000014
3030Moran, Mr. Daniel Jmale[null]1037111024.15[null]Q[null][null][null]12.879299000000014
3130Moran, Mr. Jamesmale[null]003308778.4583[null]Q[null][null][null]12.879299000000014
3230Morley, Mr. Williammale34.0003645068.05[null]S[null][null][null]12.879299000000014
3330Morrow, Mr. Thomas Rowanmale[null]003726227.75[null]Q[null][null][null]12.879299000000014
3431Moss, Mr. Albert Johanmale[null]003129917.775[null]SB[null][null]12.879299000000014
3531Moubarek, Master. Geriosmale[null]11266115.2458[null]CC[null][null]12.879299000000014
3631Moubarek, Master. Halim Gonios ("William George")male[null]11266115.2458[null]CC[null][null]12.879299000000014
3731Moubarek, Mrs. George (Omine "Amenia" Alexander)female[null]02266115.2458[null]CC[null][null]12.879299000000014
3831Moussa, Mrs. (Mantoura Boulos)female[null]0026267.2292[null]C[null][null][null]12.879299000000014
3930Moutal, Mr. Rahamin Haimmale[null]003747468.05[null]S[null][null][null]12.879299000000014
4031Mullens, Miss. Katherine "Katie"female[null]00358527.7333[null]Q16[null][null]12.879299000000014
4131Mulvihill, Miss. Bertha Efemale24.0003826537.75[null]Q15[null][null]12.879299000000014
4230Murdlin, Mr. Josephmale[null]00A./5. 32358.05[null]S[null][null][null]12.879299000000014
4331Murphy, Miss. Katherine "Kate"female[null]1036723015.5[null]Q16[null][null]12.879299000000014
4431Murphy, Miss. Margaret Janefemale[null]1036723015.5[null]Q16[null][null]12.879299000000014
4531Murphy, Miss. Norafemale[null]003656815.5[null]Q16[null][null]12.879299000000014
4630Myhrman, Mr. Pehr Fabian Oliver Malkolmmale18.0003470787.75[null]S[null][null][null]12.879299000000014
4730Naidenoff, Mr. Penkomale22.0003492067.8958[null]S[null][null][null]12.879299000000014
4831Najib, Miss. Adele Kiamie "Jane"female15.00026677.225[null]CC[null][null]12.879299000000014
4931Nakid, Miss. Maria ("Mary")female1.002265315.7417[null]CC[null][null]12.879299000000014
5031Nakid, Mr. Sahidmale20.011265315.7417[null]CC[null][null]12.879299000000014
5131Nakid, Mrs. Said (Waika "Mary" Mowad)female19.011265315.7417[null]CC[null][null]12.879299000000014
5230Nancarrow, Mr. William Henrymale33.000A./5. 33388.05[null]S[null][null][null]12.879299000000014
5330Nankoff, Mr. Minkomale[null]003492187.8958[null]S[null][null][null]12.879299000000014
5430Nasr, Mr. Mustafamale[null]0026527.2292[null]C[null][null][null]12.879299000000014
5530Naughton, Miss. Hannahfemale[null]003652377.75[null]Q[null][null][null]12.879299000000014
5630Nenkoff, Mr. Christomale[null]003492347.8958[null]S[null][null][null]12.879299000000014
5731Nicola-Yarred, Master. Eliasmale12.010265111.2417[null]CC[null][null]12.879299000000014
5831Nicola-Yarred, Miss. Jamilafemale14.010265111.2417[null]CC[null][null]12.879299000000014
5930Nieminen, Miss. Manta Josefinafemale29.00031012977.925[null]S[null][null][null]12.879299000000014
6030Niklasson, Mr. Samuelmale28.0003636118.05[null]S[null][null][null]12.879299000000014
6131Nilsson, Miss. Berta Oliviafemale18.0003470667.775[null]SD[null][null]12.879299000000014
6231Nilsson, Miss. Helmina Josefinafemale26.0003474707.8542[null]S13[null][null]12.879299000000014
6330Nilsson, Mr. August Ferdinandmale21.0003504107.8542[null]S[null][null][null]12.879299000000014
6430Nirva, Mr. Iisakki Antino Aijomale41.000SOTON/O2 31012727.125[null]S[null][null]Finland Sudbury, ON12.879299000000014
6531Niskanen, Mr. Juhamale39.000STON/O 2. 31012897.925[null]S9[null][null]12.879299000000014
6630Nosworthy, Mr. Richard Catermale21.000A/4. 398867.8[null]S[null][null][null]12.879299000000014
6730Novel, Mr. Mansouermale28.50026977.2292[null]C[null]181[null]12.879299000000014
6831Nysten, Miss. Anna Sofiafemale22.0003470817.75[null]S13[null][null]12.879299000000014
6930Nysveen, Mr. Johan Hansenmale61.0003453646.2375[null]S[null][null][null]12.879299000000014
7030O'Brien, Mr. Thomasmale[null]1037036515.5[null]Q[null][null][null]12.879299000000014
7130O'Brien, Mr. Timothymale[null]003309797.8292[null]Q[null][null][null]12.879299000000014
7231O'Brien, Mrs. Thomas (Johanna "Hannah" Godfrey)female[null]1037036515.5[null]Q[null][null][null]12.879299000000014
7330O'Connell, Mr. Patrick Dmale[null]003349127.7333[null]Q[null][null][null]12.879299000000014
7430O'Connor, Mr. Mauricemale[null]003710607.75[null]Q[null][null][null]12.879299000000014
7530O'Connor, Mr. Patrickmale[null]003667137.75[null]Q[null][null][null]12.879299000000014
7630Odahl, Mr. Nils Martinmale23.00072679.225[null]S[null][null][null]12.879299000000014
7730O'Donoghue, Ms. Bridgetfemale[null]003648567.75[null]Q[null][null][null]12.879299000000014
7831O'Driscoll, Miss. Bridgetfemale[null]00143117.75[null]QD[null][null]12.879299000000014
7931O'Dwyer, Miss. Ellen "Nellie"female[null]003309597.8792[null]Q[null][null][null]12.879299000000014
8031Ohman, Miss. Velinfemale22.0003470857.775[null]SC[null][null]12.879299000000014
8131O'Keefe, Mr. Patrickmale[null]003684027.75[null]QB[null][null]12.879299000000014
8231O'Leary, Miss. Hanora "Norah"female[null]003309197.8292[null]Q13[null][null]12.879299000000014
8331Olsen, Master. Artur Karlmale9.001C 173683.1708[null]S13[null][null]12.879299000000014
8430Olsen, Mr. Henry Margidomale28.000C 400122.525[null]S[null]173[null]12.879299000000014
8530Olsen, Mr. Karl Siegwart Andreasmale42.00145798.4042[null]S[null][null][null]12.879299000000014
8630Olsen, Mr. Ole Martinmale[null]00Fa 2653027.3125[null]S[null][null][null]12.879299000000014
8730Olsson, Miss. Elinafemale31.0003504077.8542[null]S[null][null][null]12.879299000000014
8830Olsson, Mr. Nils Johan Goranssonmale28.0003474647.8542[null]S[null][null][null]12.879299000000014
8931Olsson, Mr. Oscar Wilhelmmale32.0003470797.775[null]SA[null][null]12.879299000000014
9030Olsvigen, Mr. Thor Andersonmale20.00065639.225[null]S[null]89Oslo, Norway Cameron, WI12.879299000000014
9130Oreskovic, Miss. Jelkafemale23.0003150858.6625[null]S[null][null][null]12.879299000000014
9230Oreskovic, Miss. Marijafemale20.0003150968.6625[null]S[null][null][null]12.879299000000014
9330Oreskovic, Mr. Lukamale20.0003150948.6625[null]S[null][null][null]12.879299000000014
9430Osen, Mr. Olaf Elonmale16.00075349.2167[null]S[null][null][null]12.879299000000014
9531Osman, Mrs. Marafemale31.0003492448.6833[null]S[null][null][null]12.879299000000014
9630O'Sullivan, Miss. Bridget Maryfemale[null]003309097.6292[null]Q[null][null][null]12.879299000000014
9730Palsson, Master. Gosta Leonardmale2.03134990921.075[null]S[null]4[null]12.879299000000014
9830Palsson, Master. Paul Folkemale6.03134990921.075[null]S[null][null][null]12.879299000000014
9930Palsson, Miss. Stina Violafemale3.03134990921.075[null]S[null][null][null]12.879299000000014
10030Palsson, Miss. Torborg Danirafemale8.03134990921.075[null]S[null][null][null]12.879299000000014
Rows: 1-100 | Columns: 15

You can do the same with a TableSample:

tb = {
    "name": ["Badr", "Arash"],
    "specialty": ["Python", "C++"],
}
tb = vo.TableSample(tb)
%%sql
SELECT * FROM :tb;

Execution: 0.014s

Abc
name
Varchar(5)
Abc
specialty
Varchar(6)
1ArashC++
2BadrPython
Rows: 1-2 | Columns: 2

And with a pandas.DataFrame:

titanic_pandas = titanic.to_pandas()
titanic_pandas
%%sql
SELECT * FROM :titanic_pandas;
123
pclass
Integer
123
survived
Integer
Abc
name
Varchar(132)
Abc
sex
Varchar(50)
123
age
Double
123
sibsp
Integer
123
parch
Integer
123
ticket
Integer
123
fare
Double
Abc
cabin
Varchar(50)
Abc
embarked
Varchar(50)
Abc
boat
Varchar(50)
123
body
Integer
Abc
home_dest
Varchar(50)
131McCormack, Mr. Thomas Josephmale[null]003672287.75[null]Q[null][null][null]
231McCoy, Miss. Agnesfemale[null]2036722623.25[null]Q16[null][null]
331McCoy, Miss. Aliciafemale[null]2036722623.25[null]Q16[null][null]
431McCoy, Mr. Bernardmale[null]2036722623.25[null]Q16[null][null]
531McDermott, Miss. Brigdet Deliafemale[null]003309327.7875[null]Q13[null][null]
630McEvoy, Mr. Michaelmale[null]003656815.5[null]Q[null][null][null]
731McGovern, Miss. Maryfemale[null]003309317.8792[null]Q13[null][null]
831McGowan, Miss. Anna "Annie"female15.0003309238.0292[null]Q[null][null][null]
930McGowan, Miss. Katherinefemale35.00092327.75[null]Q[null][null][null]
1030McMahon, Mr. Martinmale[null]003703727.75[null]Q[null][null][null]
1130McNamee, Mr. Nealmale24.01037656616.1[null]S[null][null][null]
1230McNamee, Mrs. Neal (Eileen O'Leary)female19.01037656616.1[null]S[null]53[null]
1330McNeill, Miss. Bridgetfemale[null]003703687.75[null]Q[null][null][null]
1430Meanwell, Miss. (Marion Ogden)female[null]00[null]8.05[null]S[null][null][null]
1530Meek, Mrs. Thomas (Annie Louise Rowley)female[null]003430958.05[null]S[null][null][null]
1630Meo, Mr. Alfonzomale55.500[null]8.05[null]S[null]201[null]
1730Mernagh, Mr. Robertmale[null]003687037.75[null]Q[null][null][null]
1831Midtsjo, Mr. Karl Albertmale21.0003455017.775[null]S15[null][null]
1930Miles, Mr. Frankmale[null]003593068.05[null]S[null][null][null]
2030Mineff, Mr. Ivanmale24.0003492337.8958[null]S[null][null][null]
2130Minkoff, Mr. Lazarmale21.0003492117.8958[null]S[null][null][null]
2230Mionoff, Mr. Stoytchomale28.0003492077.8958[null]S[null][null][null]
2330Mitkoff, Mr. Mitomale[null]003492217.8958[null]S[null][null][null]
2431Mockler, Miss. Helen Mary "Ellie"female[null]003309807.8792[null]Q16[null][null]
2530Moen, Mr. Sigurd Hansenmale25.0003481237.65F G73S[null]309[null]
2631Moor, Master. Meiermale6.00139209612.475E121S14[null][null]
2731Moor, Mrs. (Beila)female27.00139209612.475E121S14[null][null]
2830Moore, Mr. Leonard Charlesmale[null]00[null]8.05[null]S[null][null][null]
2931Moran, Miss. Berthafemale[null]1037111024.15[null]Q16[null][null]
3030Moran, Mr. Daniel Jmale[null]1037111024.15[null]Q[null][null][null]
3130Moran, Mr. Jamesmale[null]003308778.4583[null]Q[null][null][null]
3230Morley, Mr. Williammale34.0003645068.05[null]S[null][null][null]
3330Morrow, Mr. Thomas Rowanmale[null]003726227.75[null]Q[null][null][null]
3431Moss, Mr. Albert Johanmale[null]003129917.775[null]SB[null][null]
3531Moubarek, Master. Geriosmale[null]11266115.2458[null]CC[null][null]
3631Moubarek, Master. Halim Gonios ("William George")male[null]11266115.2458[null]CC[null][null]
3731Moubarek, Mrs. George (Omine "Amenia" Alexander)female[null]02266115.2458[null]CC[null][null]
3831Moussa, Mrs. (Mantoura Boulos)female[null]0026267.2292[null]C[null][null][null]
3930Moutal, Mr. Rahamin Haimmale[null]003747468.05[null]S[null][null][null]
4031Mullens, Miss. Katherine "Katie"female[null]00358527.7333[null]Q16[null][null]
4131Mulvihill, Miss. Bertha Efemale24.0003826537.75[null]Q15[null][null]
4230Murdlin, Mr. Josephmale[null]00[null]8.05[null]S[null][null][null]
4331Murphy, Miss. Katherine "Kate"female[null]1036723015.5[null]Q16[null][null]
4431Murphy, Miss. Margaret Janefemale[null]1036723015.5[null]Q16[null][null]
4531Murphy, Miss. Norafemale[null]003656815.5[null]Q16[null][null]
4630Myhrman, Mr. Pehr Fabian Oliver Malkolmmale18.0003470787.75[null]S[null][null][null]
4730Naidenoff, Mr. Penkomale22.0003492067.8958[null]S[null][null][null]
4831Najib, Miss. Adele Kiamie "Jane"female15.00026677.225[null]CC[null][null]
4931Nakid, Miss. Maria ("Mary")female1.002265315.7417[null]CC[null][null]
5031Nakid, Mr. Sahidmale20.011265315.7417[null]CC[null][null]
5131Nakid, Mrs. Said (Waika "Mary" Mowad)female19.011265315.7417[null]CC[null][null]
5230Nancarrow, Mr. William Henrymale33.000[null]8.05[null]S[null][null][null]
5330Nankoff, Mr. Minkomale[null]003492187.8958[null]S[null][null][null]
5430Nasr, Mr. Mustafamale[null]0026527.2292[null]C[null][null][null]
5530Naughton, Miss. Hannahfemale[null]003652377.75[null]Q[null][null][null]
5630Nenkoff, Mr. Christomale[null]003492347.8958[null]S[null][null][null]
5731Nicola-Yarred, Master. Eliasmale12.010265111.2417[null]CC[null][null]
5831Nicola-Yarred, Miss. Jamilafemale14.010265111.2417[null]CC[null][null]
5930Nieminen, Miss. Manta Josefinafemale29.00031012977.925[null]S[null][null][null]
6030Niklasson, Mr. Samuelmale28.0003636118.05[null]S[null][null][null]
6131Nilsson, Miss. Berta Oliviafemale18.0003470667.775[null]SD[null][null]
6231Nilsson, Miss. Helmina Josefinafemale26.0003474707.8542[null]S13[null][null]
6330Nilsson, Mr. August Ferdinandmale21.0003504107.8542[null]S[null][null][null]
6430Nirva, Mr. Iisakki Antino Aijomale41.000[null]7.125[null]S[null][null]Finland Sudbury, ON
6531Niskanen, Mr. Juhamale39.000[null]7.925[null]S9[null][null]
6630Nosworthy, Mr. Richard Catermale21.000[null]7.8[null]S[null][null][null]
6730Novel, Mr. Mansouermale28.50026977.2292[null]C[null]181[null]
6831Nysten, Miss. Anna Sofiafemale22.0003470817.75[null]S13[null][null]
6930Nysveen, Mr. Johan Hansenmale61.0003453646.2375[null]S[null][null][null]
7030O'Brien, Mr. Thomasmale[null]1037036515.5[null]Q[null][null][null]
7130O'Brien, Mr. Timothymale[null]003309797.8292[null]Q[null][null][null]
7231O'Brien, Mrs. Thomas (Johanna "Hannah" Godfrey)female[null]1037036515.5[null]Q[null][null][null]
7330O'Connell, Mr. Patrick Dmale[null]003349127.7333[null]Q[null][null][null]
7430O'Connor, Mr. Mauricemale[null]003710607.75[null]Q[null][null][null]
7530O'Connor, Mr. Patrickmale[null]003667137.75[null]Q[null][null][null]
7630Odahl, Mr. Nils Martinmale23.00072679.225[null]S[null][null][null]
7730O'Donoghue, Ms. Bridgetfemale[null]003648567.75[null]Q[null][null][null]
7831O'Driscoll, Miss. Bridgetfemale[null]00143117.75[null]QD[null][null]
7931O'Dwyer, Miss. Ellen "Nellie"female[null]003309597.8792[null]Q[null][null][null]
8031Ohman, Miss. Velinfemale22.0003470857.775[null]SC[null][null]
8131O'Keefe, Mr. Patrickmale[null]003684027.75[null]QB[null][null]
8231O'Leary, Miss. Hanora "Norah"female[null]003309197.8292[null]Q13[null][null]
8331Olsen, Master. Artur Karlmale9.001[null]3.1708[null]S13[null][null]
8430Olsen, Mr. Henry Margidomale28.000[null]22.525[null]S[null]173[null]
8530Olsen, Mr. Karl Siegwart Andreasmale42.00145798.4042[null]S[null][null][null]
8630Olsen, Mr. Ole Martinmale[null]00[null]7.3125[null]S[null][null][null]
8730Olsson, Miss. Elinafemale31.0003504077.8542[null]S[null][null][null]
8830Olsson, Mr. Nils Johan Goranssonmale28.0003474647.8542[null]S[null][null][null]
8931Olsson, Mr. Oscar Wilhelmmale32.0003470797.775[null]SA[null][null]
9030Olsvigen, Mr. Thor Andersonmale20.00065639.225[null]S[null]89Oslo, Norway Cameron, WI
9130Oreskovic, Miss. Jelkafemale23.0003150858.6625[null]S[null][null][null]
9230Oreskovic, Miss. Marijafemale20.0003150968.6625[null]S[null][null][null]
9330Oreskovic, Mr. Lukamale20.0003150948.6625[null]S[null][null][null]
9430Osen, Mr. Olaf Elonmale16.00075349.2167[null]S[null][null][null]
9531Osman, Mrs. Marafemale31.0003492448.6833[null]S[null][null][null]
9630O'Sullivan, Miss. Bridget Maryfemale[null]003309097.6292[null]Q[null][null][null]
9730Palsson, Master. Gosta Leonardmale2.03134990921.075[null]S[null]4[null]
9830Palsson, Master. Paul Folkemale6.03134990921.075[null]S[null][null][null]
9930Palsson, Miss. Stina Violafemale3.03134990921.075[null]S[null][null][null]
10030Palsson, Miss. Torborg Danirafemale8.03134990921.075[null]S[null][null][null]
Rows: 1-100 | Columns: 14

You can also use a sample loop with a variable:

Note

vastorbit will store the object in a temporary local table before executing the overall query, which facilitates integration with in-memory objects.

%sql -c 'DROP TABLE IF EXISTS test;'
%sql -c 'CREATE TABLE test (id INT);'
for i in range(4):
    %sql -c 'INSERT INTO test(id) SELECT :i;'

DROP

Execution: 0.014s

CREATE

Execution: 0.008s

INSERT

Execution: 0.05s

INSERT

Execution: 0.015s

INSERT

Execution: 0.016s

INSERT

Execution: 0.013s

%sql -c 'DROP TABLE IF EXISTS test;'
%sql -c 'CREATE TABLE test (id INT);'
for i in range(4):
    %sql -c 'INSERT INTO test(id) SELECT :i;'
%%sql
SELECT * FROM test;

Execution: 0.005s

123
id
Integer
10
21
32
43
Rows: 1-4 | Column: id | Type: integer

Change the maximum number of rows/columns to display

Use the -nrows and -ncols option to limit the number of rows and columns displayed:

%%sql -nrows 5 -ncols 2
SELECT * FROM default.titanic;

Execution: 0.008s

123
pclass
Integer
...
Abc
home.dest
Varchar(100)
13...[null]
23...[null]
33...[null]
43...[null]
53...[null]
Rows: 1-5 | Columns: 14

Export results to a JSON or CSV file

To export the results of a query to a CSV file:

%%sql -o titanic_age_clean.csv
SELECT
    *
FROM default.titanic
WHERE age IS NOT NULL LIMIT 5;

Execution: 0.008s

123
pclass
Integer
123
survived
Integer
Abc
name
Varchar(164)
Abc
sex
Varchar(20)
123
age
Double
123
sibsp
Integer
123
parch
Integer
Abc
ticket
Varchar(36)
123
fare
Double
Abc
cabin
Varchar(30)
Abc
embarked
Varchar(20)
Abc
boat
Varchar(100)
123
body
Integer
Abc
home.dest
Varchar(100)
111Allen, Miss. Elisabeth Waltonfemale29.00024160211.3375B5S2[null]St Louis, MO
211Allison, Master. Hudson Trevormale0.9212113781151.55C22 C26S11[null]Montreal, PQ / Chesterville, ON
310Allison, Miss. Helen Lorainefemale2.012113781151.55C22 C26S[null][null]Montreal, PQ / Chesterville, ON
410Allison, Mr. Hudson Joshua Creightonmale30.012113781151.55C22 C26S[null]135Montreal, PQ / Chesterville, ON
510Allison, Mrs. Hudson J C (Bessie Waldo Daniels)female25.012113781151.55C22 C26S[null][null]Montreal, PQ / Chesterville, ON
Rows: 5 | Columns: 14
file = open("titanic_age_clean.csv", "r")
print(file.read())
file.close()

To export the results of a query to a JSON file:

%%sql -o titanic_age_clean.json
SELECT
    *
FROM default.titanic
WHERE age IS NOT NULL LIMIT 5;

Execution: 0.008s

123
pclass
Integer
123
survived
Integer
Abc
name
Varchar(164)
Abc
sex
Varchar(20)
123
age
Double
123
sibsp
Integer
123
parch
Integer
Abc
ticket
Varchar(36)
123
fare
Double
Abc
cabin
Varchar(30)
Abc
embarked
Varchar(20)
Abc
boat
Varchar(100)
123
body
Integer
Abc
home.dest
Varchar(100)
131McGowan, Miss. Anna "Annie"female15.0003309238.0292[null]Q[null][null][null]
230McGowan, Miss. Katherinefemale35.00092327.75[null]Q[null][null][null]
330McNamee, Mr. Nealmale24.01037656616.1[null]S[null][null][null]
430McNamee, Mrs. Neal (Eileen O'Leary)female19.01037656616.1[null]S[null]53[null]
530Meo, Mr. Alfonzomale55.500A.5. 112068.05[null]S[null]201[null]
Rows: 5 | Columns: 14
file = open("titanic_age_clean.json", "r")
print(file.read())
file.close()

Execute SQL files

To execute commands from a SQL file, use the following syntax:

file = open("query.sql", "w+")
file.write("SELECT version() AS version")
file.close()

Using the -f option, we can easily read SQL files:

%sql -f query.sql

Execution: 0.006s

Abc
version
Varchar
1479
Rows: 1-1 | Column: version | Type: varchar