# 資料模型化的最佳做法

本區段說明您可將資料載入 Qlik Sense 應用程式 的多種方式；這些方式會依資料的結構化方式和您要達到何種資料模型而有所不同。



## 將資料行轉為列

我的資料可能如下所示，並且我想將銷售數據列於單獨欄位：

原始資料表格

| 年 | Q1 | Q2 | Q3 | Q4 |
| --- | --- | --- | --- | --- |
| 2013 | 34 | 54 | 53 | 52 |
| 2014 | 47 | 56 | 65 | 67 |
| 2015 | 57 | 56 | 63 | 71 |

建議的行動

載入表格時使用 Crosstable 前置詞。

結果將如下所示：

套用 Crosstable 前置詞之後的表格

| Year | Quarter | Sales |
| --- | --- | --- |
| 2013 | Q1 | 34 |
| 2013 | Q2 | 54 |
| 2013 | Q3 | 53 |
| 2013 | Q4 | 52 |
| 2014 | Q1 | 47 |
| ... | ... | ... |

若要進一步瞭解 Crosstables，請參閱 [在資料載入指令碼中使用跨維度資料表](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/work-with-cross-tables.htm) 和 [Crosstable](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/crosstable.htm)。

## 將資料列轉為欄位

我有包含三個與此類似的欄位的一般表格，並且我想將各屬性作為一個單獨的表格：

含有三個欄位的一般表格

| Object | Attribute | Value |
| --- | --- | --- |
| ball | color | red |
| ball | diameter | 25 |
| ball | weight | 3 |
| box | color | 56 |
| box | height | 30 |
| box | length | 20 |
| box | width | 25 |

建議的行動

使用一般載入前置詞建立一般資料模型。

您將獲得如下所示的資料模型：

![一般資料模型。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/ex_gen_GenericDatabase_300x300.png)

若要進一步瞭解一般資料，請參閱 [泛型資料庫](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataSource/generic-databases.htm) 和 [Generic](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Generic.htm)。

## 載入以階層方式組織的資料，如組織體系

我的資料儲存於如下所示的相鄰節點表格：

相鄰節點表格

| NodeID | ParentNodeID | Title |
| --- | --- | --- |
| 1 | - | General manager |
| 2 | 1 | Country manager |
| 3 | 2 | Region manager |

建議的行動

使用階層前置詞載入資料，建立展開的節點表格：

展開的節點表格

| NodeID | ParentNodeID | Title | Level1 | Level2 | Level3 |
| --- | --- | --- | --- | --- | --- |
| 1 | - | General manager | General manager | - | - |
| 2 | 1 | Country manager | General manager | Country manager | - |
| 3 | 2 | Region manager | General manager | Country manager | Region manager |

若要進一步瞭解階層式層級，請參閱 [載入階層資料](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataSource/hierarchies.htm) 和 [Hierarchy](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Hierarchy.htm)。

## 僅從大型資料庫載入新的或更新的記錄

我的資料庫含有大量記錄，我不想重新載入整個資料庫以重新整理我應用程式中的資料。我僅想載入新的或更新的記錄，並移除已從資料庫刪除的記錄。

建議的行動

使用 QVD 檔案實施累加載入解決方案。

如需詳細資訊，請參閱[使用累加載入載入新的和更新的記錄](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/use-QVD-files-incremental-load.htm)。

## 將兩個表格的資料合併至相同欄位

Qlik Sense 自動將表格與相同欄位關聯，但我想控制表格合併的方式。

建議的行動 : Join / Keep

您可使用 Join 或 Keep 前置詞將兩個表格合併為單個內部表格。

如需詳細資訊，請參閱[使用 Join 和 Keep 結合表格](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/combine-tables-join-keep.htm)。

建議的行動 : 對應

合併表格的替代選項為使用對應，以自動查找對應表格中的關聯值。這可減少資料載入量。

如需詳細資訊，請參閱[使用對應作為聯結的替代選項](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/use-mapping-as-alternative-join.htm)。

## 將離散值與間隔配對

我有一個包含離散數值的表格 (Event)，並且我想將這個表格與一個或多個間隔配對 (Start 和 End)。

離散數值的表格 (EventEvent)

| 時間 | 事件 | 註解 |
| --- | --- | --- |
| 00:00 | 0 | 以排班 1 開始 |
| 01:18 | 1 | 產線停止 |
| 02:23 | 2 | 產線重新啟動 50% |
| 04:15 | 3 | 產線速度 100% |
| 08:00 | 4 | 以排班 2 開始 |
| 11:43 | 5 | 結束或生產 |

含有時間間隔的表格 (StartStart 和 End End)

