Tiếng Việt

Dữ liệu & bảng tính · CSV Trình dọn dẹp

Tại sao các chuỗi trống, NULL và các trường bị thiếu không giống nhau trong CSV

· Tại sao nó quan trọng

csv json data-formats

Các ô CSV trống, mã thông báo NULL theo nghĩa đen và một hàng ngắn xuất hiện dưới dạng các đầu vào hiển thị khác nhau nhưng là đầu ra chuỗi
Hình minh họa vector ToolAcre gốc

CSV không có cách nào để nói 'không có giá trị'; nó chỉ có văn bản. Bài đăng này giải thích sự khác biệt giữa các trường trống, chuỗi trống được trích dẫn, NULL và hàng ngắn, tại sao trình tải không đồng ý về chúng và cách chuyển đổi sang JSON buộc phải đặt câu hỏi.

Ô trống tương tự sẽ trở thành NULL trong một hệ thống và một chuỗi trống trong một hệ thống khác — tại sao điều đó lại thay đổi phép nối, số đếm và giá trị trung bình

Các ô nguồn trông trống có thể chứa nhiều lịch sử, nhưng đầu ra JSON của ToolAcre cố tình thu hẹp chúng thành một biểu diễn. Một trường trống, trường trống được trích dẫn và hàng ngắn được trình phân tích cú pháp đệm đều trở thành chuỗi trống bên dưới khóa hiện tại. Không có null được suy ra từ sự xuất hiện.

Tính nhất quán đó chỉ hữu ích khi người tiêu dùng biết điều đó. Kiểm tra mã cụ thể cho null sẽ không thay thế mặc định cho "". Quyết định hợp đồng giá trị còn thiếu tại ranh giới nhận thay vì giả sử trình chuyển đổi bảo toàn các khác biệt mà cú pháp CSV hoặc mô hình phân tích cú pháp đã chọn của nó không giữ lại.

Trong ToolAcre, ô trống và ô bị thiếu đều trở thành chuỗi trống trừ khi người tiêu dùng diễn giải lại chúng

CSV có thể chứa hai dấu phân cách không có dấu phân cách nào ở giữa, một chuỗi trống được trích dẫn rõ ràng, văn bản bằng chữ như NULL hoặc NA và một hàng kết thúc trước độ rộng tiêu đề. ToolAcre phân tích hai chuỗi đầu tiên dưới dạng chuỗi trống và giữ nguyên các mã thông báo bằng chữ như văn bản thông thường.

Đối với một hàng ngắn, nó sẽ phát ra cảnh báo `RAGGED_ROW` và xóa các ô ở cuối bằng các chuỗi trống. Đối với một hàng dài, nó giữ lại các ô bổ sung trong bảng, nhưng chuyển đổi JSON không có khóa tiêu đề cho chúng và bỏ qua chúng. Sự bất đối xứng này là lý do tại sao cảnh báo cấu trúc yêu cầu hành động trước khi chuyển đổi.

Cách các trình tải thông thường diễn giải từng loại - các giá trị mặc định khác nhau trong bảng tính, cơ sở dữ liệu và thư viện khung dữ liệu

Các máy khách cơ sở dữ liệu và thư viện phân tích khác nhau hiển thị mã thông báo rỗng có thể định cấu hình và chính sách trường trống của riêng chúng. Kho lưu trữ này không thể thiết lập các giá trị mặc định đó, vì vậy bài viết không khẳng định rằng tất cả các bảng tính hoặc trình tải đều đồng ý. Nó ghi lại một triển khai có sẵn nguồn và các thử nghiệm.

Khi chuyển tệp sang hệ thống khác, hãy đọc cài đặt của nhà nhập khẩu đó và tạo các nội dung cố định cho ``, `""`, NULL và một hàng ngắn. Một hợp đồng đáng tin cậy được thể hiện ở ranh giới thực tế. Văn hóa dân gian chung về ý nghĩa “CSV thường có nghĩa” là quá yếu đối với các giá trị bị thiếu.

Mặc định của trình tải khác nhau; bài viết này ghi lại ToolAcre thay vì khái quát hóa hành vi của bảng tính hoặc cơ sở dữ liệu

Văn bản NULL đặc biệt nguy hiểm vì nó có thể là nội dung chân thực hoặc do người gửi gửi. ToolAcre không có danh sách trọng điểm được định cấu hình và do đó giữ nguyên danh sách này dưới dạng chuỗi bốn ký tự "NULL". Điều này cũng đúng với NA, N/A, zero và bất kỳ mã thông báo nào khác mà nhà sản xuất có thể sử dụng.

