

# 使用单元格魔术
<a name="notebooks-spark-magics-cell-magics"></a>

多行书写的魔术命令前有双百分号（`%%`），称为单元格魔术命令函数或单元格魔术命令。

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

此单元格魔术命令允许直接运行 SQL 语句，而无需使用 Spark SQL 语句对其进行装饰。该命令还通过隐式调用 `.show()` 在返回的数据框上显示输出。

![\[使用%%sql。\]](http://docs.aws.amazon.com/zh_cn/athena/latest/ug/images/notebooks-spark-magics-1.png)


`%%sql` 命令会自动将列输出截断为 20 个字符宽度。目前，无法配置此设置。要绕过此限制，使用以下完整语法并相应地修改 `show` 方法的参数。

```
spark.sql("""YOUR_SQL""").show(n=number, truncate=number, vertical=bool)
```
+ **n** `int`（可选）。要显示的行数。
+ **截断** - `bool` 或 `int`（可选）- 如果为 `true`，则截断的字符串长度超过 20 个字符。当设置为大于 1 的数字时，讲按指定长度截断长字符串，并使单元格右对齐。
+ **垂直** - `bool`（可选）。如果为 `true`，则垂直发送输出行（每列值一行）。