| 開始 | 結束 | 順序 |
| --- | --- | --- |
| 01:00 | 03:35 | A |
| 02:30 | 07:58 | B |
| 03:04 | 10:27 | C |
| 07:23 | 11:43 | D |

建議的行動

使用 IntervalMatch 前置詞連結 Time 欄位與 Start 和 End 定義的間隔。

如需詳細資訊，請參閱 [配對間隔和離散資料](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/matching-intervals-to-discrete-data.htm)。

如果間隔沒有明確定義開始和結束，僅有下表所示的變更時間戳記，則需建立間隔表格。

含有變更時間戳記的表格

| 貨幣 | 變更資料 | 評價 |
| --- | --- | --- |
| EUR | - | 8.59 |
| EUR | 28/01/2013 | 8.69 |
| EUR | 15/02/2013 | 8.45 |
| 美元 | - | 6.50 |
| 美元 | 10/01/2013 | 6.56 |
| 美元 | 03/02/2013 | 6.30 |

如需詳細資訊，請參閱[從單一日期建立日期間隔](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/create-date-interval-from-single-date.htm)。

## 處理不一致的欄位值

我的資料包含在不同表格中有不同名稱的欄位值。例如，一個表格包含國家/地區中的值 US，而另一個表格包含 United States。這種情況應避免關聯。

表格 1

| 國家/地區 | 區域 |
| --- | --- |
| 美國 | 馬里蘭州 |
| 美國 | 愛達荷州 |
| 美國 | 紐約州 |
| 美國 | 加利福尼亞州 |

Table 2

| Country | Population |
| --- | --- |
| United States | 304 |
| Japan | 128 |
| Brazil | 192 |
| China | 1333 |

建議的行動

使用對應表格執行資料清理，這將比較欄位值並啟用正確關聯。

如需詳細資訊，請參閱 [資料清理](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/data-cleansing.htm)。

## 處理不一致的欄位值首字母大寫

我的資料包含在不同表格中有不同格式的欄位值。例如，一個表格在 Type 中包含值 single，而另一個表格在相同的欄位中包含 Single。這種情況會影響關聯，因為 Type 欄位會同時包含 single 和 Single 值，首字母大寫會產生影響。

表格 1

| 類型 | 價格 |
| --- | --- |
| 單色 | 23 |
| 雙色 | 39 |

表格 2

| 類型 | 色彩 |
| --- | --- |
| 單色 | 紅色 |
| 單色 | 藍色 |
| 雙色 | 白色 |
| 雙色 | 黑色 |

建議的行動

如果您使用新增資料載入資料，您可以在資料管理員中修正此問題。

請執行下列動作：

1. 在資料管理員中，開啟表格編輯器中的 Table2。

2. 重新命名 Type 欄位為 Table2.Type。

   當您在啟用資料分析的情況下剛剛使用新增資料新增了表格，則該欄位可能已命名為 Table2.Type 以阻止自動關聯。這種情況下，此程序會關聯兩個表格。

3. 使用運算式 `Lower(Table2.Type)` 建立計算欄位，並將其命名為 Type。

4. 按一下載入資料。

Table1 和 Table2 現應透過欄位 Type 關聯起來，其中只包含小寫字母的值，例如 single 和 double。

如要使用不同的大寫字母，您也可以透過相同程序達到此目的，但請記住，表格將使用具有相同名稱的欄位進行關聯。

* 若要將所有值變為首字母大寫，例如 Single，請轉而在 Table1 中建立 Type 計算欄位，並使用運算式 `Capitalize(Table1.Type)`。
* 若要使所有值均變為大寫字母，例如 SINGLE，請在兩個表格中建立 Type 計算欄位，並分別使用運算式 `Upper(Table1.Type)` 和 `Upper(Table2.Type)`。

若要進一步瞭解計算欄位，請參閱 [使用計算欄位](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/add-calculated-field.htm)。

若要進一步瞭解大寫，請參閱 [Capitalize 指令碼與圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Capitalize.htm)、[Lower 指令碼與圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Lower.htm) 和 [Upper 指令碼與圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Upper.htm)。

## 載入地域資料，使用地圖對資料進行視覺化處理

我有想使用地圖進行視覺化處理的資料，例如每個國家/地區或每間店舖的銷售資料。如要使用地圖進行視覺化處理，則需載入區域或點資料。

建議的行動

您可載入與 KML 檔案或 Excel 檔案的資料值位置配對的區域或點資料。另外，您需要載入實際地圖背景。

如需詳細資訊，請參閱[載入自己的地圖資料](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Visualizations/Map/load-map-data.htm)。