Không thay thế toàn bộ các chuỗi như vậy mà không có quy tắc dành riêng cho từng trường. Cột ghi chú có thể chứa “NULL” một cách hợp pháp và cột mã có thể sử dụng NA. Giải quyết ý nghĩa bằng tài liệu của nhà sản xuất hoặc lược đồ, sau đó chỉ chuyển đổi các cột thích hợp đang được xem xét.

JSON khiến bạn phải quyết định — null, chuỗi trống và khóa vắng mặt là ba thứ khác nhau sau khi tệp được chuyển đổi

JSON phân biệt null, chuỗi trống và thuộc tính vắng mặt, nhưng ToolAcre chọn khóa hiện tại có giá trị chuỗi cho mỗi cột tiêu đề. Các ô bị thiếu hoặc bị đệm sẽ trở thành "". Trình chuyển đổi không tạo ra JSON null và không bỏ sót khóa chỉ vì một ô trống.

Một ô dư thừa thì khác: không có tiêu đề tương ứng, không có khóa để gán nên nó không có trong các đối tượng được tạo. Cảnh báo hàng cho bạn biết rằng có thể mất mát. Sửa tiêu đề hoặc chiều rộng hàng trước khi tải xuống thay vì đọc sự vắng mặt như một chính sách vô hiệu có ý nghĩa.

ToolAcre phát ra các chuỗi trống và hiển thị các khóa, không phải các khóa rỗng hoặc không có

Sử dụng id tiêu đề, ghi chú, mã và bốn bản ghi: `1,,A`, `2,"",NULL`, `3,hello` và `4,world,B,extra`. Hai nốt đầu tiên trở thành dây trống; mã ở hàng hai vẫn là "NULL". Hàng ba nhận được mã "" sau khi đệm, trong khi hàng bốn cảnh báo rằng một ô bổ sung không có khóa.

Các đối tượng thu được rõ ràng mang ba khóa giống nhau cho các cột được biểu diễn. Trường hợp hoạt động này cung cấp nhiều thông tin hơn ảnh chụp màn hình các ô trống vì nó kết nối các cảnh báo phân tích cú pháp với hình dạng JSON. Nó cũng cho thấy tại sao mã thông báo theo nghĩa đen lại yêu cầu quyết định tên miền riêng.

Điều này không bao gồm những gì - quy tắc quy định và kinh doanh cho giá trị bị thiếu sẽ được mặc định là gì

Sự tranh chấp nằm ngoài lộ trình. Trình chuyển đổi không điền giá còn thiếu, sao chép các giá trị trước đó hoặc suy ra giá trị mặc định từ các hàng lân cận. Những thay đổi đó phụ thuộc vào ý nghĩa kinh doanh và sẽ xảy ra sau khi lược đồ phân biệt các giá trị không xác định, không thể áp dụng và có chủ ý để trống.

Nó cũng không bảo toàn sự khác biệt về cú pháp giữa trường trống không có trích dẫn và `""`; cả hai đều phân tích thành cùng một chuỗi ô. Nếu sự khác biệt đó quan trọng thì CSV sẽ không chuyển nó qua mô hình bảng của trình phân tích cú pháp này. Chọn một biểu diễn có trạng thái rõ ràng hoặc bảo toàn nguồn thô cùng với dữ liệu dẫn xuất.

Quyết định ý nghĩa của khoảng trống trước khi bạn tải — cách chuyển đổi ToolAcre CSV của trình dọn dẹp CSV-to-JSON làm cho phần trình bày hiển thị

Quyết định ý nghĩa của khoảng trống trước khi tải JSON vào mã đã nhập. ToolAcre cung cấp đường cơ sở minh bạch: các giá trị chuỗi ở mọi nơi, chuỗi trống cho các ô được biểu thị bị thiếu, các từ trọng tâm theo nghĩa đen không thay đổi và cảnh báo khi hình dạng hàng vượt quá các khóa có sẵn.

Kiểm tra những cảnh báo đó và ghi lại mọi hành vi ép buộc sau này. Trình chuyển đổi không thể tạo ngữ nghĩa có giá trị bị thiếu chỉ từ văn bản, nhưng nó có thể tránh ẩn các lựa chọn của chính nó. Hành vi có thể dự đoán được đó khiến ranh giới tiếp theo chịu trách nhiệm về chính sách mà nó thực sự đủ điều kiện để thực thi.