

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Amazon Neptune 筆記本中使用魔術
<a name="notebooks-magics"></a>

Neptune 工作台會在筆記本中提供多個所謂的「魔法」**命令，這些命令可以節省大量的時間和精力。它們分為兩類：「行魔法」**和「儲存格魔法」**。

「行魔法」**是前面有單一的百分比符號 (`%`) 的命令。它們只接受行輸入，而不是來自儲存格本文其餘部分的輸入。Neptune 工作台提供以下行魔法：
+ [%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)
+ [%degreeDistribution](#notebooks-line-magics-degreeDistribution)

「儲存格魔法」**前面有兩個百分比符號 (`%%`) 而不是一個，並使用儲存格內容作為輸入，然而它們也可以接受行內容作為輸入。Neptune 工作台提供以下儲存格魔法：
+ [%%sparql](#notebooks-cell-magics-sparql)
+ [%%gremlin](#notebooks-cell-magics-gremlin)
+ [%%opencypher, or %%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 工作台中使用 `%%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 字串。只能使用[變數注入](#notebook-magics-variable-injection)來指定 JSON 字串。

## `%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))。此來源必須是 Amazon S3 路徑，與 Neptune 叢集位在同一個區域中。

## `%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>

從筆記本的主機端點擷取[狀態資訊](access-graph-status.md) ([%graph\$1notebook\$1config](#notebooks-line-magics-graph-notebook-config) 會顯示主機端點)。

 對於 Neptune 資料庫主機，將從[運作狀態端點擷取狀態](https://docs.aws.amazon.com//neptune/latest/userguide/access-graph-status.html)資訊。對於 Neptune Analytics 主機，狀態將透過 [GetGraph API](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 工作台筆記本版本編號。例如，已在版本 `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 Analytics 端點執行 [ResetGraph](https://docs.aws.amazon.com//neptune-analytics/latest/apiref/API_ResetGraph.html) 呼叫。它會接受以下選用的行輸入：
+  -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` 儲存格魔法會使用 WebSocket 向 Neptune 端點發出 Gremlin 查詢。它接受要切換至 [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`** – 指定設定檔結果字串的長度上限。如果您未提供此引數，則預設值為 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`**  –   用來指定要使用的解釋模式 （其中之一：動態、靜態、除錯或詳細資訊）。
+ **`--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`** – 啟動新的匯出工作。

**Parameters**
  + **`--export-url`** *exporter-endpoint* – (*選用*) 可在其中呼叫匯出程式的 Amazon API Gateway 端點。
  + **`--export-iam`** – (*選用*) 指示對匯出 URL 的請求必須使用 SIGv4 進行簽署的旗標。
  + **`--export-no-ssl`** – (*選用*) 指示連線至匯出程式時不應使用 SSL 的旗標。
  + **`--wait`** – (*選用*) 指示操作應等到匯出完成的旗標。
  + **`--wait-interval`** *interval-to-wait* – (*選用*) 設定匯出狀態檢查之間的時間 (以秒為單位) (*預設值*：60)。
  + **`--wait-timeout`** *interval-to-wait* – (*選用*) 設定在傳回最新狀態之前等待匯出工作完成的時間 (以秒為單位) (*預設值*：3,600)。
  + **`--store-to`** *location-to-store-result* – (*選用*) 儲存匯出結果的變數。如果指定 `--wait`，最終狀態將儲存在該處。
+ **`%neptune_ml export status`** – 擷取匯出工作的狀態。

**Parameters**
  + **`--job-id`***匯出工作 ID* – 要擷取其狀態之匯出工作的 ID。
  + **`--export-url`** *exporter-endpoint* – (*選用*) 可在其中呼叫匯出程式的 Amazon API Gateway 端點。
  + **`--export-iam`** – (*選用*) 指示對匯出 URL 的請求必須使用 SIGv4 進行簽署的旗標。
  + **`--export-no-ssl`** – (*選用*) 指示連線至匯出程式時不應使用 SSL 的旗標。
  + **`--wait`** – (*選用*) 指示操作應等到匯出完成的旗標。
  + **`--wait-interval`** *interval-to-wait* – (*選用*) 設定匯出狀態檢查之間的時間 (以秒為單位) (*預設值*：60)。
  + **`--wait-timeout`** *interval-to-wait* – (*選用*) 設定在傳回最新狀態之前等待匯出工作完成的時間 (以秒為單位) (*預設值*：3,600)。
  + **`--store-to`** *location-to-store-result* – (*選用*) 儲存匯出結果的變數。如果指定 `--wait`，最後狀態將儲存在該處。
+ **`%neptune_ml dataprocessing start`** – 啟動 Neptune ML 資料處理步驟。

**Parameters**
  + **`--job-id`** *此工作的 ID* – (*選用*) 指派給此工作的 ID。
  + **`--s3-input-uri`** *S3 URI* – (*選用*) 要在其中尋找此資料處理工作之輸入的 S3 URI。
  + **`--config-file-name`** *檔案名稱* – (*選用*) 此資料處理工作的組態檔名稱。
  + **`--store-to`** *location-to-store-result* – (*選用*) 儲存資料處理結果的變數。
  + **`--instance-type`** *(執行個體類型)* – (*選用*) 用於此資料處理工作的執行個體大小。
  + **`--wait`** – (*選用*) 指示操作應等到資料處理完成的旗標。
  + **`--wait-interval`** *interval-to-wait* – (*選用*) 設定資料處理狀態檢查之間的時間 (以秒為單位) (*預設值*：60)。
  + **`--wait-timeout`** *interval-to-wait* – (*選用*) 設定在傳回最新狀態之前等待資料處理工作完成的時間 (以秒為單位) (*預設值*：3,600)。
+ **`%neptune_ml dataprocessing status`** – 擷取資料處理工作的狀態。

**Parameters**
  + **`--job-id`** *工作 ID* – 要擷取其狀態之工作的 ID。
  + **`--store-to`** *執行個體類型* – (*選用*) 儲存模型訓練結果的變數。
  + **`--wait`** – (*選用*) 指示操作應等到模型訓練完成的旗標。
  + **`--wait-interval`** *interval-to-wait* – (*選用*) 設定模型訓練狀態檢查之間的時間 (以秒為單位) (*預設值*：60)。
  + **`--wait-timeout`** *interval-to-wait* – (*選用*) 設定在傳回最新狀態之前等待資料處理工作完成的時間 (以秒為單位) (*預設值*：3,600)。
+ **`%neptune_ml training start`** – 啟動 Neptune ML 模型訓練程序。

**Parameters**
  + **`--job-id`** *此工作的 ID* – (*選用*) 指派給此工作的 ID。
  + **`--data-processing-id`** *資料處理工作 ID* – (*選用*) 建立要用於訓練之成品的資料處理工作 ID。
  + **`--s3-output-uri`** *S3 URI* – (*選用*) 儲存此模型訓練工作之輸出的 S3 URI。
  + **`--instance-type`** *(執行個體類型)* – (*選用*) 用於此模型訓練工作的執行個體大小。
  + **`--store-to`** *location-to-store-result* – (*選用*) 儲存模型訓練結果的變數。
  + **`--wait`** – (*選用*) 指示操作應等到模型訓練完成的旗標。
  + **`--wait-interval`** *interval-to-wait* – (*選用*) 設定模型訓練狀態檢查之間的時間 (以秒為單位) (*預設值*：60)。
  + **`--wait-timeout`** *interval-to-wait* – (*選用*) 設定在傳回最新狀態之前等待模型訓練工作完成的時間 (以秒為單位) (*預設值*：3,600)。
+ **`%neptune_ml training status`** – 擷取 Neptune ML 模型訓練工作的狀態。

**Parameters**
  + **`--job-id`** *工作 ID* – 要擷取其狀態之工作的 ID。
  + **`--store-to`** *執行個體類型* – (*選用*) 儲存狀態結果的變數。
  + **`--wait`** – (*選用*) 指示操作應等到模型訓練完成的旗標。
  + **`--wait-interval`** *interval-to-wait* – (*選用*) 設定模型訓練狀態檢查之間的時間 (以秒為單位) (*預設值*：60)。
  + **`--wait-timeout`** *interval-to-wait* – (*選用*) 設定在傳回最新狀態之前等待資料處理工作完成的時間 (以秒為單位) (*預設值*：3,600)。
+ **`%neptune_ml endpoint create`** – 建立 Neptune ML 模型的查詢端點。

**Parameters**
  + **`--job-id`** *此工作的 ID* – (*選用*) 指派給此工作的 ID。
  + **`--model-job-id`** *模型訓練工作 ID* – (*選用*) 要為其建立查詢端點之模型訓練工作的 ID。
  + **`--instance-type`** *(執行個體類型)* – (*optional*) 用於查詢端點的執行個體大小。
  + **`--store-to`** *location-to-store-result* – (*選用*) 儲存端點建立結果的變數。
  + **`--wait`** – (*選用*) 指示操作應等到端點建立完成的旗標。
  + **`--wait-interval`** *interval-to-wait* – (*選用*) 設定狀態檢查之間的時間 (以秒為單位) (*預設值*：60)。
  + **`--wait-timeout`** *interval-to-wait* – (*選用*) 設定在傳回最新狀態之前等待端點建立工作完成的時間 (以秒為單位) (*預設值*：3,600)。
+ **`%neptune_ml endpoint status`** – 擷取 Neptune ML 查詢端點的狀態。

**Parameters**
  + **`--job-id`** *端點建立 ID* – (*選用*) 要報告其狀態之端點建立工作的 ID。
  + **`--store-to`** *location-to-store-result* – (*選用*) 儲存狀態結果的變數。
  + **`--wait`** – (*選用*) 指示操作應等到端點建立完成的旗標。
  + **`--wait-interval`** *interval-to-wait* – (*選用*) 設定狀態檢查之間的時間 (以秒為單位) (*預設值*：60)。
  + **`--wait-timeout`** *interval-to-wait* – (*選用*) 設定在傳回最新狀態之前等待端點建立工作完成的時間 (以秒為單位) (*預設值*：3,600)。

## `%%neptune_ml` 儲存格魔法
<a name="notebooks-cell-magics-neptune_ml"></a>

`%%neptune_ml` 儲存格魔法會忽略行輸入，例如 `--job-id` 或 `--export-url`。相反，它可以讓您在儲存格本文內提供這些輸入和其他輸入。

您也可以將此類輸入儲存在指派給 Jupyter 變數的另一個儲存格中，然後使用該變數將它們注入至儲存格本文。如此一來，您可以一再使用此類輸入，而不必每次都重新輸入它們。

這只有在注入變數是儲存格的唯一內容時才有效。您不能在一個儲存格中使用多個變數，也不能使用文字和變數的組合。

例如，`%%neptune_ml export start` 儲存格魔法可以使用儲存格本文中的 JSON 文件，其中包含 [用來控制 Neptune 匯出程序的參數](export-parameters.md) 中所述的所有參數。

在 [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) 筆記本中，於**匯出資料和模型組態**區段的**設定功能**下，您可以看到下列儲存格如何在指派給 Jupyter 變數的文件中保留匯出參數 (名為 `export-params`)：

```
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 查詢端點。