# 開始使用分析連線

建立分析連線以從透過 Qlik Cloud 部署的模型或從各種第三方機器學習工具載入並產生資料。這些模型通常會公開基於 REST 的 API 端點。建立並使用連線之前，您需要先建立並部署所需的機器學習模型，或取得機器學習模型的存取權限。

除了 Qlik Predict，還有一些第三方平台可以建立、訓練和部署機器學習模型，例如：

* Azure ML

* Amazon SageMaker

[在 Azure Machine Learning Studio 中使用無程式碼 AutoML 訓練分類模型](https://docs.microsoft.com/en-gb/azure/machine-learning/tutorial-first-experiment-automated-ml)

[開始使用 Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/gs.html)

## 啟用機器學習端點的分析連線

依預設會停用機器學習端點。

租用戶管理員可以在設定視窗的功能控制下的 管理 中啟用機器學習端點。

## 使用分析連線和伺服器端延伸語法

分析連線可以將資料傳送到 Qlik Predict 或外部公開的機器學習端點以進行運算。從這些連線傳回的資料可載入到 Qlik Sense 應用程式中。

資料載入指令碼和圖表運算式是兩種方式，可將分析連線新增至 Qlik Sense 應用程式。伺服器端延伸 (SSE) 函數和參數都在 Qlik Sense 中處理，然後轉換為傳送到機器學習模型的 REST 請求。SSE 載入指令碼和圖表運算式必須遵守 SSE 語法。請參閱 [伺服器端延伸語法](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/sse-syntax.htm)。

### 資料載入指令碼

* 您可以在 Qlik Sense 資料載入指令碼中使用 LOAD ... EXTENSION 陳述式從 SSE 呼叫傳回表格並從分析連線載入資料。您可以將單一表格傳送至模型，就會傳回單一資料表格。

* 在 Qlik Sense 資料載入指令碼中使用 SSE 函數時 (LOAD ... EXTENSION 陳述式除外)，基數會被保留，並傳回單欄。

* SSE 函數從任何其他 LOAD 陳述式內部呼叫，例如 Load ... From ...，僅支援純量和彙總函數類型。這表示包含 n 列的資料將導致對模型的 n 次呼叫，除非您正在彙總導致單一呼叫的資料。

* 分析連線中會自動偵測資料類型。若資料沒有數值，且有至少一個非 NULL 文字字串，則欄位可被視為文字。在任何其他情況下，這被視為數字。您可以透過 String() 或 Mixed() 括起欄位名稱，以強制資料類型。String() 會強制欄位成為文字。若欄位為數字，則會擷取雙值的文字部分，不會執行任何轉換。Mixed() 會強制欄位成為雙重。

### 圖表運算式

* 圖表運算式不能使用從 SSE 函數呼叫傳回的表格。當您在圖表運算式中使用 SSE 函數時，基數會被保留並且只有傳回的第一欄由 Qlik Sense 使用。

### 參考資料連線的空間

若您正在將應用程式或指令碼發佈至 受管理空間，或者您希望 SSE 請求參考目前空間中的連線，請使用相對語法。或者，在參考特定空間名稱的情況下設定請求。這些概念在載入指令碼和圖表運算式中都很重要。

如需更多關於使用具有空間意識之語法的資訊，請參閱：

* [在載入指令碼中連線至資料來源](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/connect-data-sources-data-load-editor.htm)

* [受管理空間中應用程式的資料來源](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Spaces/app-data-managed-spaces.htm)

#### 範例 1：載入指令碼中的相對空間語法

下列範例是載入指令碼內從某個連線前往分析連線的範例。已修改程式碼，指向應用程式或指令碼的目前空間中的連線。其進行方式是在連線名稱開頭新增冒號 (在此案例中，是「`:Amazon_Titan_(Amazon_Bedrock)`」)。若沒有此冒號，參考會指向執行載入之使用者 (或載入排程擁有者) 的個人空間中的連線。

```
EXTENSION endpoints.ScriptEval('{"RequestType":"endpoint", "endpoint":{"connectionname":":Amazon_Titan_(Amazon_Bedrock)"}}', QuestionsTable{Question_ID,Question});
```

可以在將應用程式或指令碼發佈至也包含分析連線的受管理空間之前，使用此具有空間意識的語法。

#### 範例 2：圖表運算式中的相對空間語法

下列範例是包含目前空間中連線參考的圖表運算式。其進行方式是在連線名稱開頭新增冒號 (在此案例中，是「`:Amazon_Titan_(Amazon_Bedrock)`」)。若沒有此冒號，參考會指向執行載入之使用者 (或載入排程擁有者) 的個人空間中的連線。

```
if(vQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":":Amazon_Titan_(Amazon_Bedrock)","column":"outputText"}}',vQuestion))
```

可以在將應用程式或指令碼發佈至也包含分析連線的受管理空間之前，使用此具有空間意識的語法。

#### 範例 3：載入指令碼中的硬式編碼空間語法

若您希望對於分析連線的參考僅在特定空間中運作，則您可以使用硬式編碼處理運算式，以包含對於該空間的直接參考。若您沒有納入空間名稱 (而且也省略新增至範例 1 和 2 的冒號)，則會使用硬式編碼處理語法，以參考執行載入之使用者 (或載入排程擁有者) 的個人空間中的連線。

若您使用選取資料精靈新增 LOAD 陳述式，這將會是自動使用的語法。

```
EXTENSION endpoints.ScriptEval('{"RequestType":"endpoint", "endpoint":{"connectionname":"My_Shared_Space:Amazon_Titan_(Amazon_Bedrock)"}}', QuestionsTable{Question_ID,Question});
```

在此案例中，參考是針對名為 My\_Shared\_Space 之空間中的連線。

#### 範例 4：圖表運算式中的硬式編碼空間語法

此範例類似於範例 3。若您沒有納入空間名稱 (而且也省略新增至範例 1 和 2 的冒號)，則會使用硬式編碼處理語法，以參考執行載入之使用者 (或載入排程擁有者) 的個人空間中的連線。

```
if(vQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"My_Shared_Space:Amazon_Titan_(Amazon_Bedrock)","column":"outputText"}}',vQuestion))
```

在此案例中，參考是針對名為 My\_Shared\_Space 之空間中的連線。