DSPL thế hệ

DSPL Gen là một tiện ích dòng lệnh giúp chuyển đổi bảng dữ liệu CSV thành tập dữ liệu DSPL đơn giản. Công cụ này phân tích cú pháp tệp đầu vào, tạo tất cả các bảng dữ liệu cần thiết và bố trí một tệp XML DSPL. Kết quả là một "mẫu" tập dữ liệu gần như hoàn chỉnh chỉ yêu cầu tinh chỉnh một chút trước khi tải lên và trực quan hóa.

Giả định cơ bản sau DSPL Gen là mỗi cột trong tệp CSV đầu vào tương ứng với một khái niệm DSPL duy nhất và mỗi hàng là một quan sát duy nhất cho việc kết hợp các thứ nguyên. Công cụ này hoạt động bằng cách lặp lại qua các cột, thiết lập siêu dữ liệu thích hợp cho mỗi cột / khái niệm (ví dụ: mã nhận dạng, loại dữ liệu, liệu đó là phương diện hay chỉ số, v.v.), rồi tạo tất cả các định nghĩa và bảng cắt khái niệm cần thiết.

Chạy DSPL thế hệ

Cú pháp

Lưu ý: Những hướng dẫn này giả định rằng bạn đã làm theo hướng dẫn cài đặt trên trang Công cụ DSPL.

Để chạy DSPL Gen, hãy chuyển đến thiết bị đầu cuối / lời nhắc trên hệ thống của bạn và nhập:

python dsplgen.py -o [output path] [path to CSV file] 

trong đó các cụm từ trong dấu ngoặc vuông được thay thế như sau:

  • [output path]: Đường dẫn đến thư mục mà bạn muốn đặt tệp đầu ra; thư mục này phải tồn tại trong hệ thống tệp của bạn.
  • [path to CSV file]: Đường dẫn đến tệp CSV đầu vào của bạn. Hãy xem mục bên dưới để biết thêm thông tin về cách định dạng tệp này.

Thành phần -o [output path] là không bắt buộc; nếu bỏ qua, các tệp đầu ra sẽ được đặt trong thư mục hiện tại.

Sau đó, công cụ này sẽ chạy, lặp lại qua tệp CSV của bạn, trích xuất định nghĩa của các khái niệm và tạo bảng Slice. Trừ khi tìm thấy lỗi, tệp XML và một hoặc nhiều tệp CSV sẽ được ghi vào thư mục đầu ra.

Cuối cùng, hãy mở tệp XML trong trình chỉnh sửa văn bản mà bạn chọn rồi thực hiện mọi thay đổi mong muốn. Bạn nên điền tối thiểu tên, nội dung mô tả và các giá trị khác đã được công cụ đánh dấu bằng ký hiệu ** INSERT ... **.

Ví dụ đơn giản

Giả sử chúng tôi có tệp CSV cho biết tổng số ca bệnh, được phân chia theo tháng, quốc gia và nhóm tuổi. Để đơn giản, hãy giả sử mỗi phương diện có 2 giá trị:

date,country,age_group,disease_cases
01/2000,US,old,102030
01/2000,MX,old,192939
01/2000,US,young,23131
01/2000,MX,young,12311
02/2000,US,old,143135
02/2000,MX,old,203131
02/2000,US,young,22990
02/2000,MX,young,12591

Việc chạy công cụ trên phương thức nhập ở trên sẽ tạo ra 4 tệp:

  • dataset.xml: Mẫu XML DSPL
  • country_table.csv: Giá trị của khái niệm country
  • age_group_table.csv: Giá trị của khái niệm age_group
  • slice_0_table.csv: Bảng cho phần tập dữ liệu (giống với bảng đầu vào, ngoại trừ việc sắp xếp)

Trong trường hợp cụ thể này, công cụ có thể đoán chính xác tất cả các loại cột và định dạng. Vì vậy, bạn chỉ cần truy cập vào tệp XML rồi chỉnh sửa nhiều tên, mô tả và URL trong siêu dữ liệu tập dữ liệu.

Chú thích CSV đầu vào của bạn

Các tùy chọn cơ bản

Trong nhiều trường hợp, như ví dụ trên, DSPL Gen có thể đoán được siêu dữ liệu cơ bản cho mỗi cột, chẳng hạn như loại, định dạng và liệu đó là một thứ nguyên hay một chỉ số. Tuy nhiên, trong các trường hợp khác, công cụ có thể không đoán được những thứ này, có thể đoán không chính xác hoặc đoán chính xác nhưng vẫn không tuân theo hành vi mong muốn.

