

# Uso de comandos mágicos
<a name="notebooks-spark-magics"></a>

Los comandos mágicos, o magics, son comandos especiales que puede ejecutar en una celda de un cuaderno. Por ejemplo, `%env` muestra las variables de entorno de una sesión de cuaderno. Athena admite las funciones mágicas de iPython 6.0.3. 

En esta sección se muestran algunos comandos mágicos de Athena para Apache Spark.
+  Para ver una lista de estos comandos mágicos en Athena, ejecute el comando **%lsmagic** en una celda de un cuaderno. 
+ Para obtener información sobre el uso de los comandos mágicos para crear gráficos en los cuadernos de Athena, consulte [Uso de comandos mágicos para crear gráficos de datos](notebooks-spark-magics-graphs.md).
+ Para obtener información sobre comandos mágicos adicionales, consulte [Comandos mágicos integrados](https://ipython.readthedocs.io/en/stable/interactive/magics.html) en la documentación de IPython.

**nota**  
Actualmente, el comando `%pip` genera un error cuando se ejecuta. Se trata de un problema conocido. 

**Topics**
+ [Comandos mágicos de celda](notebooks-spark-magics-cell-magics.md)
+ [Comandos mágicos de línea](notebooks-spark-magics-line-magics.md)
+ [Comandos mágicos de gráficos](notebooks-spark-magics-graphs.md)

# Uso de comandos mágicos de celda
<a name="notebooks-spark-magics-cell-magics"></a>

Los magics que se escriben en varias líneas van precedidos de un signo de doble porcentaje (`%%`) y se denominan funciones mágicas de celda o magics de celda.

## %%sql
<a name="notebooks-spark-magics-sql"></a>

Este comando mágico de celda permite ejecutar instrucciones SQL directamente sin tener que decorarla con la instrucción SQL de Spark. El comando también muestra el resultado al invocar `.show()` implícitamente en el marco de datos devuelto.

![\[Uso de %%sql.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/notebooks-spark-magics-1.png)


El comando `%%sql` trunca automáticamente las salidas de las columnas a un ancho de 20 caracteres. Esto no se puede configurar actualmente. Para evitar esta limitación, utilice la siguiente sintaxis completa y modifique los parámetros del método `show` según corresponda. 

```
spark.sql("""YOUR_SQL""").show(n=number, truncate=number, vertical=bool)
```
+ **n**`int`, opcional. El número de filas que se mostrarán.
+ **truncate** – `bool` o `int`, opcional: si es `true`, trunca las cadenas de más de 20 caracteres. Si se establece en un número mayor que 1, trunca las cadenas largas hasta la longitud especificada y alinea las celdas a la derecha.
+ **vertical** – `bool`, opcional. Si es `true`, imprime las filas de salida de forma vertical (una línea por valor de columna).

# Uso de comandos mágicos de línea
<a name="notebooks-spark-magics-line-magics"></a>

Los magics que se encuentran en una sola línea van precedidos de un signo de porcentaje (`%`) y se denominan funciones mágicas de línea o magics de línea.

## %help
<a name="notebooks-spark-magics-help"></a>

Muestra descripciones de los comandos mágicos disponibles.

![\[Uso de %help.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/notebooks-spark-magics-2.png)


## %list\$1sessions
<a name="notebooks-spark-magics-list_sessions"></a>

Muestra las sesiones asociadas al cuaderno. La información de cada sesión incluye el ID de la sesión, el estado de la sesión y la fecha y la hora de inicio y finalización de la sesión.

![\[Uso de %list_sessions.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/notebooks-spark-magics-3.png)


## %session\$1id
<a name="notebooks-spark-magics-session_id"></a>

Recupera el ID de la sesión actual.

![\[Uso de session_id.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/notebooks-spark-magics-4.png)


## %set\$1log\$1level
<a name="notebooks-spark-magics-set_log_level"></a>

Establece o restablece el registrador para utilizar el nivel de registro especificado. Los valores posibles son `DEBUG`, `ERROR`, `FATAL`, `INFO` y `WARN` o `WARNING`. Los valores deben estar en mayúsculas y no entre comillas simples o dobles.

![\[Uso de %set_log_level.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/notebooks-spark-magics-5.png)


## %status
<a name="notebooks-spark-magics-status"></a>

Describe la sesión actual. El resultado incluye el ID de la sesión, el estado de la sesión, el nombre del grupo de trabajo, la versión del motor de PySpark y la hora de inicio de la sesión. Este comando mágico requiere una sesión activa para recuperar los detalles de la sesión.

Estos son los posibles valores de estado:

**CREANDO**: se está iniciando la sesión, incluida la adquisición de recursos.

**CREADA**: se ha iniciado la sesión.

**INACTIVA**: la sesión puede aceptar un cálculo.

**OCUPADA**: la sesión está procesando otra tarea y no puede aceptar un cálculo.

**FINALIZANDO**: se está cerrando la sesión.

**FINALIZADA**: la sesión y sus recursos ya no se están ejecutando.

**DEGRADADA**: la sesión no tiene coordinadores en buen estado.

**ERROR**: debido a un error, la sesión y sus recursos ya no se están ejecutando.

![\[Uso de %status.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/notebooks-spark-magics-6.png)


# Uso de comandos mágicos para crear gráficos de datos
<a name="notebooks-spark-magics-graphs"></a>

Los comandos mágicos de línea de esta sección se especializan en representar datos para determinados tipos de datos o en combinación con bibliotecas de gráficos.

## %table
<a name="notebooks-spark-magics-graphs-table"></a>

Puede usar el comando mágico `%table` para mostrar los datos del marco de datos en formato de tabla.

En el siguiente ejemplo, se crea un marco de datos con dos columnas y tres filas de datos y, a continuación, se muestran los datos en formato de tabla.

![\[Uso del comando mágico %table.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/notebooks-spark-magics-graphs-1.png)


## %matplot
<a name="notebooks-spark-magics-graphs-matplot"></a>

[Matplotlib](https://matplotlib.org/) es una biblioteca integral para crear visualizaciones estáticas, animadas e interactivas en Python. Puede usar el comando mágico `%matplot` para crear un gráfico después de importar la biblioteca matplotlib a una celda de un cuaderno.

En el siguiente ejemplo, se importa la biblioteca matplotlib, se crea un conjunto de coordenadas “x” e “y”, y luego se utiliza el comando mágico `%matplot` para crear un gráfico de los puntos.

```
import matplotlib.pyplot as plt 
x=[3,4,5,6,7,8,9,10,11,12] 
y= [9,16,25,36,49,64,81,100,121,144] 
plt.plot(x,y) 
%matplot plt
```

![\[Uso del comando mágico %matplot.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/notebooks-spark-magics-graphs-2.png)


### Uso conjunto de las bibliotecas matplotlib y seaborn
<a name="notebooks-spark-magics-graphs-using-the-matplotlib-and-seaborn-libraries-together"></a>

[Seaborn](https://seaborn.pydata.org/tutorial/introduction) es una biblioteca para hacer gráficos estadísticos en Python. Se basa en matplotlib y se integra perfectamente con las estructuras de datos de [pandas](https://pandas.pydata.org/) (análisis de datos de Python). También se puede usar el comando mágico `%matplot` para representar los datos de seaborn.

En el siguiente ejemplo, se utilizan las bibliotecas matplotlib y seaborn para crear un gráfico de barras sencillo.

```
import matplotlib.pyplot as plt 
import seaborn as sns 

x = ['A', 'B', 'C'] 
y = [1, 5, 3] 

sns.barplot(x, y) 
%matplot plt
```

![\[Uso de %matplot para representar los datos de seaborn.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/notebooks-spark-magics-graphs-3.png)


## %plotly
<a name="notebooks-spark-magics-graphs-plotly"></a>

[Plotly](https://plotly.com/python/) es una biblioteca de gráficos de código abierto para Python que se puede usar para crear gráficos interactivos. El comando mágico `%ploty` se utiliza para representar datos de plotly.

En el siguiente ejemplo, se utilizan las bibliotecas [StringIO](https://docs.python.org/3.13/library/io.html#io.StringIO), plotly y pandas con los datos de precios de las acciones para crear un gráfico de la actividad bursátil de febrero y marzo de 2015.

```
from io import StringIO 
csvString = """ 
Date,AAPL.Open,AAPL.High,AAPL.Low,AAPL.Close,AAPL.Volume,AAPL.Adjusted,dn,mavg,up,direction 
2015-02-17,127.489998,128.880005,126.919998,127.830002,63152400,122.905254,106.7410523,117.9276669,129.1142814,Increasing 
2015-02-18,127.629997,128.779999,127.449997,128.720001,44891700,123.760965,107.842423,118.9403335,130.0382439,Increasing 
2015-02-19,128.479996,129.029999,128.330002,128.449997,37362400,123.501363,108.8942449,119.8891668,130.8840887,Decreasing 
2015-02-20,128.619995,129.5,128.050003,129.5,48948400,124.510914,109.7854494,120.7635001,131.7415509,Increasing 
2015-02-23,130.020004,133,129.660004,133,70974100,127.876074,110.3725162,121.7201668,133.0678174,Increasing 
2015-02-24,132.940002,133.600006,131.169998,132.169998,69228100,127.078049,111.0948689,122.6648335,134.2347981,Decreasing 
2015-02-25,131.559998,131.600006,128.149994,128.789993,74711700,123.828261,113.2119183,123.6296667,134.0474151,Decreasing 
2015-02-26,128.789993,130.869995,126.610001,130.419998,91287500,125.395469,114.1652991,124.2823333,134.3993674,Increasing 
2015-02-27,130,130.570007,128.240005,128.460007,62014800,123.510987,114.9668484,124.8426669,134.7184854,Decreasing 
2015-03-02,129.25,130.279999,128.300003,129.089996,48096700,124.116706,115.8770904,125.4036668,134.9302432,Decreasing 
2015-03-03,128.960007,129.520004,128.089996,129.360001,37816300,124.376308,116.9535132,125.9551669,134.9568205,Increasing 
2015-03-04,129.100006,129.559998,128.320007,128.539993,31666300,123.587892,118.0874253,126.4730002,134.8585751,Decreasing 
2015-03-05,128.580002,128.75,125.760002,126.410004,56517100,121.539962,119.1048311,126.848667,134.5925029,Decreasing 
2015-03-06,128.399994,129.369995,126.260002,126.599998,72842100,121.722637,120.190797,127.2288335,134.26687,Decreasing 
2015-03-09,127.959999,129.570007,125.059998,127.139999,88528500,122.241834,121.6289771,127.631167,133.6333568,Decreasing 
2015-03-10,126.410004,127.220001,123.800003,124.510002,68856600,119.71316,123.1164763,127.9235004,132.7305246,Decreasing 
""" 
csvStringIO = StringIO(csvString) 
 
from io import StringIO 
import plotly.graph_objects as go 
import pandas as pd 
from datetime import datetime 
df = pd.read_csv(csvStringIO) 
fig = go.Figure(data=[go.Candlestick(x=df['Date'], 
open=df['AAPL.Open'], 
high=df['AAPL.High'], 
low=df['AAPL.Low'], 
close=df['AAPL.Close'])]) 
%plotly fig
```

![\[Uso del comando mágico %ploty.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/notebooks-spark-magics-graphs-4.png)
