> For the complete documentation index, see [llms.txt](https://knowins.gitbook.io/tai-lieu-huong-dan-knowins-phan-1/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://knowins.gitbook.io/tai-lieu-huong-dan-knowins-phan-1/huong-dan/dai-du-lieu.md).

# Dải Dữ Liệu

{% hint style="info" %}
Hãy chắc chắn là bạn có dữ liệu đúng trước khi chuẩn bị phần trình bày một báo cáo.
{% endhint %}

Có một điều chúng ta không thể biết trước khi làm báo cáo thu nhập cho cộng tác viên là số lượng các chương trình gây quỹ mà cộng tác viên đó đã giúp quảng bá. Đó có thể chỉ là danh sách một hai chương trình, hoặc cũng có thể là một danh sách rất dài.

Do vậy, chúng ta cần có công cụ mới để có thể trình bày chính xác các dữ liệu "động" này. Bạn sẽ làm quen với một khái niệm mới, gọi là dải dữ liệu, để làm điều này. Bạn sẽ sử dụng "named range" trong Excel để tạo các dải dữ liệu.

Mở file báo cáo mẫu Excel, đi vào menu <mark style="color:yellow;">Formulas</mark> và chọn <mark style="color:yellow;">Name Manager</mark>. Tạo một `named range` có tên là *`_Report_`* cho các ô từ *cột F đến cột L của hàng thứ 11* trong bảng trình bày như sau:

<figure><img src="https://570479789-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FthFCMd6I0N27abdqAJLZ%2Fuploads%2FezNNhdxdlozwiSd0dN4m%2FScreen%20Shot%202024-02-25%20at%204.16.22%20PM.png?alt=media&amp;token=d9ecdbdb-35fe-43ce-947f-50d241407b16" alt=""><figcaption><p>Tạo dải dữ liệu</p></figcaption></figure>

Để ý có dấu gạch dưới `_` trước và sau tên của dải dữ liệu `Report`. Hai dấu gạch này biến *named range* của Excel thành dải dữ liệu động trong KNOWINS.

## Dải Dữ Liệu

Dải dữ liệu là một khái niệm quan trọng giúp bạn có thể sử dụng tất cả các tính năng mạnh mẽ của nền tảng quản trị KNOWINS

Dải dữ liệu là một dải các ô được lặp lại cho mỗi dòng dữ liệu của bộ nhu liệu. Ví dụ, nếu bạn xác định một dải dữ liệu trên các ô A2:C2 và liên kết nó với bộ nhu liệu khách hàng. Khi đó các ô `A2:C2` sẽ chứa thông tin của khách hàng đầu tiên, A3:C3 chứa thông tin của khách hàng thứ hai, và cứ như vậy. Tất cả các ô trước đó trên A3:C3 sẽ được di chuyển xuống phía dưới sau khi đã xử lý tất cả các bản ghi của tập dữ liệu. Ví dụ, nếu tập dữ liệu khách hàng (Customer) có sáu bản ghi, và bạn có một mẫu như sau:&#x20;

<figure><img src="https://lh7-us.googleusercontent.com/UmuU9derSRVBPK6jbdDuGstP-rXD4xWm72XCdcTRNhSzU03uPPFTpFSzNWYPKLoozjNbsxagIs446RyqJNV86RrpzZU3zOExO__f4MzkNHHN6gRIJ064H8mcYgu2dQz8h7tJcptKDlW4T_izSveWFw" alt="" width="375"><figcaption></figcaption></figure>

Sau khi chạy báo cáo, bạn sẽ nhận được kết quả như sau, để ý rằng dòng chữ  - <mark style="color:yellow;">This is some text below the band</mark> -  trong ô A3 đã được di chuyển xuống phía bên dưới kết quả sau khi chạy dải dữ liệu.

<figure><img src="https://lh7-us.googleusercontent.com/0dT4BwVpk3DCwXEejPBPl0aANrrkDGtZmNow2TsKPcWC1oWx0kms1VzqjqYwmxUw66YY_WyokX9dPy6WqTg5yX2WBcMQ_t45j5kZlTe93tKsN_xbs-WKCgPI5UMyaYFSMq8j8NfH8KVMMn91_wVa6g" alt="" width="375"><figcaption></figcaption></figure>

{% hint style="info" %}
Các Loại Dải: Bạn có thể định nghĩa bốn loại dải dữ liệu khác nhau như sau:

* *`__`*  Dải dữ liệu này di chuyển xuống phía dưới và chèn  nguyên một hàng cho mối dòng dữ liệu. Ví dụ: `__Customer__`
* *`_`*        Dải dữ liệu này này tương tự như dải  *`__`*  nhưng các ô bên ngoài dải sẽ không di chuyển xuống phía dưới. Ví dụ: `_Customer_`
* `II_`   Dải dữ liệu này di chuyển sang bên phải và chèn nguyên một cột. Lưu ý rằng ký tự đầu tiên là chữ  `I`, không phải là dấu gạch thẳng |. Ví dụ: `II_Customer_II`
* `I_`   Dải dữ liệu này tương tự như dải `II_` nhưng các ô bên ngoài dải sẽ không di chuyển sang phải. Ví dụ: `I_Customer_I`<br>

Xem thêm trong phần [Tham Khảo](/tai-lieu-huong-dan-knowins-phan-1/reporting-concept/range-types.md) để có giải thích  đầy đủ hơn.
{% endhint %}

Bây giờ hãy giải thích những công thức của chúng ta làm gì:

1. Chúng ta đã định nghĩa một dải dữ liệu có tên là *`_Report_`* sử dụng một dải các cột từ F đến L  dòng thứ 11 của bảng trình bằng cách định nghĩa trong tệp Excel một  *named range* *`'Affiliate Income'!$F$11:$L$11`* .
2. Khi đó, dải dữ liệu *`__Report__`* sẽ tìm kiếm trong cột A trong bảng cấu hình và tìm một bộ nhu  liệu có cùng tên để sử dụng làm tập dữ liệu của nó. Nó sẽ tìm thấy bộ nhu liệu *`Report`* được khai báo trong ô A10 của bảng *`<#Config>`*.
3. Nguồn dữ liệu cho *`Report`* được xác định trong ô B10 và chính là bộ nhu liệu bên dưới báo cáo.\ <br>

   <figure><img src="https://570479789-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FthFCMd6I0N27abdqAJLZ%2Fuploads%2FD5C8qA6xs67mMuY1r2FX%2Fimage.png?alt=media&amp;token=fc963d20-ab14-461a-ae7d-71bd3f4cd196" alt="" width="563"><figcaption></figcaption></figure>

Bấy giờ, hãy điền các thông tin về các chương trình gây quỹ được quảng báo bởi cộng tác viên này sử dụng thẻ nhu liệu: [*`Dataset`*](/tai-lieu-huong-dan-knowins-phan-1/tham-khao/dataset.md).

## Thẻ Nhu Liệu

KNOWINS đã định nghĩa sẵn một thẻ hàm gọi là thẻ nhu liệu. Thẻ này chỉ được sử dụng bên trong một dải dữ liệu đã được định nghĩa trước đó. Nó trả về giá trị trong một cột xác định cho dòng dữ liệu hiện tại của dải dữ liệu.&#x20;

Cú pháp:

```
<#DataSet.Field>
<#DataSet.Field;default>
```

{% tabs %}
{% tab title="Diễn giải" %}
Trả về giá trị của cột *`Field`* trên dòng dữ liệu hiện hành của dải dữ liệu *`DataSet`*. Nếu giá trị mặc định *`default`* được cung cấp, nó sẽ được sử dụng khi cột *`Field`* không tồn tại trong dải dữ liệu, hoặc dải dữ liệu không tồn tại.

Nếu bạn không cung cấp giá trị mặc định và cột dữ liệu không tồn tại, KNOWINS sẽ báo lỗi khi chạy báo cáo.
{% endtab %}

{% tab title="Ví dụ" %}
Nếu bạn có một dải dữ liệu *`Customers`* với một cột có tên là *`LastName`*,&#x20;

*`<#Customers.LastName>`* sẽ được thay thế bằng giá trị của cột *`LastName`* trong dòng dữ liệu hiện hành của dải dữ liệu *`Customer`*.

*`<#if(<#Customers.#RowCount> = 0;<#delete row>;)>`* sẽ xóa một hàng trong bảng trình bày nếu dải dữ  liệu không có bản ghi nào. Bạn có thể sử dụng công thức này để xóa các tiêu đề chi tiết trên báo cáo mẹ-con khi báo cáo mẹ không có dữ liệu con nào cả.

*`<#Customers.LastName;Không có khách hàng>`* sẽ thay giá trị của cột *`LastName`* nếu cột đó tồn tại trong dải dữ liệu, ngược lại thay bằng dòng chữ *`Không có khách hàng`*.

*`<#Customers.LastName;>`* sẽ thay bằng một giá trị trống nếu cột *`LastName`* không tồn tại.

*`<#Customers.ByName.LastName>`* sẽ tham chiếu đến cột *`ByName.LastName`* của dải dữ liệu *`Customers`*.&#x20;

*`<#[Customers.ByName].LastName>`* cột *`LastName`* của dải dữ liệu *`Customers.ByName`*.
{% endtab %}
{% endtabs %}

## Áp dụng

Sau đó hãy áp dụng các thẻ nhu liệu vào bảng trình bày của báo cáo. Đi đến các ô sau và nhập các thẻ này:

```
F11: <#Report.promoted_on>
G11: <#Report.campaign_name>
H11: <#Report.creator_name>
I11: <#Evaluate(<#Report.amount> * <#Report.affiliate_fee> / 100)>
K11: <#Evaluate(<#Report.affiliate_fee> / 100)>
```

<figure><img src="https://570479789-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FthFCMd6I0N27abdqAJLZ%2Fuploads%2F85NUaagNirMGhgKDEP7r%2FScreen%20Shot%202024-02-26%20at%201.56.37%20PM.png?alt=media&amp;token=baada6d5-56cc-4572-a976-4e9dce685d5b" alt=""><figcaption><p>Áp dụng các thẻ nhu liệu</p></figcaption></figure>

Lưu và tải mẫu lên báo cáo thu nhập.&#x20;

Cuối cùng, kéo thêm các cột  *`campaign_name`*, *`creator_name`* bên dưới nhu liệu `ONEIRO_DT_CP` và *`promoted_on`* vào lưới kết xuất rồi chạy báo cáo, bạn sẽ có kết quả như sau:

<figure><img src="https://570479789-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FthFCMd6I0N27abdqAJLZ%2Fuploads%2Fe8rc4spXWoiBYFKMt3rW%2FScreen%20Shot%202024-02-27%20at%208.55.18%20AM.png?alt=media&amp;token=6b30bbed-9f01-4f4c-9546-ed635e3945a0" alt=""><figcaption><p>Chạy báo cáo thu nhập cộng tác viên - bước 2</p></figcaption></figure>

Thường xuyên xảy ra trong lần chạy đầu tiên là kết quả không như bạn mong muốn. Bạn vò đầu bứt tai và không biết bạn đã sai ở đâu. Đó là lúc bạn sẽ muốn in tất cả nhu liệu được tập hợp bên dưới báo cáo ra để tìm lỗi.

Để thuận tiện, bạn có thể tài mẫu báo cáo đã hoàn thiện về tại đầy:&#x20;

{% file src="/files/u7uxuZzbsekspguqbkuJ" %}