Để xử lý những trường hợp này, công cụ này sẽ hỗ trợ việc thêm các tuỳ chọn tạo DSPL/gợi ý "trong hàng tiêu đề CSV. Cú pháp cho các truy vấn này như sau:

column1[option1=value1;option2=value2;...],column2[option1=value1;option2=value2;...],column3[...],...

Cụ thể, hãy lưu ý rằng danh sách các tuỳ chọn được đặt bên trong dấu ngoặc ở bên phải của tên cột và các chế độ cài đặt tuỳ chọn kế tiếp sẽ được phân tách bằng dấu hai chấm. Mỗi lựa chọn bao gồm một tên lựa chọn, dấu bằng và giá trị lựa chọn.

DSPL Gen hiện hỗ trợ các tuỳ chọn cơ bản sau:

Lựa chọn Mô tả Mặc định
type Loại dữ liệu DSPL cho cột này; phải là một trong các giá trị: date, float, integer hoặc string. Dự đoán từ dữ liệu
format Định dạng của cột ngày này; như trong DSPL, định dạng này phải được mã hoá bằng tiêu chuẩn Joda DateTime. Dự đoán từ dữ liệu
slice_role Vai trò của cột này là trong bất kỳ lát cắt nào; phải là dimension hoặc metric. dimension nếu cột thuộc loại date hoặc string, nếu không thì metric
concept Khái niệm chính tắc mà cột này đại diện, ví dụ: geo:country; nếu được cung cấp, thì khái niệm này sẽ được nhập và không có định nghĩa nào được tạo trong tệp XML. Không có
extends Khái niệm chính tắc mà cột này mở rộng, ví dụ: entity:entity. Không có
parent

Khái niệm mẹ cho cột này. Phần tử mẹ này phải là một khái niệm phương diện được xác định trong tập dữ liệu (tức là không được nhập); nếu được cung cấp, thông tin này sẽ được dùng để xác định một hệ phân cấp khái niệm trong tập dữ liệu.

Xin lưu ý rằng mỗi phiên bản con chỉ có thể có một phần tử mẹ. Nếu phát hiện nhiều giá trị thành phần mẹ, thì công cụ này sẽ tạo ra lỗi.

Không có

Tổng hợp giá trị

Ngoài các tuỳ chọn cơ bản, "gợi ý" được mô tả ở trên, DSPL Gen cũng hỗ trợ hoạt động cuộn lên: với một đầu vào bảng duy nhất, công cụ này có thể tự động tạo thêm các bảng khác với một số ít thứ nguyên. Ví dụ: nếu bảng dữ liệu nhập của bạn tương ứng với một lát cắt có 3 phương diện không phải thời gian (ví dụ: dimension1, dimension2dimensions3) công cụ này cũng có thể tạo thêm một số phần: chỉ dimension1, chỉ dimension2, dimension1 dimension2, v.v.

Việc thêm các lát cắt bổ sung này có thể giúp tập dữ liệu của bạn dễ khám phá hơn vì nó giúp giảm số lượng bộ lọc kích thước cần thiết để tạo hình ảnh trực quan. Mặt khác, quy trình này có thể áp dụng dữ liệu "mới" không có trong tệp gốc. Vì vậy, quá trình này cũng có thể gây ra lỗi nếu không được sử dụng đúng cách. Hãy kiểm tra kỹ các số liệu tổng hợp trước khi phát hành tập dữ liệu.

Quá trình tổng hợp được kích hoạt bằng cách đưa thêm một số tuỳ chọn vào tiêu đề CSV đầu vào:

Lựa chọn Mô tả Mặc định
aggregation Phương thức tổng hợp sẽ được sử dụng khi kết hợp nhiều giá trị của cột này; phải là một trong AVG, COUNT, MAX, MIN hoặc SUM; chỉ có ý nghĩa đối với chỉ số. SUM
rollup Nếu giá trị là true, khái niệm cho cột này sẽ được "tổng hợp" (nghĩa là tổng hợp); thông báo này chỉ có ý nghĩa đối với các khái niệm phương diện. Sai
total_val Giá trị trong cột này cho biết các hàng sẽ được giữ lại khi cột này được tổng hợp; chỉ có ý nghĩa đối với khái niệm phương diện. None

