# Amazon Redshift

您可以使用 Amazon Redshift 作為資料管道或複寫任務中的目標資料平台。在資料管道中，可以在目標平台執行各種 ELT 操作，包括儲存資料、轉換資料、建立資料超市和註冊資料。另一方面，複寫任務涉及將資料直接從來源系統複寫至具有基本轉換功能但不支援 ELT 操作的目標系統。

設定 Amazon Redshift 作為目標涉及：

* [履行先決條件](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/redshift-target.htm#Prerequi2)
* 設定連線至雲端分段區域 (Amazon S3)。若您[註冊現有資料](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Onboarding/Registering-data.htm)，則不需要這麼做。
* 設定連線至 Amazon Redshift

## 設定雲端暫存區域

資訊備註若您[註冊現有資料](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Onboarding/Registering-data.htm)，您不需要設定雲端暫存區域。

設定與 Amazon Redshift 的連線也需要您設定與 Amazon S3 雲端臨時區域的連線性，在此會先暫存資料和變更，再套用並儲存。

如需設定連線至 Amazon S3 的資訊，請參閱 [Amazon S3](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/aws-s3-target.htm#Using2)。

## 設定連線至 Amazon Redshift

提供暫存設定後，進行下列事項：

1. 在連線中，按一下建立連線。

2. 選取 Amazon Redshift 目標連接器，然後提供下列設定：

### 資料目標

#### 資料閘道

資訊備註此欄位無法用於 Qlik Talend Cloud 啟動器 訂閱，因為此訂閱層級不支援 資料移動閘道。

只有在無法從 Qlik Cloud 存取目標資料庫且只能使用私人連結存取時 (例如若將內部部署置於防火牆後方或在虛擬私人雲端中)，才需要 資料移動閘道。在此情況下，選取您要用來存取目標資料庫的 資料移動閘道。

根據您的使用情況，這會是為了從資料來源移動資料而部署的相同或不同 資料移動閘道。

如需關於 資料移動閘道 使用案例的資訊，請參閱 [何時需要 資料移動閘道？](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm#top) 和 [常見使用案例](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm#Common)。

若目標資料庫可從 Qlik Cloud 直接存取，請選取無。

資訊備註透過 資料移動閘道 存取目標資料庫時，您也需要在 資料移動閘道 機器上安裝適當的驅動程式。如需詳細資訊，請參閱以下的 [驅動程式的設定](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/redshift-target.htm#Driver)。

### 連線屬性

* 伺服器：Amazon Redshift 資料庫伺服器的主機名稱。

* 連接埠：藉此存取 Amazon Redshift 資料庫的連接埠。預設為 5439。

### 帳戶屬性

使用者名稱和密碼：獲得授權可存取 Amazon Redshift 資料庫的使用者的使用者名稱和密碼。

### 資料庫屬性

* 資料庫名稱：有兩種方法可用來指定資料庫：

  * 方法 1 - 從清單中選取：按一下載入資料庫，然後選取資料庫。
  * 方法 2 - 手動：選取手動輸入資料庫名稱，然後輸入資料庫名稱。

### S3 屬性

* IAM 角色 ARN (僅在暫存至 EC2 上的 S3 時需要)：與您在 IAM Roles Anywhere 主控台中建立的角色相關聯的 ARN。角色是您在帳戶中建立的 IAM 身分，具有特定權限。為了讓 IAM Roles Anywhere 能夠擔任角色並提供臨時 AWS 憑證，該角色必須信任 IAM Roles Anywhere 服務主體。

  如需更多關於 IAM Roles Anywhere 的資訊，請造訪 [Extend AWS IAM roles to workloads outside of AWS with IAM Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html)

### 內部屬性

內部屬性用於特殊使用情況，因此不會在對話方塊中顯示。您只能在 Qlik 支援指示下使用。

根據需要使用欄位右側的 the 新建 icon 和 the 取消 icon 按鈕以新增或移除屬性。

### 名稱

連線的顯示名稱。

## 必要條件

### 必要權限

在 Redshift 資料庫授予下列權限：

* 授予 COPY
* 授予 INSERT
* 授予 UPDATE
* 授予 DELETE
* 授予 SELECT
* 建立結構描述 (只有在結構描述不存在且您希望 Qlik Talend Data Integration 建立結構描述時才需要)
* 授予 CREATE TABLE
* 授予 ALTER TABLE
* 授予 DROP TABLE

### 驅動程式的設定

只有在透過 資料移動閘道 存取資料庫時，才需要驅動程式。在這類情況下，您需要將驅動程式安裝在 資料移動閘道 機器。

您可以使用驅動程式安裝公用程式 (建議) 或手動安裝 driver。只能在不太可能發生的事件 (您在使用驅動程式安裝公用程式時遇到問題) 中嘗試手動安裝。

#### 使用驅動程式安裝公用程式來安裝驅動程式

此區段描述如何安裝所需的 driver。該流程涉及執行將會自動下載、安裝並設定所需 driver 的指令碼。您也可以執行指令碼，以根據需求更新並解除安裝 driver。

準備安裝

* 確認 Python 3.6 或更高版本安裝於 Data Movement 閘道伺服器。

  Python 會預先安裝在大部分的 Linux 發行版。您可以執行下列命令，以查看哪個 Python 版本安裝在您的系統上：

  python3 --version

安裝 driver

若要下載並安裝 driver：

1. 停止 Data Movement gateway 服務：

   sudo systemctl stop repagent

2. 可自選，確認服務已停止：

   sudo systemctl status repagent

   狀態應如下所示：

   Active: inactive (dead) since &lt;timestamp&gt; ago

3. 在 Data Movement 閘道機器上，將工作目錄變更為：

   opt/qlik/gateway/movement/drivers/bin

4. 執行下列命令：

   語法：

   ./install redshift

   若無法下載 driver (由於存取限制或技術問題)，將會顯示訊息，指示您到哪裡下載 driver 以及在 Data Movement 閘道機器上的何處複製。完成後，再次執行 install redshift 命令。

   否則，就會顯示 driver 的 EULA。

5. 執行下列其中一個動作：

   * 重複按下 [Enter] 以緩慢瀏覽 EULA。
   * 重複按下空格鍵以快速瀏覽 EULA。
   * 按下 q 以結束授權文字並呈現 EULA 接受選項。

6. 執行下列其中一個動作：

   * 輸入「y」並按下 [Enter] 以接受 EULA 並開始安裝。

   * 輸入「n」並按下 [Enter] 以拒絕 EULA 並退出安裝。

   * 輸入「v」並按下 [Enter] 以再次檢視 EULA。

   將會安裝 driver。

7. 等待安裝完成 (以「完成！」指示)，然後開始 Data Movement gateway 服務：

   sudo systemctl start repagent

8. 可自行選擇確認服務已開始：

   sudo systemctl status repagent

   狀態應如下所示：

   Active: active (running) since &lt;timestamp&gt; ago

更新 driver

若您想要在安裝提供的 driver 之前解除安裝先前的 driver 版本，請執行更新命令。

若要下載並更新 driver：

1. 停止 Data Movement gateway 服務：

   sudo systemctl stop repagent

2. 可自選，確認服務已停止：

   sudo systemctl status repagent

   狀態應如下所示：

   Active: inactive (dead) since &lt;timestamp&gt; ago

3. 在 Data Movement 閘道機器上，將工作目錄變更為：

   opt/qlik/gateway/movement/drivers/bin

4. 執行下列命令：

   語法：

   ./update redshift

   若無法下載 driver (由於存取限制或技術問題)，將會顯示訊息，指示您到哪裡下載 driver 以及在 Data Movement 閘道機器上的何處複製。完成後，再次執行 update redshift 命令。

   否則，就會顯示 driver 的 EULA。

5. 執行下列其中一個動作：

   * 重複按下 [Enter] 以緩慢瀏覽 EULA。
   * 重複按下空格鍵以快速瀏覽 EULA。
   * 按下 q 以結束授權文字並呈現 EULA 接受選項。

6. 執行下列其中一個動作：

   * 輸入「y」並按下 [Enter] 以接受 EULA 並開始安裝。
   * 輸入「n」並按下 [Enter] 以拒絕 EULA 並退出安裝。
   * 輸入「v」並按下 [Enter] 以從頭檢閱 EULA。

   將會解除安裝舊版 driver，並安裝新版 driver。

7. 等待安裝完成 (以「完成！」指示)，然後開始 Data Movement gateway 服務：

   sudo systemctl start repagent

8. 可自行選擇確認服務已開始：

   sudo systemctl status repagent

   狀態應如下所示：

   Active: active (running) since &lt;timestamp&gt; ago

解除安裝 driver

若您想要解除安裝 driver，請執行解除安裝命令。

若要解除安裝 driver：

1. 停止設定為使用此連接器的所有任務。

2. 在 Data Movement 閘道機器上，將工作目錄變更為：

   opt/qlik/gateway/movement/drivers/bin

3. 執行下列命令：

   語法：

   ./uninstall redshift

   將會解除安裝 driver。

#### 手動安裝驅動程式

只有在自動驅動程式安裝無法成功完成時，才能嘗試手動安裝 driver。

1. 停止 Data Movement gateway 服務：

   sudo systemctl stop repagent

2. 可自選，確認服務已停止：

   sudo systemctl status repagent

   狀態應如下所示：

   Active: inactive (dead) since &lt;timestamp&gt; ago

3. 下載並安裝連線至 Amazon Redshift 叢集所必需的 [Linux SQL 用戶端工具](https://docs.aws.amazon.com/redshift/latest/mgmt/connecting-to-cluster.html)。Qlik 資料閘道 - 資料移動 僅需要 Amazon Redshift ODBC 驅動程式 (x64) 1.4.65.1000 或更高版本。

   從以下位置下載驅動程式：

   https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.65.1000/AmazonRedshiftODBC-64-bit-1.4.65.1000-1.x86\_64.rpm

   安裝 ODBC 驅動程式後，編輯 /etc/odbcinst.ini 檔案，如下所示：

   `[ODBC Drivers]`

   `Amazon Redshift (x64)=Installed`

   以及：

   `[Amazon Redshift (x64)]`

   `Description=Amazon Redshift ODBC Driver (64-bit)`

   `Driver=/opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so`

4. 開始 Data Movement gateway 服務：

   sudo systemctl start repagent

5. 可自選，確認服務已開始：

   sudo systemctl status repagent

   狀態應如下所示：

   Active: active (running) since &lt;timestamp&gt; ago

如需 Amazon Redshift 支援的驅動程式清單，請參閱 [](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/redshift-target.htm)http://docs.aws.amazon.com/redshift/latest/mgmt/configure-odbc-connection.html。

### 連接埠

需要為傳出通訊開啟連接埠 5439 (Amazon Redshift 叢集)。

### CA 憑證

Data Movement gateway 使用 SSL 連線至 AWS。這需要適當的 CA 憑證在Data Movement gateway 機器，否則連線將失敗。CA 憑證的目的為驗證 AWS 伺服器憑證擁有權。

請確保在 Linux 機器以下位置存在必要的 CA 憑證：

/etc/pki/tls/certs/ca-bundle.crt

如果不存在，最簡單的解決方案為從另一台 Linux 機器複製憑證配套。

### 一般先決條件和考慮事項

* 若資料來源有 4 位元組表情圖示字元，使用轉換以將資料類型從 WSTRING(n ) 轉換為 WSTRING ( n\*2 )。

* 請確保 Data Movement gateway 機器上的時間和時區設定為正確。這為必要才能確保：

  * 妥善同步完整載入和 CDC 任務
  * 交易記錄時間與實際時間相關聯

* 您無法從透過 Qlik Talend Data Integration 在 Amazon Redshift 目標中建立的資料集將即時檢視和歷史記錄檢視讀入 Qlik Cloud 分析服務。

## 限制和考慮事項

* Amazon Redshift 連接器僅支援標準驗證 (使用者名稱和密碼)。

## 資料類型

下表顯示使用 Qlik Cloud 時支援的 Amazon Redshift 資料類型和來自 Qlik Cloud 資料類型的預設對應。

會保留原生資料類型資訊，並顯示在資料集檢視的原生資料類型欄中。若看不見欄，您需要開啟資料集檢視的欄選擇器並選取原生資料類型欄。

資訊備註在 Qlik Cloud 中，字串長度單位為字元，而在 Redshift 中，varchar 長度單位為位元組。每個字元的位元組數可能會不同，取決於實際字元和編碼。Qlik Cloud 假設每個字元的長度為 3 個位元組。這表示，定義 wstring(10) 時，實際上表格將會建立為 varchar(30)。

支援的資料類型

| Qlik Cloud 資料類型 | Amazon Redshift 資料類型 |
| --- | --- |
| 布林值 | 布林值 |
| 位元組 | VARBINARY (長度) |
| 日期 | 日期 |
| 時間 | VARCHAR (20) |
| 日期時間 | 若刻度為 =&gt; 0 且 =&lt; 6，則：<br><br>時間戳記<br><br>若刻度為 =&gt; 7 且 =&lt; 12，則：<br><br>VARCHAR (37) |
| INT1 | INT2 |
| INT2 | INT2 |
| INT4 | INT4 |
| INT8 | INT8 |
| 數字 | 若刻度為 =&gt; 0 且 =&lt; 37，則：<br><br>數字 (精確度，縮放)<br><br>若刻度為 =&gt; 38 且 =&lt; 127，則：<br><br>VARCHAR (長度) |
| REAL4 | FLOAT4 |
| REAL8 | FLOAT8 |
| 字串 | 若長度為 =&gt; 1 且 =&lt; 65535，則：<br><br>VARCHAR (以位元組為單位的長度)<br><br>若長度為 =&gt; 65535 且 =&lt; 2147483647，則：<br><br>VARCHAR (65535) |
| UINT1 | INT2 |
| UINT2 | INT4 |
| UINT4 | INT8 |
| UINT8 | 數字 (20,0) |
| WSTRING | 若長度為 =&gt; 1 且 =&lt; 21845，則：<br><br>NVARCHAR (以位元組為單位的長度)<br><br>若長度為 =&gt; 21846 且 =&lt; 2147483647，則：<br><br>NVARCHAR (65535) |
| BLOB | VARBYTE (16777216) |
| NCLOB | VARCHAR (65535) |
| CLOB | VARCHAR (65535) |
| JSON | SUPER |

不支援下列 SQL Server 資料類型。將不會讀取資料。

* HLLSKETCH

下列資料類型會轉換為 VARCHAR (65535)：

* 地理

* 幾何