繁體中文

資料與電子表格 · CSV 更清理

為什麼 CSV 中的空字串、NULL 和缺失欄位不是一回事

· 為什麼它很重要

csv json 資料格式

空 CSV 單元格、文字 NULL 標記和短行作為不同的可見輸入但字串輸出到達
原始 ToolAcre 向量圖

CSV 無法說「沒有價值」;它只有文字。這篇文章解釋了空白欄位、帶引號的空字串、文字 NULL 和短行有何不同,為什麼載入程式不同意它們,以及轉換為 JSON 如何強制解決這個問題。

相同的空白儲存格在一個系統中變成 NULL,而在另一個系統中變成空字串 — 為什麼會改變連接、計數和平均值

看起來空白的來源單元可以攜帶多個歷史記錄,但 ToolAcre 的 JSON 輸出故意將它們縮小為一種表示。空白欄位、引號的空白欄位和解析器填滿的短行都成為目前鍵下的空字串。從外觀上無法推斷出空值。

只有當消費者知道時,這種一致性才有用。專門針對 null 的程式碼測試不會取代「」的預設值。確定接收邊界處的缺失值約定,而不是假設轉換器保留 CSV 語法或其選擇的解析模型未保留的差異。

在 ToolAcre 中,空白和填滿的缺失儲存格都會變成空白字串,除非使用者重新解釋它們

CSV 可以包含兩個之間沒有任何內容的分隔符號、明確引用的空字串、文字文字(例如 NULL 或 NA)以及在標題寬度之前結束的行。 ToolAcre 將前兩個解析為空字串,並將文字標記保留為普通文字。

對於短行,它會發出 `RAGGED_ROW` 警告,並用空字串填充缺少的尾部單元格。對於長行,它會保留表中的額外單元格,但 JSON 轉換沒有它們的標頭鍵並忽略它們。這種不對稱性就是結構警告需要在轉換之前採取行動的原因。

常見載入器如何解釋每個載入器 - 電子表格、資料庫和資料框架庫中的不同預設值

不同的資料庫用戶端和分析庫公開其自己的可配置空標記和空白欄位策略。該儲存庫無法建立這些預設值,因此本文並不聲稱所有電子表格或載入器都同意。它記錄了其原始程式碼和測試可用的一種實作。

When handing the file to another system, read that importer’s settings and create fixtures for ``, `""`, NULL and a short row.可靠的契約在實際邊界上得到證明。關於「CSV通常意味著什麼」的一般民間傳說對於缺失值來說太弱了。

載入程式預設值有所不同;本文記錄了 ToolAcre,而不是概括電子表格或資料庫行為

文字 NULL 特別危險,因為它可能是真實內容或寄件者的哨兵。 ToolAcre 沒有配置哨兵列表,因此將其保留為四個字元字串「NULL」。對於 NA、N/A, 零和生產者可能使用的任何其他代幣也是如此。

如果沒有特定於欄位的規則,請勿全域取代此類字串。註解列可以合法地包含“NULL”,而程式碼列可以使用 NA。使用生產者檔案或模式解決含義,然後僅轉換正在審查的適當欄位。

JSON 讓您做出決定 — 檔案轉換後,null、空字串和缺失鍵是三種不同的東西

JSON distinguishes null, an empty string and an absent property, but ToolAcre chooses present keys with string values for every header column. 遺失或填入的單元格變成「」。轉換器不會產生 JSON null,也不會因為儲存格為空而忽略鍵。

剩餘單元格不同:沒有對應的標頭,沒有可指派的鍵,因此產生的物件中不存在它。行警告告訴您可能會發生遺失。在下載之前修復標題或行寬度,而不是將缺失視為有意義的空策略。

ToolAcre 發出空字串並顯示鍵,而不是空或不存在的鍵

使用標頭 id、note、code 和四筆記錄:`1,,A`、`2,"",NULL`、`3,hello` 和 `4,world,B,extra`。前兩個音符變成空弦;第二行中的程式碼保持「NULL」。第三行在填充後收到代碼“”,而第四行警告額外的單元格沒有鍵。

產生的物件明顯帶有表示列的相同三個鍵。這個工作案例比空白單元格的螢幕截圖提供更多信息,因為它將解析警告連接到 JSON 形狀。它也說明了為什麼文字標記需要單獨的網域決策。

這不包括什麼 - 缺失值預設值的插補和業務規則

插補位於路線之外。轉換器不會填入缺失的價格、複製先前的值或從相鄰行推斷預設值。這些變更取決於業務意義,並應該在模式區分未知、不適用和故意為空的值之後發生。

它也不保留未加引號的空欄位和 `""` 之間的語法區別;兩者都解析為相同的單元格字串。如果這種差異很重要,那麼 CSV 不會透過此解析器的表模型來承載它。選擇具有明確狀態的表示或將原始來源與衍生資料一起保留。

在載入之前確定空白的意思 - ToolAcre CSV Cleaner 的 CSV 到 JSON 轉換如何使表示可見

在將 JSON 載入到鍵入的程式碼中之前確定空白的意思。 ToolAcre 提供了透明的基線:無處不在的字串值、缺少表示的單元格的空字串、未更改的文字標記詞以及行形狀超出可用鍵的警告。

檢查這些警告並記錄任何以後的強制。轉換器無法僅從文字建立缺失值語義,但它可以避免隱藏自己的選擇。這種可預測的行為使得下一個邊界負責它實際上有資格執行的策略。