Sau đó, DSPL Gen tính toán các tài sản cuộn lên bằng thuật toán sau:

  • Sử dụng các giá trị của thẻ rollup, tính toán tất cả các tổ hợp cột có thể có
  • Đối với mỗi cách kết hợp:
    • Nếu bất kỳ cột cuộn lên nào có tập hợp tham số total_val, hãy lọc các hàng theo giá trị này; nếu không, hãy chọn tất cả các hàng
    • Thả các cột đã tổng hợp
    • Nhóm các hàng theo giá trị của cột phương diện còn lại
    • Tổng hợp từng chỉ số bằng phương thức được chỉ định trong tham số aggregation
    • Tạo một lát cắt và bảng liên kết cho kết quả

Xin lưu ý rằng nếu chỉ có một giá trị duy nhất trong mỗi nhóm và hàm tổng hợp được đặt thành SUM (giá trị mặc định), thì các giá trị của chỉ số trong bảng nguồn và bảng được tạo sẽ giống nhau, tức là không có giá trị mới nào được tạo. Do đó, việc sử dụng tham số total_val và đảm bảo rằng chỉ có một hàng "tổng số" cho mỗi tổ hợp của các tham số khác cho phép bạn lưu trữ các tổng hợp được tính toán trước trực tiếp trong nguồn.

Cảnh báo: Số phần cắt được tạo bằng 2 cột cuộn lên. Việc áp dụng tùy chọn này cho một số lượng lớn cột có thể dẫn đến thời gian chạy rất dài và/hoặc một tập dữ liệu lớn.

Ví dụ nâng cao

Giả sử chúng ta có cùng dữ liệu đầu vào như trong ví dụ trước, nhưng giờ đây bao gồm dữ liệu tổng hợp ở các quốc gia:

date,country,age_group,disease_cases
01/2000,US,old,102030
01/2000,MX,old,192939
01/2000,total,old,152012
01/2000,US,young,23131
01/2000,MX,young,12311
01/2000,total,young,241011
02/2000,US,old,143135
02/2000,MX,old,203131
02/2000,total,old,211310
02/2000,US,young,22990
02/2000,MX,young,12591
02/2000,total,young,240131

Ví dụ: Tổng số cho mỗi nhóm tuổi có thể không khớp với tổng giá trị của các quốc gia vì sự khác biệt về phương pháp hoặc sự tồn tại của những quốc gia khác không được liệt kê trong danh sách.

Hiện tại, chúng tôi muốn tạo một tập dữ liệu DSPL có các tính năng bổ sung sau:

  1. "Cuộn lên" các quốc gia để chúng tôi có được tổng số ca bệnh theo riêng độ tuổi
  2. Sử dụng khái niệm geo:country chính tắc cho cột country để chúng tôi có thể tự động lấy tên đầy đủ, vị trí, v.v. cho các truy vấn này
  3. Đặt khái niệm disease_cases mở rộng quantity:amount để chúng tôi có thể (thêm thủ công) thông tin đơn vị vào tệp XML

Để làm việc này, chúng tôi sửa đổi hàng tiêu đề của tệp CSV đầu vào như sau:

date,country[concept=geo:country;rollup=true;total_val=total],age_group,disease_cases[extends=quantity:amount]

Chạy lại công cụ này, chúng tôi hiện có một bảng lát cắt bổ sung. Bảng này giúp loại bỏ sự khác biệt theo quốc gia:

date,age_group,disease_cases
01/2000,old,152012
02/2000,old,211310
01/2000,young,241011
02/2000,young,240131

Xin lưu ý rằng nếu chúng tôi không đưa tổng giá trị và thẻ total_val vào bảng nguồn, thì chúng tôi sẽ nhận được tổng số theo tính toán cho từng nhóm tuổi.

Ngoài ra, định nghĩa disease_cases trong tệp XML hiện bao gồm phần mở rộng từ quantity:amount, như mong muốn. Phần khai báo của country sẽ bị xoá khỏi tệp XML vì chúng tôi đang sử dụng một khái niệm đã nhập cho phần này.

Sau khi điền tên, nội dung mô tả và thông tin đơn vị, chúng tôi có thể nén gói dữ liệu và tải gói đó lên Trình khám phá dữ liệu công khai để trực quan hoá.