2011-06-14 2 views
3

저는 클라이언트에서 왔으며 수십만 개의 행을 포함 할 수있는 CSV 파일에 직면했습니다. 이 정보에 대한 계산을 효율적으로 실행할 수있는 DSL (Java 또는 Python에서 널리 사용되는 라이브러리)이 있습니까? 경고 및 오류를 발행하는 다양한 규칙을 적용합니다 (물론 사용자가 구성 할 수 있습니까?).데이터 무결성 검증을위한 표준 DSL이 있습니까?

+0

파이썬에는 표준으로 내장 된 csv 모듈이 있습니다. http://docs.python.org/library/csv.html –

+0

저는'csv' 모듈에 대해 잘 알고 있으며 광범위하게 사용하고 있습니다.하지만 입력에 기반한 데이터 규칙에 대한 문법을 ​​제공하지는 않습니다. 순수 파이썬으로 작성할 수는 있지만 때로는 Excel 수식과 비교할 때 고통스런 경우가 있습니다. 나는 수십 개의 규칙을 설정하고 각 행마다 반복 할 수있는 무언가를 원하고 있습니다. 규칙을 읽을수록 읽기 쉬울 것입니다. – syrion

답변

1

그렇게 할 수있는 DSL을 상상할 수 있습니까? 규칙은 어떻게 생겼습니까?

몇 달 전에 나는이 문제에 대해 연구했다. 결국 그것은 처음보다 더 어려워졌다.

  1. 첫 번째 단계는 분명했다 - 모든 행을 구문 분석하고 특수 데이터 철골 구조로 배치했다 그래서 나는 할 수 그들과 함께 일; 필드가 누락 된 항목이 삭제되었습니다.

  2. 모든 행은 모든 행들이 "전략"을했다 처음에는 현재의 "전략" 재산, 가능한 전략의 목록 (기본 동작, 무시, 포스, 덮어 쓰기 등)

  3. 했다 속성을 "Default"로 설정하십시오.

  4. 행 처리기가 오류 목록을 작성하고 경고를 작성하여 가능한 임을 확인했습니다.

  5. 를 처리하고 사용자가 선택할 수 대체 전략의 목록이 제공 한 결과 문제가 발생하는 모든 행을 분석 한 후, 어떤 문제가 있다면

따라서, 사용자가 행 전략을 변경할 수 있습니다 (또는 단순히 "무시"를 사용) 그래서 4

단계로 되돌아 가서, 나는 어떤 단계에서 궁금 것 그런 DSL 작업?

+0

어설 션 라인을 따라 뭔가를 그리는 중입니다. 어설 션 행은 앱 내에서 복구 작업을 수행 할 필요없이 작동 할 것입니다. 무결성 검사 스크립트이므로 앱 자체보다는보고 측면에서 조치를 취해야합니다. '유료 아이템 수'<= '보고 된 아이템 수'또는 '보고 된 아이템이 유료 아이템보다 적습니다.''함수를 호출하려면 아마도 : "집 전화 번호"는 " 전화 "또는"집 전화 번호 형식이 잘못되었습니다. "라고 경고합니다. – syrion