데이터 및 스프레드시트 · CSV 클리너
빈 문자열, NULL 및 누락된 필드가 CSV에서 동일하지 않은 이유
· 그것이 중요한 이유
CSV JSON 데이터 형식
CSV에는 '값 없음'이라고 말할 방법이 없습니다. 텍스트만 있습니다. 이 게시물에서는 빈 필드, 인용된 빈 문자열, 리터럴 NULL 및 짧은 행이 어떻게 다른지, 로더가 이에 대해 동의하지 않는 이유, JSON로의 변환이 어떻게 질문을 강제하는지 설명합니다.
한 시스템에서는 동일한 빈 셀이 NULL이 되고 다른 시스템에서는 빈 문자열이 됩니다. 이것이 조인, 개수 및 평균을 변경하는 이유입니다.
공백으로 보이는 소스 셀은 여러 기록을 전달할 수 있지만 ToolAcre의 JSON 출력은 의도적으로 이를 하나의 표현으로 좁힙니다. 빈 필드, 인용된 빈 필드 및 파서가 채운 짧은 행은 모두 현재 키 아래의 빈 문자열이 됩니다. 모양에서 null이 추론되지 않습니다.
이러한 일관성은 소비자가 이를 알고 있는 경우에만 유용합니다. null에 대한 코드 테스트는 ""의 기본값을 대체하지 않습니다. CSV 구문이나 선택한 구문 분석 모델이 유지하지 못한 차이점을 변환기가 유지한다고 가정하는 대신 수신 경계에서 결측값 계약을 결정합니다.
ToolAcre에서 공백과 패딩된 누락 셀은 소비자가 이를 재해석하지 않는 한 모두 빈 문자열이 됩니다.
CSV에는 사이에 아무것도 없는 두 개의 구분 기호, 명시적으로 인용된 빈 문자열, NULL 또는 NA와 같은 리터럴 텍스트, 헤더 너비 앞에서 끝나는 행이 포함될 수 있습니다. ToolAcre는 처음 두 개를 빈 문자열로 구문 분석하고 리터럴 토큰을 일반 텍스트로 그대로 둡니다.
짧은 행의 경우 `RAGGED_ROW` 경고를 표시하고 후행 셀이 없으면 빈 문자열로 채웁니다. 긴 행의 경우 테이블에 추가 셀이 유지되지만 JSON 변환에는 해당 셀에 대한 헤더 키가 없어 생략됩니다. 이러한 비대칭성 때문에 구조적 경고는 변환 전에 조치를 취해야 합니다.
일반 로더가 각각을 해석하는 방법 - 스프레드시트, 데이터베이스 및 데이터 프레임 라이브러리의 서로 다른 기본값
다양한 데이터베이스 클라이언트 및 분석 라이브러리는 자체 구성 가능한 Null 토큰 및 빈 필드 정책을 노출합니다. 이 저장소는 이러한 기본값을 설정할 수 없으므로 기사에서는 모든 스프레드시트나 로더가 동의한다고 주장하지 않습니다. 소스와 테스트를 사용할 수 있는 하나의 구현을 문서화합니다.
파일을 다른 시스템에 전달할 때 해당 가져오기 도구의 설정을 읽고 ``, `""`, NULL 및 짧은 행에 대한 고정 장치를 만듭니다. 신뢰할 수 있는 계약은 실제 경계에서 입증됩니다. "CSV 일반적으로 의미하는 것"에 대한 일반적인 민속은 누락된 값에 비해 너무 약합니다.
로더 기본값은 다양합니다. 이 기사에서는 스프레드시트나 데이터베이스 동작을 일반화하기보다는 ToolAcre를 문서화합니다.
NULL 텍스트는 진짜 콘텐츠이거나 보낸 사람의 감시원일 수 있으므로 특히 위험합니다. ToolAcre에는 구성된 감시 목록이 없으므로 이를 4문자 문자열 "NULL"로 유지합니다. NA, N/A, 0 및 생산자가 사용할 수 있는 다른 토큰의 경우에도 마찬가지입니다.
필드별 규칙 없이 이러한 문자열을 전체적으로 바꾸지 마십시오. 메모 열에는 "NULL"이 합법적으로 포함될 수 있고 코드 열에는 NA가 사용될 수 있습니다. 생산자 문서 또는 스키마를 사용하여 의미를 확인한 다음 검토 중인 적절한 열만 변환합니다.
JSON는 사용자가 결정하게 합니다. 파일이 변환되면 null, 빈 문자열 및 부재 키는 세 가지 다른 것입니다.
JSON는 null, 빈 문자열 및 부재 속성을 구별하지만 ToolAcre는 모든 헤더 열에 대해 문자열 값이 있는 현재 키를 선택합니다. 누락되거나 채워진 셀은 ""가 됩니다. 변환기는 JSON null을 생성하지 않으며 셀이 비어 있다는 이유만으로 키를 생략하지 않습니다.
잉여 셀은 다릅니다. 해당 헤더가 없고 할당할 키가 없으므로 생성된 객체에 없습니다. 행 경고는 손실이 가능함을 알려줍니다. 부재를 의미있는 null 정책으로 읽는 것이 아니라 다운로드하기 전에 헤더 또는 행 너비를 수정하십시오.
ToolAcre는 null 또는 부재 키가 아닌 빈 문자열과 현재 키를 생성합니다.
헤더 ID, 메모, 코드 및 4개의 레코드(`1,,A`, `2,"",NULL`, `3,hello` 및 `4,world,B,extra`)를 사용합니다. 처음 두 음표는 빈 문자열이 됩니다. 두 번째 행의 코드는 "NULL"로 유지됩니다. 행 3은 패딩 후 코드 ""를 수신하는 반면, 행 4는 추가 셀에 키가 없음을 경고합니다.
결과 개체는 표시된 열에 대해 동일한 세 개의 키를 시각적으로 전달합니다. 이 작업 사례는 구문 분석 경고를 JSON 모양에 연결하기 때문에 빈 셀의 스크린샷보다 더 유익합니다. 또한 리터럴 토큰에 별도의 도메인 결정이 필요한 이유도 보여줍니다.
여기서 다루지 않는 내용 — 누락된 값의 기본값에 대한 대치 및 비즈니스 규칙
대치가 경로 외부에 있습니다. 변환기는 누락된 가격을 채우거나 이전 값을 복사하거나 인접 행에서 기본값을 추론하지 않습니다. 이러한 변경은 비즈니스 의미에 따라 달라지며 스키마가 알 수 없는 값, 적용할 수 없는 값, 의도적으로 비어 있는 값을 구별한 후에 발생해야 합니다.
또한 따옴표가 없는 빈 필드와 `""` 사이의 구문적 차이를 유지하지 않습니다. 둘 다 동일한 셀 문자열로 구문 분석됩니다. 이러한 구별이 중요한 경우 CSV은 이 파서의 테이블 모델을 통해 이를 전달하지 않습니다. 명시적인 상태의 표현을 선택하거나 파생 데이터와 함께 원시 소스를 보존하세요.
로드하기 전에 공백이 무엇을 의미하는지 결정하십시오. - ToolAcre CSV Cleaner의 CSV에서 JSON로의 변환을 통해 표현이 표시되는 방식
JSON을 입력된 코드에 로드하기 전에 공백이 무엇을 의미하는지 결정하십시오. ToolAcre는 투명한 기준을 제공합니다. 모든 곳의 문자열 값, 누락된 표현 셀에 대한 빈 문자열, 변경되지 않은 리터럴 센티널 단어 및 행 모양이 사용 가능한 키를 초과하는 경고.
해당 경고를 검사하고 이후 강제 조치를 문서화합니다. 변환기는 텍스트만으로는 결측값 의미 체계를 생성할 수 없지만 자체 선택 항목을 숨기는 것을 방지할 수 있습니다. 이러한 예측 가능한 동작은 실제로 시행할 자격이 있는 정책을 담당하는 다음 경계를 만듭니다.