

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 Amazon Neptune 笔记本中使用魔术
<a name="notebooks-magics"></a>

Neptune Workbench 在笔记本中提供了许多所谓的*魔术*命令，可以节省大量的时间和精力。它们分为两类：*行魔术命令*和*单元格魔术命令*。

*行魔术命令*是指前面有单个百分号 (`%`) 的命令。它们只接受行输入，而不接受来自单元格正文其余部分的输入。Neptune Workbench 提供了以下行魔术命令：
+ [%seed](#notebooks-line-magics-seed)
+ [%load](#notebooks-line-magics-load)
+ [%load\$1ids](#notebooks-line-magics-load-ids)
+ [%load\$1status](#notebooks-line-magics-load-status)
+ [%cancel\$1load](#notebooks-line-magics-cancel-load)
+ [%status](#notebooks-line-magics-status)
+ [%gremlin\$1status](#notebooks-line-magics-gremlin-status)
+ [%opencypher\$1status 或 %oc\$1status](#notebooks-line-magics-opencypher-status)
+ [`%stream_viewer`](#notebooks-line-magics-stream-viewer)
+ [%sparql\$1status](#notebooks-line-magics-sparql-status)
+ [%graph\$1notebook\$1config](#notebooks-line-magics-graph-notebook-config)
+ [%graph\$1notebook\$1host](#notebooks-line-magics-graph-notebook-host)
+ [%graph\$1notebook\$1version](#notebooks-line-magics-graph-notebook-version)
+ [%graph\$1notebook\$1service](#notebooks-line-magics-graph-notebook-service)
+ [%graph\$1notebook\$1vis\$1options](#notebooks-line-magics-graph-notebook-vis-options)
+ [%statistics](#notebooks-line-magics-statistics)
+ [%summary](#notebooks-line-magics-summary)
+ [%reset\$1graph](#notebooks-line-magics-reset-graph)
+ [%get\$1graph](#notebooks-line-magics-get-graph)
+ [% 度分布](#notebooks-line-magics-degreeDistribution)

*单元格魔术命令*前面有两个百分号 (`%%`)，而不是一个百分号，它们使用单元格内容作为输入，尽管它们也可以将行内容作为输入。Neptune Workbench 提供以下单元格魔术命令：
+ [%%sparql](#notebooks-cell-magics-sparql)
+ [%%gremlin](#notebooks-cell-magics-gremlin)
+ [%%opencypher 或 %%oc](#notebooks-cell-magics-opencypher)
+ [%%graph\$1notebook\$1config](#notebooks-cell-magics-graph-notebook-config)
+ [%%graph\$1notebook\$1vis\$1options](#notebooks-cell-magics-graph-notebook-vis-options)

还有两种魔术命令（行魔术命令和单元格魔术命令）可用来处理[Neptune 机器学习](machine-learning.md)：
+ [%neptune\$1ml](#notebooks-line-magics-neptune_ml)
+ [%%neptune\$1ml](#notebooks-cell-magics-neptune_ml)

**注意**  
使用 Neptune 魔术命令时，您通常可以使用 `--help` 或 `-h` 参数获取帮助文本。有了单元格魔术命令，正文就不可能为空，所以在寻求帮助时，在正文内放上填充文字，甚至是单个字符。例如：  

```
%%gremlin --help
  x
```

## 单元格或行魔术命令中的变量注入
<a name="notebook-magics-variable-injection"></a>

可以在笔记本中的任何单元格或行魔术命令中使用以下格式引用笔记本中定义的变量：`${VAR_NAME}`。

例如，假设您定义了以下变量：

```
c = 'code'
my_edge_labels = '{"route":"dist"}'
```

然后，单元格魔术命令中的这一 Gremlin 查询：

```
%%gremlin -de $my_edge_labels
g.V().has('${c}','SAF').out('route').values('${c}')
```

等同于：

```
%%gremlin -de {"route":"dist"}
g.V().has('code','SAF').out('route').values('code')
```

## 适用于所有查询语言的查询参数
<a name="notebook-magics-query-args"></a>

以下查询参数可与 Neptune Workbench 中的 `%%gremlin`、`%%opencypher` 和 `%%sparql` 魔术命令一起使用：

**常用查询参数**
+ **`--store-to`**（或 **`-s`**）- 指定用于存储查询结果的变量的名称。
+ **`--silent`** – 如果存在，则查询完成后不显示任何输出。

  
+ **`--group-by`**（或 **`-g`**）- 指定用于对节点进行分组的属性（例如 `code` 或 `T.region`）。顶点根据其分配的组进行着色。
+ **`--ignore-groups`** – 如果存在，则忽略所有分组选项。
+ **`--display-property`**（或 **`-d`**）- 指定应为每个顶点显示其值的属性。

  每种查询语言的默认值如下：
  + 对于 Gremlin：`T.label`。
  + 对于 openCypher：`~labels`。
  + 对于 SPARQL：`type`。
+ **`--edge-display-property`**（或 **`-t`**）- 指定应为每个边缘显示其值的属性。

  每种查询语言的默认值如下：
  + 对于 Gremlin：`T.label`。
  + 对于 openCypher：`~labels`。
  + 对于 SPARQL：`type`。
+ **`--tooltip-property`**（或 **`-de`**）- 指定一个属性，其值应显示为每个节点的工具提示。

  每种查询语言的默认值如下：
  + 对于 Gremlin：`T.label`。
  + 对于 openCypher：`~labels`。
  + 对于 SPARQL：`type`。
+ **`--edge-tooltip-property`**（或 **`-te`**）- 指定一个属性，其值应显示为每个边缘的工具提示。

  每种查询语言的默认值如下：
  + 对于 Gremlin：`T.label`。
  + 对于 openCypher：`~labels`。
  + 对于 SPARQL：`type`。
+ **`--label-max-length `**（或 **`-l`**）- 指定任何顶点标签的最大字符长度。默认值为 10。
+ **`--edge-label-max-length `**（或 **`-le`**）- 指定任何边缘标签的最大字符长度。默认值为 10。

  仅就 openCypher 而言，这是 `--rel-label-max-length`，或改而为 `-rel`。
+ **`--simulation-duration`**（或 **`-sd`**）- 指定可视化物理模拟的最大持续时间。默认值为 1500 毫秒。
+ **`--stop-physics`**（或 **`-sp`**）- 在初始模拟稳定后禁用可视化物理特性。

这些参数的属性值可以由单个属性键组成，也可以由可以为每种标签类型指定不同属性的 JSON 字符串组成。JSON 字符串只能使用[变量注入](#notebook-magics-variable-injection)来指定。

## `%seed` 行魔术命令
<a name="notebooks-line-magics-seed"></a>

`%seed` 行魔术命令是一种向 Neptune 端点添加数据的便捷方式，可以用它来探索和体验 Gremlin、openCypher 或 SPARQL 查询。它提供了一个表单，您可以在其中选择要浏览的数据模型（属性图或 RDF），然后从 Neptune 提供的许多不同的样本数据集中进行选择。

## `%load` 行魔术命令
<a name="notebooks-line-magics-load"></a>

`%load` 行魔术命令生成一个表单，您可以使用该表单向 Neptune 提交批量加载请求（请参阅[Neptune 加载程序命令](load-api-reference-load.md)）。来源必须是与 Neptune 集群位于同一区域的 Amazon S3 路径。

## `%load_ids` 行魔术命令
<a name="notebooks-line-magics-load-ids"></a>

`%load_ids` 行魔术命令检索已提交到笔记本主机端点的负载 ID（请参阅[Neptune 加载器请求参数 Get-Status](load-api-reference-status-requests.md#load-api-reference-status-parameters)）。请求采用以下形式：

```
GET https://your-neptune-endpoint:port/loader
```

## `%load_status` 行魔术命令
<a name="notebooks-line-magics-load-status"></a>

`%load_status` 行魔术命令检索已提交到笔记本主机端点的特定加载任务的加载状态，由行输入指定（请参阅[Neptune 加载器请求参数 Get-Status](load-api-reference-status-requests.md#load-api-reference-status-parameters)）。请求采用以下形式：

```
GET https://your-neptune-endpoint:port/loader?loadId=loadId
```

该行魔术命令如下所示：

```
%load_status load id
```

## `%cancel_load` 行魔术命令
<a name="notebooks-line-magics-cancel-load"></a>

`%cancel_load` 行魔术命令取消特定的加载任务（请参阅[Neptune 加载程序取消任务](load-api-reference-cancel.md)）。请求采用以下形式：

```
DELETE https://your-neptune-endpoint:port/loader?loadId=loadId
```

该行魔术命令如下所示：

```
%cancel_load load id
```

## `%status` 行魔术命令
<a name="notebooks-line-magics-status"></a>

从笔记本的主机端点（[%graph\$1notebook\$1config](#notebooks-line-magics-graph-notebook-config)显示主机端点）检索[状态信息](access-graph-status.md)。

 对于 Neptune 数据库主机，将从[运行状况端点](https://docs.aws.amazon.com//neptune/latest/userguide/access-graph-status.html)获取状态信息。[对于 Neptune Analytics 主机，将通过 API 检索状态。GetGraph ](https://docs.aws.amazon.com//neptune-analytics/latest/apiref/API_GetGraph.html)请参阅[%get\$1graph](#notebooks-line-magics-get-graph)了解更多信息。

## `%gremlin_status` 行魔术命令
<a name="notebooks-line-magics-gremlin-status"></a>

检索 [Gremlin 查询状态信息](gremlin-api-status.md)。

## `%opencypher_status` 行魔术命令（也为 `%oc_status`）
<a name="notebooks-line-magics-opencypher-status"></a>

检索 opencypher 查询的查询状态。此行魔术命令接受以下可选参数：
+ **`--queryId`** 或 **`-q`** – 指定要显示其状态的正在运行的特定查询的 ID。
+ **`--cancelQuery`** 或 **`-c`** – 取消正在运行的查询。不取值。
+ **`--silent-cancel`** 或 **`-s`** – 如果在取消查询时 `--silent` 设置为 `true`，则取消正在运行的查询，HTTP 响应代码为 `200`。否则，HTTP 响应代码将是 `500`。
+ **`--store-to`** – 指定用于存储查询结果的变量的名称。
+ **`-w/--includeWaiting`** - 仅限 Neptune 数据库。如果设置为 true 且其它参数不存在，则会导致为等待的查询和正在运行的查询返回状态信息。该参数不接收值。
+ **`--state`** - 仅限 Neptune Analytics。指定要检索状态的查询状态的子集。
+ **`-m/--maxResults`** - 仅限 Neptune Analytics。为与 `--state` 的值匹配的返回查询集设置上限。
+ **`--silent`** – 如果存在，则查询完成后不显示任何输出。

## `%stream_viewer` 行魔术命令
<a name="notebooks-line-magics-stream-viewer"></a>

如果在 Neptune 集群上启用了流，则 `%stream_viewer` 行魔术命令显示一个界面，允许交互式浏览 Neptune 流中记录的条目。它接受以下可选参数：
+ **`language`** – 流数据的查询语言：`gremlin` 或 `sparql`。如果您不提供此参数，则默认值为 `gremlin`。
+ **`--limit`** – 指定每页显示的最大流条目数。如果您不提供此参数，则默认值为 `10`。

  

**注意**  
只有引擎版本 1.0.5.1 及更早版本才完全支持 `%stream_viewer` 行魔术命令。

## `%sparql_status` 行魔术命令
<a name="notebooks-line-magics-sparql-status"></a>

检索 [SPARQL 查询状态信息](sparql-api-status.md)。

## `%graph_notebook_config` 行魔术命令
<a name="notebooks-line-magics-graph-notebook-config"></a>

此行魔术命令显示一个 JSON 对象，其中包含笔记本用于与 Neptune 通信的配置。配置包括：
+ `host`：要连接和向其发出命令的端点。
+ `port`：向 Neptune 发出命令时使用的端口。默认值为 `8182`。
+ `auth_mode`：向 Neptune 发出命令时要使用的身份验证模式。如果连接到启用了 IAM 身份验证的集群，则必须为 `IAM`，否则为 `DEFAULT`。
+ `load_from_s3_arn`：指定一个供 `%load` 魔术命令使用的 Amazon S3 ARN。如果此值为空，则必须在 `%load` 命令中指定 ARN。
+ `ssl`：表示是否使用 TLS 连接到 Neptune 的布尔值。默认值为 `true`。
+ `aws_region`：部署此笔记本的区域。此信息用于 IAM 身份验证和 `%load` 请求。

您可以通过将 `%graph_notebook_config` 输出复制到新单元格中并在那里对其进行更改来更改配置。然后，如果您在新的单元格上运行 [%%graph\$1notebook\$1config](#notebooks-cell-magics-graph-notebook-config) 单元格魔术命令，则配置将相应更改。

## `%graph_notebook_host` 行魔术命令
<a name="notebooks-line-magics-graph-notebook-host"></a>

将行输入设置为笔记本的主机。

## `%graph_notebook_version` 行魔术命令
<a name="notebooks-line-magics-graph-notebook-version"></a>

`%graph_notebook_version` 行魔术命令返回 Neptune Workbench 笔记本的版本号。例如，版本 `1.27` 中引入了图形可视化。

## `%graph_notebook_service` 行魔术命令
<a name="notebooks-line-magics-graph-notebook-service"></a>

`%graph_notebook_service` 行魔术命令将行输入设置为用于 Neptune 请求的服务名称。

## `%graph_notebook_vis_options` 行魔术命令
<a name="notebooks-line-magics-graph-notebook-vis-options"></a>

`%graph_notebook_vis_options` 行魔术命令显示笔记本使用的当前可视化设置。[vis.js](https://visjs.github.io/vis-network/docs/network/#options) 文档中对这些选项进行了说明。

您可以修改这些设置，方法是将输出复制到新单元格中，进行所需的更改，然后在单元格上运行 `%%graph_notebook_vis_options` 单元格魔术命令。

要将可视化设置恢复为其默认值，您可以使用 `reset` 参数运行 `%graph_notebook_vis_options` 行魔术命令。这将重置所有可视化设置：

```
%graph_notebook_vis_options reset
```

## `%statistics` 行魔术命令
<a name="notebooks-line-magics-statistics"></a>

`%statistics` 行魔术命令用于检索或管理 DFE 引擎统计数据（请参阅[管理 Neptune DFE 要使用的统计数据](neptune-dfe-statistics.md)）。这个魔术命令也可用来检索[图形摘要](neptune-graph-summary.md)。

它接受以下参数：
+ **`--language`**– 统计端点的查询语言：`propertygraph`（或 `pg`）或 `rdf`。

  如果未提供，则默认为 `propertygraph`。
+ **`--mode`**（或 **`-m`**）- 指定要提交的请求或操作的类型：`status`、`disableAutoCompute`、`enableAutoCompute`、`refresh`、`delete`、`detailed` 或 `basic` 之一。

  如果未提供，则默认值为 `status`，除非指定了 `--summary`，在这种情况下，默认值为 `basic`。
+ **`--summary`** – 从所选语言的统计摘要端点检索图形摘要。
+ **`--silent`** – 如果存在，则查询完成后不显示任何输出。
+ **`--store-to`** – 用于指定用来存储查询结果的变量。

## `%summary` 行魔术命令
<a name="notebooks-line-magics-summary"></a>

`%summary` 行魔术命令用于检索[图形摘要](neptune-graph-summary.md)信息。它从 Neptune 引擎版本 `1.2.1.0` 开始提供。

它接受以下参数：
+ **`--language`**– 统计端点的查询语言：`propertygraph`（或 `pg`）或 `rdf`。

  如果未提供，则默认为 `propertygraph`。
+ **`--detailed`** – 在输出中打开或关闭结构字段的显示。

  如果未提供，则默认为 `basic` 摘要显示模式。
+ **`--silent`** – 如果存在，则查询完成后不显示任何输出。
+ **`--store-to`** – 用于指定用来存储查询结果的变量。

## `%reset_graph` 行魔术命令
<a name="notebooks-line-magics-reset-graph"></a>

 `%reset_graph`（或`%_graph_reset`）线路魔法执行对 Neptune An [ResetGraph](https://docs.aws.amazon.com//neptune-analytics/latest/apiref/API_ResetGraph.html)alytics 端点的调用。它接受以下可选行输入：
+  -ns 或--no-skip-snapshot -（如果存在），则将在删除图表数据之前创建最终的图形快照。
+  --silent – 如果存在，重置调用提交之后将不显示任何输出。
+  --store-to — 用于指定用于存储响应的变量。 ResetGraph 

## `%get_graph` 行魔术命令
<a name="notebooks-line-magics-get-graph"></a>

 `%get_graph`线条魔法通过 [GetGraph API](https://docs.aws.amazon.com//neptune-analytics/latest/apiref/API_GetGraph.html) 检索有关图表的信息。该魔术命令在功能上与用于 Neptune Analytics 的 [%status](#notebooks-line-magics-status) 相同。

## `%degreeDistribution` 行魔术命令
<a name="notebooks-line-magics-degreeDistribution"></a>

`%degreeDistribution`线条魔法创建交互式直方图，可视化图表中顶点的度数分布。直方图显示具有特定角度（x 轴）的顶点（y 轴）的数量。它仅在 Neptune Analytics 中可用。

它接受以下参数，也可以在下拉菜单中选择这些参数：
+ **`--traversalDirection`**— 指定要分析的程度。必须是以下之一：`"both"`（默认）`"inbound"`、或`"outbound"`。
+ **`--vertexLabels`**— 按提供的标签过滤顶点（例如，`airport country`）。默认为空列表。
+ **`--edgeLabels`**— 按提供的标签过滤边缘（例如，`route`）。默认为空列表。

## `%%sparql` 单元格魔术命令
<a name="notebooks-cell-magics-sparql"></a>

`%%sparql` 单元格魔术命令向 Neptune 端点发出 SPARQL 查询。它接受以下可选行输入：
+ **`-h` 或 `--help`** – 返回有关这些参数的帮助文本。
+ **`--path`**– 为指向 SPARQL 端点的路径添加前缀。例如，如果您指定 `--path "abc/def"`，则调用的端点将是 `host:port/abc/def`。
+ **`--expand-all`** – 这是一个查询可视化提示，它告诉可视化工具在图形示意图中包含所有 `?s ?p ?o` 结果，而无论绑定类型如何。

  默认情况下，SPARQL 可视化仅包含三重模式，其中 `o?` 为 `uri` 或 `bnode`（空白节点）。所有其它 `?o` 绑定类型（例如文本字符串或整数）都视为 `?s` 节点的属性，可以使用**图形**选项卡中的**详细信息**窗格查看这些属性。

  如果您想改为在可视化中包含顶点等文本值，请使用 `--expand-all` 查询提示。

  请勿将此可视化提示与 explain 参数结合使用，因为 explain 查询不会可视化。
+ **`--explain-type`** – 用于指定要使用的 explain 模式（`dynamic`、`static` 或 `details` 之一）。

  
+ **`--explain-format`** – 用于指定 explain 查询的响应格式（`text/csv` 或 `text/html` 之一）。
+ **`--store-to`** – 用于指定用来存储查询结果的变量。

`explain` 查询示例：

```
%%sparql explain

SELECT * WHERE {?s ?p ?o} LIMIT 10
```

带有可视化提示参数的 `--expand-all` 可视化查询示例（请参阅[SPARQL 可视化](notebooks-visualization.md#notebooks-visualization-sparql)）：

```
%%sparql --expand-all

SELECT * WHERE {?s ?p ?o} LIMIT 10
```

## `%%gremlin` 单元格魔术命令
<a name="notebooks-cell-magics-gremlin"></a>

`%%gremlin`细胞魔法使用向海王星端点发出 Gremlin 查询。 WebSocket它接受可选的行输入以切换到 [Gremlin `explain`](gremlin-explain.md) 模式或 [Gremlin `profile` API](gremlin-profile-api.md)，以及用于修改可视化输出行为的单独可选可视化提示输入（请参阅[Gremlin 可视化](notebooks-visualization.md#notebooks-visualization-Gremlin)）。

`explain` 查询示例：

```
%%gremlin explain

g.V().limit(10)
```

`profile` 查询示例：

```
%%gremlin profile

g.V().limit(10)
```

带有可视化查询提示的可视化查询示例：

```
%%gremlin -p v,outv

g.V().out().limit(10)
```

**`%%gremlin profile` 查询的可选参数**
+ **`--profile-chop`** – 指定 profile 结果字符串的最大长度。如果您不提供此参数，则默认值为 250。
+ **`--profile-serializer`** – 指定要用于结果的序列化程序。允许的值是任何有效的 MIME 类型或 TinkerPop 驱动程序 “序列化器” 枚举值。如果您不提供此参数，则默认值为 `application.json`。
+ **`--profile-no-results`** – 仅显示结果计数。如果不使用，则默认情况下，所有查询结果都会显示在配置文件报告中。
+ **`--profile-indexOps`** – 显示所有索引操作的详细报告。

## `%%opencypher` 单元格魔术命令（也为 `%%oc`）
<a name="notebooks-cell-magics-opencypher"></a>

`%%opencypher` 单元格魔术命令（也具有缩写 `%%oc` 形式）向 Neptune 端点发出 openCypher 查询。它接受以下可选的行输入参数：
+ **`--mode`** – 查询模式：`query` 或 `bolt`。如果您不提供此参数，则默认值为 `query`。
+ **`--group-by`** 或 **`-g`** – 指定用于对节点进行分组的属性。例如 `code, ~id`。如果您不提供此参数，则默认值为 `~labels`。
+ **`--ignore-groups`** – 如果存在，则忽略所有分组选项。
+ **`--display-property`** 或 **`-d`** - 指定应为每个顶点显示其值的属性。如果您不提供此参数，则默认值为 `~labels`。
+ **`--edge-display-property`** 或 **`-de`** - 指定应为每个边缘显示其值的属性。如果您不提供此参数，则默认值为 `~labels`。
+  **`--explain-type`** - 用于指定要使用的 explain 模式（dynamic、static、debug 或 details 之一）。
+ **`--label-max-length`** 或 **`-l`** – 指定要显示的顶点标签的最大字符数。如果您不提供此参数，则默认值为 `10`。
+ **`--store-to`** 或 **`-s`** - 指定用于存储查询结果的变量的名称。
+ **`--plan-cache`** 或 **`-pc`** - 指定要使用的计划缓存模式。默认值为 `auto`。
+ **`--query-timeout`** 或 **`-qt`** - 指定最大查询超时时间（以毫秒为单位）。默认值为 `1800000`。
+ **`--query-parameters`** 或 **`qp`** - 要应用于查询的[参数定义](opencypher-parameterized-queries.md)。此选项可以接受单个变量名称，也可以接受映射的字符串表示。

**`--query-parameters` 的用法示例**

  1.  在一个笔记本单元格中定义 openCypher 参数的映射。

     ```
     params = '''{
      "name":"john",
      "age": 20,
     }'''
     ```

  1.  使用 `%%oc` 将参数传递到另一个单元格的 `--query-parameters` 中。

     ```
     %%oc --query-parameters params
     
     MATCH (n {name: $name, age: $age}) 
     RETURN n
     ```

## `%%graph_notebook_config` 单元格魔术命令
<a name="notebooks-cell-magics-graph-notebook-config"></a>

如果可能，`%%graph_notebook_config` 单元格魔术命令使用包含配置信息的 JSON 对象来修改笔记本用于与 Neptune 通信的设置。配置采用[%graph\$1notebook\$1config](#notebooks-line-magics-graph-notebook-config)行魔术命令返回的相同形式。

例如：

```
%%graph_notebook_config
{
  "host": "my-new-cluster-endpoint.amazon.com",
  "port": 8182,
  "auth_mode": "DEFAULT",
  "load_from_s3_arn": "",
  "ssl": true,
  "aws_region": "us-east-1"
}
```

## `%%graph_notebook_vis_options` 单元格魔术命令
<a name="notebooks-cell-magics-graph-notebook-vis-options"></a>

`%%graph_notebook_vis_options` 单元格魔术命令可让您为笔记本设置可视化选项。您可以将 `%graph-notebook-vis-options` 行魔术命令返回的设置复制到新的单元格中，对其进行更改，然后使用 `%%graph_notebook_vis_options` 单元格魔术命令设置新值。

[vis.js](https://visjs.github.io/vis-network/docs/network/#options) 文档中对这些选项进行了说明。

要将可视化设置恢复为其默认值，您可以使用 `reset` 参数运行 `%graph_notebook_vis_options` 行魔术命令。这将重置所有可视化设置：

```
%graph_notebook_vis_options reset
```

## `%neptune_ml` 行魔术命令
<a name="notebooks-line-magics-neptune_ml"></a>

可以使用 `%neptune_ml` 行魔术命令来启动和管理各种 Neptune ML 操作。

**注意**  
还可以使用 [%%neptune\$1ml](#notebooks-cell-magics-neptune_ml) 单元格魔术命令启动和管理一些 Neptune ML 操作。
+ **`%neptune_ml export start`** – 开始新的导出任务。

**参数**
  + **`--export-url`***exporter-endpoint*—（*可选*）可以在其中调用导出器的 Amazon API Gateway 终端节点。
  + **`--export-iam`** –（*可选*）表示必须使用 SigV4 对导出 url 的请求进行签名的标志。
  + **`--export-no-ssl`** –（*可选*）表示在连接到导出程序时不应使用 SSL 的标志。
  + **`--wait`** –（*可选*）指示操作应等到导出完成的标志。
  + **`--wait-interval`***interval-to-wait*—（*可选*）以秒为单位设置两次导出状态检查之间的时间（*默认值*：60）。
  + **`--wait-timeout`***timeout-seconds*—（*可选*）设置等待导出任务完成后再返回最新状态的时间（*默认*：3,600）。
  + **`--store-to`***location-to-store-result*—（*可选*）用于存储导出结果的变量。如果指定 `--wait`，则最终状态将存储在那里。
+ **`%neptune_ml export status`** – 检索导出任务的状态。

**参数**
  + **`--job-id`***export job ID*— 要检索其状态的导出任务的 ID。
  + **`--export-url`***exporter-endpoint*—（*可选*）可以在其中调用导出器的 Amazon API Gateway 终端节点。
  + **`--export-iam`** –（*可选*）表示必须使用 SigV4 对导出 url 的请求进行签名的标志。
  + **`--export-no-ssl`** –（*可选*）表示在连接到导出程序时不应使用 SSL 的标志。
  + **`--wait`** –（*可选*）指示操作应等到导出完成的标志。
  + **`--wait-interval`***interval-to-wait*—（*可选*）以秒为单位设置两次导出状态检查之间的时间（*默认值*：60）。
  + **`--wait-timeout`***timeout-seconds*—（*可选*）设置等待导出任务完成后再返回最新状态的时间（*默认*：3,600）。
  + **`--store-to`***location-to-store-result*—（*可选*）用于存储导出结果的变量。如果指定 `--wait`，则最终状态将存储在那里。
+ **`%neptune_ml dataprocessing start`** – 启动 Neptune ML 数据处理步骤。

**参数**
  + **`--job-id`***ID for this job*—（*可选*）要分配给此作业的 ID。
  + **`--s3-input-uri`***S3 URI*—（*可选*）用于查找此数据处理任务输入的 S3 URI。
  + **`--config-file-name`***file name*—（*可选*）此数据处理作业的配置文件的名称。
  + **`--store-to`***location-to-store-result*—（*可选*）用于存储数据处理结果的变量。
  + **`--instance-type`***(instance type)*—（*可选*）用于此数据处理作业的实例大小。
  + **`--wait`** –（*可选*）指示操作应等到数据处理完成的标志。
  + **`--wait-interval`***interval-to-wait*—（*可选*）以秒为单位设置两次数据处理状态检查之间的时间（*默认值*：60）。
  + **`--wait-timeout`***timeout-seconds*—（*可选*）设置等待数据处理作业完成后再返回最新状态的时间（*默认*：3,600）。
+ **`%neptune_ml dataprocessing status`** – 检索数据处理任务的状态。

**参数**
  + **`--job-id`***ID of the job*— 要检索其状态的任务的 ID。
  + **`--store-to`***instance type*—（*可选*）用于存储模型训练结果的变量。
  + **`--wait`** –（*可选*）指示操作应等到模型训练完成的标志。
  + **`--wait-interval`***interval-to-wait*—（*可选*）设置模型训练状态检查之间的时间（以秒为单位）（*默认值*：60）。
  + **`--wait-timeout`***timeout-seconds*—（*可选*）设置等待数据处理作业完成后再返回最新状态的时间（*默认*：3,600）。
+ **`%neptune_ml training start`**– 启动 Neptune ML 模型训练过程。

**参数**
  + **`--job-id`***ID for this job*—（*可选*）要分配给此作业的 ID。
  + **`--data-processing-id`***dataprocessing job ID*—（*可选*）创建用于训练的构件的数据处理作业的 ID。
  + **`--s3-output-uri`***S3 URI*—（*可选*）用于存储此模型训练作业输出的 S3 URI。
  + **`--instance-type`***(instance type)*—（*可选*）用于此模型训练作业的实例大小。
  + **`--store-to`***location-to-store-result*—（*可选*）用于存储模型训练结果的变量。
  + **`--wait`** –（*可选*）指示操作应等到模型训练完成的标志。
  + **`--wait-interval`***interval-to-wait*—（*可选*）设置模型训练状态检查之间的时间（以秒为单位）（*默认值*：60）。
  + **`--wait-timeout`***timeout-seconds*—（*可选*）设置在返回最新状态之前等待模型训练作业完成的时间（*默认*：3,600）。
+ **`%neptune_ml training status`** – 检索 Neptune ML 模型训练任务的状态。

**参数**
  + **`--job-id`***ID of the job*— 要检索其状态的任务的 ID。
  + **`--store-to`***instance type*—（*可选*）用于存储状态结果的变量。
  + **`--wait`** –（*可选*）指示操作应等到模型训练完成的标志。
  + **`--wait-interval`***interval-to-wait*—（*可选*）设置模型训练状态检查之间的时间（以秒为单位）（*默认值*：60）。
  + **`--wait-timeout`***timeout-seconds*—（*可选*）设置等待数据处理作业完成后再返回最新状态的时间（*默认*：3,600）。
+ **`%neptune_ml endpoint create`**– 为 Neptune ML 模型创建查询端点。

**参数**
  + **`--job-id`***ID for this job*—（*可选*）要分配给此作业的 ID。
  + **`--model-job-id`***model-training job ID*—（*可选*）要为其创建查询端点的模型训练作业的 ID。
  + **`--instance-type`***(instance type)*—（*可选*）用于查询终端节点的实例大小。
  + **`--store-to`***location-to-store-result*—（*可选*）用于存储端点创建结果的变量。
  + **`--wait`** –（*可选*）指示操作应等到端点创建完成的标志。
  + **`--wait-interval`***interval-to-wait*—（*可选*）设置两次状态检查之间的时间，以秒为单位（*默认值*：60）。
  + **`--wait-timeout`***timeout-seconds*—（*可选*）设置等待端点创建任务完成后再返回最新状态的时间（*默认*：3,600）。
+ **`%neptune_ml endpoint status`** – 检索 Neptune ML 查询端点的状态。

**参数**
  + **`--job-id`***endpoint creation ID*—（*可选*）要报告状态的端点创建任务的 ID。
  + **`--store-to`***location-to-store-result*—（*可选*）用于存储状态结果的变量。
  + **`--wait`** –（*可选*）指示操作应等到端点创建完成的标志。
  + **`--wait-interval`***interval-to-wait*—（*可选*）设置两次状态检查之间的时间，以秒为单位（*默认值*：60）。
  + **`--wait-timeout`***timeout-seconds*—（*可选*）设置等待端点创建任务完成后再返回最新状态的时间（*默认*：3,600）。

## `%%neptune_ml` 单元格魔术命令
<a name="notebooks-cell-magics-neptune_ml"></a>

`%%neptune_ml` 单元格魔术命令会忽略行输入，例如 `--job-id` 或 `--export-url`。相反，它允许您在单元格正文内提供这些输入和其它输入。

也可以将此类输入保存在另一个单元格中，分配给 Jupyter 变量，然后使用该变量将它们注入单元格正文中。这样，可以一遍又一遍地使用这样的输入，而不必每次都重新输入。

只有当注入变量是单元格的唯一内容时，这才起作用。不能在一个单元格中使用多个变量，也不能使用文本和变量的组合。

例如，`%%neptune_ml export start` 单元格魔术命令可以在单元格正文中使用包含[用于控制 Neptune 导出过程的参数](export-parameters.md)中描述的所有参数的 JSON 文档。

在 [Neptune-ML-01-Introduction-to-Node-Classification-Gremlin](https://github.com/aws/graph-notebook/blob/main/src/graph_notebook/notebooks/04-Machine-Learning/Neptune-ML-01-Introduction-to-Node-Classification-Gremlin.ipynb) 笔记本中，在**导出数据和模型配置**部分的**配置特征**下，您可以看到以下单元格如何在分配给名为 `export-params` 的 Jupyter 变量的文档中保存导出参数：

```
export_params = {
  "command": "export-pg",
  "params": {
    "endpoint": neptune_ml.get_host(),
    "profile": "neptune_ml",
    "useIamAuth": neptune_ml.get_iam(),
    "cloneCluster": False
   },
  "outputS3Path": f'{s3_bucket_uri}/neptune-export',
  "additionalParams": {
    "neptune_ml": {
      "targets": [
        {
          "node": "movie",
          "property": "genre"
        }
      ],
      "features": [
        {
          "node": "movie",
          "property": "title",
          "type": "word2vec"
        },
        {
          "node": "user",
          "property": "age",
          "type": "bucket_numerical",
          "range" : [1, 100],
          "num_buckets": 10
        }
      ]
    }
  },
  "jobSize": "medium"}
```

运行此单元格时，Jupyter 会以该名称保存该参数文档。然后，可以使用 `${export_params}` 将 JSON 文档注入到 `%%neptune_ml export start cell` 的正文中，如下所示：

```
%%neptune_ml export start --export-url {neptune_ml.get_export_service_host()} --export-iam --wait --store-to export_results

${export_params}
```

### `%%neptune_ml` 单元格魔术命令的可用形式
<a name="notebooks-cell-magics-neptune_ml-forms"></a>

`%%neptune_ml` 单元格魔术命令可以按下列形式使用：

****
+ **`%%neptune_ml export start`** – 启动 Neptune ML 导出过程。
+ **`%%neptune_ml dataprocessing start`**– 启动 Neptune ML 数据处理任务。
+ **`%%neptune_ml training start`**– 启动 Neptune ML 模型训练任务。
+ **`%%neptune_ml endpoint create`**– 为模型创建 Neptune ML 查询端点。