Repository: dathere/qsv (language: rust)

Issue:
`stats`: add `avg_length`
We compute `min_length` and `max_length`, so `avg_length` should be trivial and not too expensive to compute as a "streaming" statistic.

It's also a useful piece of info, especially, for free text columns.


Discussion / hints:

Fix patch:
diff --git a/Cargo.lock b/Cargo.lock
index fb95ff686..eb57d952e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2731,9 +2731,9 @@ dependencies = [
 
 [[package]]
 name = "ipnet"
-version = "2.9.0"
+version = "2.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
+checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4"
 
 [[package]]
 name = "iso8601"
@@ -3366,9 +3366,9 @@ dependencies = [
 
 [[package]]
 name = "mlua-sys"
-version = "0.6.2"
+version = "0.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3ab7a5b4756b8177a2dfa8e0bbcde63bd4000afbc4ab20cbb68d114a25470f29"
+checksum = "ebe026d6bd1583a9cf9080e189030ddaea7e6f5f0deb366a8e26f8a26c4135b8"
 dependencies = [
  "cc",
  "cfg-if",
diff --git a/src/cmd/stats.rs b/src/cmd/stats.rs
index 236287476..29a5f9256 100644
--- a/src/cmd/stats.rs
+++ b/src/cmd/stats.rs
@@ -1,16 +1,16 @@
 static USAGE: &str = r#"
 Compute summary statistics & infers data types for each column in a CSV. 
 
-Summary statistics includes sum, min/max/range, sort order, min/max length, mean, standard error of
-the mean (SEM), stddev, variance, coefficient of variation (CV), nullcount, max_precision, sparsity,
-quartiles, interquartile range (IQR), lower/upper fences, skewness, median, cardinality, mode/s &
-"antimode/s", and median absolute deviation (MAD). Note that some statistics require loading the
-entire file into memory, so they must be enabled explicitly. 
+Summary statistics includes sum, min/max/range, sort order, min/max/sum/avg length, mean,
+standard error of the mean (SEM), stddev, variance, coefficient of variation (CV), nullcount,
+max_precision, sparsity, quartiles, interquartile range (IQR), lower/upper fences, skewness, median,
+cardinality, mode/s & "antimode/s", and median absolute deviation (MAD). Note that some statistics
+require loading theentire file into memory, so they must be enabled explicitly. 
 
 By default, the following "streaming" statistics are reported for *every* column:
-sum, min/max/range values, sort order, min/max length, mean, sem, stddev, variance, cv, nullcount,
-max_precision and sparsity. The default set of statistics corresponds to ones that can be computed
-efficiently on a stream of data (i.e., constant memory) and works with arbitrarily large CSV files.
+sum, min/max/range values, sort order, min/max/sum/avg length, mean, sem, stddev, variance, cv,
+nullcount, max_precision & sparsity. The default set of statistics corresponds to ones that can be
+computed efficiently on a stream of data (i.e., constant memory) and works with arbitrarily large CSVs.
 
 The following additional "non-streaming" statistics require loading the entire file into memory:
 cardinality, mode/antimode, median, MAD, quartiles and its related measures (IQR,
@@ -388,6 +388,8 @@ pub struct StatsData {
     pub sort_order:           Option<String>,
     pub min_length:           Option<usize>,
     pub max_length:           Option<usize>,
+    pub sum_length:           Option<usize>,
+    pub avg_length:           Option<f64>,
     pub mean:                 Option<f64>,
     pub sem:                  Option<f64>,
     pub stddev:               Option<f64>,
@@ -436,6 +438,8 @@ pub static STATSDATA_TYPES_ARRAY: [JsonTypes; MAX_STAT_COLUMNS] = [
     JsonTypes::String, //sort_order
     JsonTypes::Int,    //min_length
     JsonTypes::Int,    //max_length
+    JsonTypes::Int,    //sum_length
+    JsonTypes::Float,  //avg_length
     JsonTypes::Float,  //mean
     JsonTypes::Float,  //sem
     JsonTypes::Float,  //stddev
@@ -474,7 +478,7 @@ const MS_IN_DAY_INT: i64 = 86_400_000;
 const DAY_DECIMAL_PLACES: u32 = 5;
 
 // maximum number of output columns
-const MAX_STAT_COLUMNS: usize = 35;
+const MAX_STAT_COLUMNS: usize = 37;
 
 // maximum number of antimodes to display
 const MAX_ANTIMODES: usize = 10;
@@ -1047,7 +1051,7 @@ impl Args {
             return csv::StringRecord::from(vec!["field", "type"]);
         }
 
-        // with --everything, we have 35 columns at most
+        // with --everything, we have MAX_STAT_COLUMNS columns at most
         let mut fields = Vec::with_capacity(MAX_STAT_COLUMNS);
         fields.extend_from_slice(&[
             "field",
@@ -1060,6 +1064,8 @@ impl Args {
             "sort_order",
             "min_length",
             "max_length",
+            "sum_length",
+            "avg_length",
             "mean",
             "sem",
             "stddev",
@@ -1198,6 +1204,7 @@ pub struct Stats {
     typ:           FieldType,
     is_ascii:      bool,
     sum:           Option<TypedSum>,
+    sum_stotlen:   u64,
     minmax:        Option<TypedMinMax>,
     online:        Option<OnlineStats>,
     nullcount:     u64,
@@ -1251,6 +1258,7 @@ impl Stats {
             typ: FieldType::default(),
             is_ascii: true,
             sum,
+            sum_stotlen: 0,
             minmax,
             online,
             nullcount: 0,
@@ -1382,7 +1390,7 @@ impl Stats {
 
         let typ = self.typ;
         // prealloc memory for performance
-        // we have 35 columns at most with --everything
+        // we have MAX_STAT_COLUMNS columns at most with --everything
         let mut pieces = Vec::with_capacity(MAX_STAT_COLUMNS);
 
         let empty = String::new;
@@ -1512,33 +1520,52 @@ impl Stats {
         }
 
         // sum
-        if let Some(sum) = self.sum.as_ref().and_then(|sum| sum.show(typ)) {
-            if typ == FieldType::TFloat {
-                if let Ok(f64_val) = sum.parse::<f64>() {
-                    pieces.push(util::round_num(f64_val, round_places));
+        let stotlen =
+            if let Some((stotlen_work, sum)) = self.sum.as_ref().and_then(|sum| sum.show(typ)) {
+                if typ == FieldType::TFloat {
+                    if let Ok(f64_val) = sum.parse::<f64>() {
+                        pieces.push(util::round_num(f64_val, round_places));
+                    } else {
+                        pieces.push(format!("ERROR: Cannot convert {sum} to a float."));
+                    }
                 } else {
-                    pieces.push(format!("ERROR: Cannot convert {sum} to a float."));
+                    pieces.push(sum.clone());
                 }
+                stotlen_work
             } else {
-                pieces.push(sum);
-            }
-        } else {
-            pieces.push(empty());
-        }
+                pieces.push(empty());
+                0
+            };
 
         // min/max/range/sort_order
         // actually append it here - to preserve legacy ordering of columns
         pieces.extend_from_slice(&minmax_range_sortorder_pieces);
 
-        // min/max length
+        // min/max/sum/avg length
         if typ == FieldType::TDate || typ == FieldType::TDateTime {
             // returning min/max length for dates doesn't make sense
             // especially since we convert the date stats to rfc3339 format
-            pieces.extend_from_slice(&[empty(), empty()]);
+            pieces.extend_from_slice(&[empty(), empty(), empty(), empty()]);
         } else if let Some(mm) = self.minmax.as_ref().and_then(TypedMinMax::len_range) {
             pieces.extend_from_slice(&[mm.0, mm.1]);
+            if stotlen > 0 {
+                // if we saturated the sum, it means we had an overflow
+                // so we return empty for sum and avg length
+                if stotlen < u64::MAX {
+                    let mut buffer = itoa::Buffer::new();
+                    pieces.push(buffer.format(stotlen).to_owned());
+                    pieces.push(util::round_num(
+                        stotlen as f64 / *RECORD_COUNT.get().unwrap_or(&1) as f64,
+                        4,
+                    ));
+                } else {
+                    pieces.extend_from_slice(&[empty(), empty()]);
+                }
+            } else {
+                pieces.extend_from_slice(&[empty(), empty()]);
+            }
         } else {
-            pieces.extend_from_slice(&[empty(), empty()]);
+            pieces.extend_from_slice(&[empty(), empty(), empty(), empty()]);
         }
 
         // mean, sem, stddev, variance & cv
@@ -1737,6 +1764,7 @@ impl Commute for Stats {
         self.typ.merge(other.typ);
         self.is_ascii &= other.is_ascii;
         self.sum.merge(other.sum);
+        self.sum_stotlen = self.sum_stotlen.saturating_add(other.sum_stotlen);
         self.minmax.merge(other.minmax);
         self.online.merge(other.online);
         self.nullcount += other.nullcount;
@@ -1880,9 +1908,11 @@ impl fmt::Debug for FieldType {
 
 /// `TypedSum` keeps a rolling sum of the data seen.
 /// It sums integers until it sees a float, at which point it sums floats.
+/// It also counts the total length of strings.
 #[derive(Clone, Default, Serialize, Deserialize, PartialEq)]
 struct TypedSum {
     integer: i64,
+    stotlen: u64, // sum of the total length of strings
     float:   Option<f64>,
 }
 
@@ -1895,6 +1925,7 @@ impl TypedSum {
         #[allow(clippy::cast_precision_loss)]
         match typ {
             TFloat => {
+                self.stotlen = self.stotlen.saturating_add(sample.len() as u64);
                 let float: f64 = from_bytes::<f64>(sample).unwrap();
                 match self.float {
                     None => {
@@ -1906,6 +1937,7 @@ impl TypedSum {
                 }
             },
             TInteger => {
+                self.stotlen = self.stotlen.saturating_add(sample.len() as u64);
                 if let Some(ref mut float) = self.float {
                     *float += from_bytes::<f64>(sample).unwrap();
                 } else {
@@ -1915,29 +1947,36 @@ impl TypedSum {
                         .saturating_add(atoi_simd::parse::<i64>(sample).unwrap());
                 }
             },
+            TString => {
+                self.stotlen = self.stotlen.saturating_add(sample.len() as u64);
+            },
             _ => {},
         }
     }
 
-    fn show(&self, typ: FieldType) -> Option<String> {
+    fn show(&self, typ: FieldType) -> Option<(u64, String)> {
         match typ {
-            TNull | TString | TDate | TDateTime => None,
+            TNull | TDate | TDateTime => None,
             TInteger => {
                 match self.integer {
                     // with saturating_add, if this is equal to i64::MAX or i64::MIN
                     // we overflowed/underflowed
-                    i64::MAX => Some("OVERFLOW".to_string()),
-                    i64::MIN => Some("UNDERFLOW".to_string()),
+                    i64::MAX => Some((self.stotlen, "OVERFLOW".to_string())),
+                    i64::MIN => Some((self.stotlen, "UNDERFLOW".to_string())),
                     _ => {
                         let mut buffer = itoa::Buffer::new();
-                        Some(buffer.format(self.integer).to_owned())
+                        Some((self.stotlen, buffer.format(self.integer).to_owned()))
                     },
                 }
             },
             TFloat => {
-                let mut buffer = ryu::Buffer::new();
-                Some(buffer.format(self.float.unwrap_or(0.0)).to_owned())
+                let mut fbuffer = ryu::Buffer::new();
+                Some((
+                    self.stotlen,
+                    fbuffer.format(self.float.unwrap_or(0.0)).to_owned(),
+                ))
             },
+            TString => Some((self.stotlen, String::new())),
         }
     }
 }
@@ -1952,6 +1991,7 @@ impl Commute for TypedSum {
             (None, Some(f2)) => self.float = Some((self.integer as f64) + f2),
             (None, None) => self.integer = self.integer.saturating_add(other.integer),
         }
+        self.stotlen = self.stotlen.saturating_add(other.stotlen);
     }
 }
 


Test patch:
diff --git a/resources/test/boston311-10-boolean-1or0-stats.csv b/resources/test/boston311-10-boolean-1or0-stats.csv
index 85ac945d3..0c3baca8e 100644
--- a/resources/test/boston311-10-boolean-1or0-stats.csv
+++ b/resources/test/boston311-10-boolean-1or0-stats.csv
@@ -1,31 +1,31 @@
-field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,mean,sem,stddev,variance,cv,nullcount,max_precision,sparsity,cardinality
-case_enquiry_id,Integer,,1010041354742,101004113298,101004155594,42296,Unsorted,12,12,101004135474.2,4663.4961,14747.2697,217481962.3498,0,0,,0,10
-open_dt,String,true,,2022-01-01 00:16:00,2022-01-31 11:46:00,,Unsorted,19,19,,,,,,0,,0,10
-target_dt,String,true,,2022-01-11 08:30:00,2022-05-20 13:03:21,,Unsorted,0,19,,,,,,4,,0.4,6
-closed_dt,String,true,,2022-01-09 06:43:06,2022-01-20 08:45:12,,Unsorted,0,19,,,,,,5,,0.5,6
-ontime,String,true,,ONTIME,OVERDUE,,Unsorted,6,7,,,,,,0,,0,2
-case_status,String,true,,Closed,Open,,Unsorted,4,6,,,,,,0,,0,2
-case_status_boolean,Boolean,,5,0,1,1,Unsorted,1,1,0.5,0.1581,0.5,0.25,100,0,,0,2
-closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,Unsorted,1,82,,,,,,0,,0,6
-case_title,String,true,,BTDT: Complaint,Sidewalk Cover / Manhole,,Unsorted,13,57,,,,,,0,,0,8
-subject,String,true,,Boston Police Department,Public Works Department,,Unsorted,21,31,,,,,,0,,0,5
-reason,String,true,,Administrative & General Requests,Street Cleaning,,Unsorted,7,33,,,,,,0,,0,7
-type,String,true,,CE Collection,Unsatisfactory Utilities - Electrical  Plumbing,,Unsorted,13,47,,,,,,0,,0,8
-queue,String,true,,BTDT_Parking Enforcement,PWDx_Snow Cases,,Unsorted,15,46,,,,,,0,,0,7
-department,String,true,,BTDT,PWDx,,Unsorted,3,4,,,,,,0,,0,5
-submittedphoto,NULL,,,,,,,0,0,,,,,,10,,1,1
-closedphoto,NULL,,,,,,,0,0,,,,,,10,,1,1
-location,String,true,, ,850 South St  Roslindale  MA  02131,,Unsorted,1,40,,,,,,0,,0,10
-fire_district,String,true,, ,9,,Unsorted,1,1,,,,,,0,,0,4
-pwd_district,String,true,, ,1C,,Unsorted,1,2,,,,,,0,,0,6
-city_council_district,String,true,, ,8,,Unsorted,1,1,,,,,,0,,0,6
-police_district,String,true,, ,E5,,Unsorted,1,3,,,,,,0,,0,6
-neighborhood,String,true,, ,South End,,Unsorted,1,13,,,,,,0,,0,8
-neighborhood_services_district,String,true,, ,6,,Unsorted,1,2,,,,,,0,,0,7
-ward,String,true,, ,Ward 9,,Unsorted,1,7,,,,,,0,,0,8
-precinct,String,true,, ,2004,,Unsorted,1,4,,,,,,0,,0,9
-location_street_name,String,true,,12 Derne St,850 South St,,Unsorted,0,20,,,,,,1,,0.1,10
-location_zipcode,String,true,,02113,02131,,Unsorted,0,5,,,,,,1,,0.1,8
-latitude,Float,,423.4656,42.2884,42.3735,0.0851,Unsorted,7,7,42.3466,0.008,0.0252,0.0006,0.0595,0,4,0,9
-longitude,Float,,-710.782,-71.133,-71.0566,0.0764,Unsorted,6,8,-71.0782,0.0078,0.0246,0.0006,-0.0346,0,4,0,10
-source,String,true,,City Worker App,Constituent Call,,Unsorted,15,16,,,,,,0,,0,2
+field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,sum_length,avg_length,mean,sem,stddev,variance,cv,nullcount,max_precision,sparsity,cardinality
+case_enquiry_id,Integer,,1010041354742,101004113298,101004155594,42296,Unsorted,12,12,120,12,101004135474.2,4663.4961,14747.2697,217481962.3498,0,0,,0,10
+open_dt,String,true,,2022-01-01 00:16:00,2022-01-31 11:46:00,,Unsorted,19,19,190,19,,,,,,0,,0,10
+target_dt,String,true,,2022-01-11 08:30:00,2022-05-20 13:03:21,,Unsorted,0,19,114,11.4,,,,,,4,,0.4,6
+closed_dt,String,true,,2022-01-09 06:43:06,2022-01-20 08:45:12,,Unsorted,0,19,95,9.5,,,,,,5,,0.5,6
+ontime,String,true,,ONTIME,OVERDUE,,Unsorted,6,7,62,6.2,,,,,,0,,0,2
+case_status,String,true,,Closed,Open,,Unsorted,4,6,50,5,,,,,,0,,0,2
+case_status_boolean,Boolean,,5,0,1,1,Unsorted,1,1,10,1,0.5,0.1581,0.5,0.25,100,0,,0,2
+closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,Unsorted,1,82,350,35,,,,,,0,,0,6
+case_title,String,true,,BTDT: Complaint,Sidewalk Cover / Manhole,,Unsorted,13,57,235,23.5,,,,,,0,,0,8
+subject,String,true,,Boston Police Department,Public Works Department,,Unsorted,21,31,235,23.5,,,,,,0,,0,5
+reason,String,true,,Administrative & General Requests,Street Cleaning,,Unsorted,7,33,174,17.4,,,,,,0,,0,7
+type,String,true,,CE Collection,Unsatisfactory Utilities - Electrical  Plumbing,,Unsorted,13,47,240,24,,,,,,0,,0,8
+queue,String,true,,BTDT_Parking Enforcement,PWDx_Snow Cases,,Unsorted,15,46,272,27.2,,,,,,0,,0,7
+department,String,true,,BTDT,PWDx,,Unsorted,3,4,38,3.8,,,,,,0,,0,5
+submittedphoto,NULL,,,,,,,0,0,,,,,,,,10,,1,1
+closedphoto,NULL,,,,,,,0,0,,,,,,,,10,,1,1
+location,String,true,, ,850 South St  Roslindale  MA  02131,,Unsorted,1,40,309,30.9,,,,,,0,,0,10
+fire_district,String,true,, ,9,,Unsorted,1,1,10,1,,,,,,0,,0,4
+pwd_district,String,true,, ,1C,,Unsorted,1,2,19,1.9,,,,,,0,,0,6
+city_council_district,String,true,, ,8,,Unsorted,1,1,10,1,,,,,,0,,0,6
+police_district,String,true,, ,E5,,Unsorted,1,3,21,2.1,,,,,,0,,0,6
+neighborhood,String,true,, ,South End,,Unsorted,1,13,91,9.1,,,,,,0,,0,8
+neighborhood_services_district,String,true,, ,6,,Unsorted,1,2,14,1.4,,,,,,0,,0,7
+ward,String,true,, ,Ward 9,,Unsorted,1,7,53,5.3,,,,,,0,,0,8
+precinct,String,true,, ,2004,,Unsorted,1,4,37,3.7,,,,,,0,,0,9
+location_street_name,String,true,,12 Derne St,850 South St,,Unsorted,0,20,120,12,,,,,,1,,0.1,10
+location_zipcode,String,true,,02113,02131,,Unsorted,0,5,45,4.5,,,,,,1,,0.1,8
+latitude,Float,,423.4656,42.2884,42.3735,0.0851,Unsorted,7,7,70,7,42.3466,0.008,0.0252,0.0006,0.0595,0,4,0,9
+longitude,Float,,-710.782,-71.133,-71.0566,0.0764,Unsorted,6,8,77,7.7,-71.0782,0.0078,0.0246,0.0006,-0.0346,0,4,0,10
+source,String,true,,City Worker App,Constituent Call,,Unsorted,15,16,157,15.7,,,,,,0,,0,2
diff --git a/resources/test/boston311-10-boolean-tf-stats.csv b/resources/test/boston311-10-boolean-tf-stats.csv
index 799f0bfa2..7779bee45 100644
--- a/resources/test/boston311-10-boolean-tf-stats.csv
+++ b/resources/test/boston311-10-boolean-tf-stats.csv
@@ -1,31 +1,31 @@
-field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,mean,sem,stddev,variance,cv,nullcount,max_precision,sparsity,cardinality
-case_enquiry_id,Integer,,1010041354742,101004113298,101004155594,42296,Unsorted,12,12,101004135474.2,4663.4961,14747.2697,217481962.3498,0,0,,0,10
-open_dt,String,true,,2022-01-01 00:16:00,2022-01-31 11:46:00,,Unsorted,19,19,,,,,,0,,0,10
-target_dt,String,true,,2022-01-11 08:30:00,2022-05-20 13:03:21,,Unsorted,0,19,,,,,,4,,0.4,6
-closed_dt,String,true,,2022-01-09 06:43:06,2022-01-20 08:45:12,,Unsorted,0,19,,,,,,5,,0.5,6
-ontime,String,true,,ONTIME,OVERDUE,,Unsorted,6,7,,,,,,0,,0,2
-case_status,String,true,,Closed,Open,,Unsorted,4,6,,,,,,0,,0,2
-case_status_boolean,Boolean,true,,False,True,,Unsorted,4,5,,,,,,0,,0,2
-closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,Unsorted,1,82,,,,,,0,,0,6
-case_title,String,true,,BTDT: Complaint,Sidewalk Cover / Manhole,,Unsorted,13,57,,,,,,0,,0,8
-subject,String,true,,Boston Police Department,Public Works Department,,Unsorted,21,31,,,,,,0,,0,5
-reason,String,true,,Administrative & General Requests,Street Cleaning,,Unsorted,7,33,,,,,,0,,0,7
-type,String,true,,CE Collection,Unsatisfactory Utilities - Electrical  Plumbing,,Unsorted,13,47,,,,,,0,,0,8
-queue,String,true,,BTDT_Parking Enforcement,PWDx_Snow Cases,,Unsorted,15,46,,,,,,0,,0,7
-department,String,true,,BTDT,PWDx,,Unsorted,3,4,,,,,,0,,0,5
-submittedphoto,NULL,,,,,,,0,0,,,,,,10,,1,1
-closedphoto,NULL,,,,,,,0,0,,,,,,10,,1,1
-location,String,true,, ,850 South St  Roslindale  MA  02131,,Unsorted,1,40,,,,,,0,,0,10
-fire_district,String,true,, ,9,,Unsorted,1,1,,,,,,0,,0,4
-pwd_district,String,true,, ,1C,,Unsorted,1,2,,,,,,0,,0,6
-city_council_district,String,true,, ,8,,Unsorted,1,1,,,,,,0,,0,6
-police_district,String,true,, ,E5,,Unsorted,1,3,,,,,,0,,0,6
-neighborhood,String,true,, ,South End,,Unsorted,1,13,,,,,,0,,0,8
-neighborhood_services_district,String,true,, ,6,,Unsorted,1,2,,,,,,0,,0,7
-ward,String,true,, ,Ward 9,,Unsorted,1,7,,,,,,0,,0,8
-precinct,String,true,, ,2004,,Unsorted,1,4,,,,,,0,,0,9
-location_street_name,String,true,,12 Derne St,850 South St,,Unsorted,0,20,,,,,,1,,0.1,10
-location_zipcode,String,true,,02113,02131,,Unsorted,0,5,,,,,,1,,0.1,8
-latitude,Float,,423.4656,42.2884,42.3735,0.0851,Unsorted,7,7,42.3466,0.008,0.0252,0.0006,0.0595,0,4,0,9
-longitude,Float,,-710.782,-71.133,-71.0566,0.0764,Unsorted,6,8,-71.0782,0.0078,0.0246,0.0006,-0.0346,0,4,0,10
-source,String,true,,City Worker App,Constituent Call,,Unsorted,15,16,,,,,,0,,0,2
+field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,sum_length,avg_length,mean,sem,stddev,variance,cv,nullcount,max_precision,sparsity,cardinality
+case_enquiry_id,Integer,,1010041354742,101004113298,101004155594,42296,Unsorted,12,12,120,12,101004135474.2,4663.4961,14747.2697,217481962.3498,0,0,,0,10
+open_dt,String,true,,2022-01-01 00:16:00,2022-01-31 11:46:00,,Unsorted,19,19,190,19,,,,,,0,,0,10
+target_dt,String,true,,2022-01-11 08:30:00,2022-05-20 13:03:21,,Unsorted,0,19,114,11.4,,,,,,4,,0.4,6
+closed_dt,String,true,,2022-01-09 06:43:06,2022-01-20 08:45:12,,Unsorted,0,19,95,9.5,,,,,,5,,0.5,6
+ontime,String,true,,ONTIME,OVERDUE,,Unsorted,6,7,62,6.2,,,,,,0,,0,2
+case_status,String,true,,Closed,Open,,Unsorted,4,6,50,5,,,,,,0,,0,2
+case_status_boolean,Boolean,true,,False,True,,Unsorted,4,5,45,4.5,,,,,,0,,0,2
+closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,Unsorted,1,82,350,35,,,,,,0,,0,6
+case_title,String,true,,BTDT: Complaint,Sidewalk Cover / Manhole,,Unsorted,13,57,235,23.5,,,,,,0,,0,8
+subject,String,true,,Boston Police Department,Public Works Department,,Unsorted,21,31,235,23.5,,,,,,0,,0,5
+reason,String,true,,Administrative & General Requests,Street Cleaning,,Unsorted,7,33,174,17.4,,,,,,0,,0,7
+type,String,true,,CE Collection,Unsatisfactory Utilities - Electrical  Plumbing,,Unsorted,13,47,240,24,,,,,,0,,0,8
+queue,String,true,,BTDT_Parking Enforcement,PWDx_Snow Cases,,Unsorted,15,46,272,27.2,,,,,,0,,0,7
+department,String,true,,BTDT,PWDx,,Unsorted,3,4,38,3.8,,,,,,0,,0,5
+submittedphoto,NULL,,,,,,,0,0,,,,,,,,10,,1,1
+closedphoto,NULL,,,,,,,0,0,,,,,,,,10,,1,1
+location,String,true,, ,850 South St  Roslindale  MA  02131,,Unsorted,1,40,309,30.9,,,,,,0,,0,10
+fire_district,String,true,, ,9,,Unsorted,1,1,10,1,,,,,,0,,0,4
+pwd_district,String,true,, ,1C,,Unsorted,1,2,19,1.9,,,,,,0,,0,6
+city_council_district,String,true,, ,8,,Unsorted,1,1,10,1,,,,,,0,,0,6
+police_district,String,true,, ,E5,,Unsorted,1,3,21,2.1,,,,,,0,,0,6
+neighborhood,String,true,, ,South End,,Unsorted,1,13,91,9.1,,,,,,0,,0,8
+neighborhood_services_district,String,true,, ,6,,Unsorted,1,2,14,1.4,,,,,,0,,0,7
+ward,String,true,, ,Ward 9,,Unsorted,1,7,53,5.3,,,,,,0,,0,8
+precinct,String,true,, ,2004,,Unsorted,1,4,37,3.7,,,,,,0,,0,9
+location_street_name,String,true,,12 Derne St,850 South St,,Unsorted,0,20,120,12,,,,,,1,,0.1,10
+location_zipcode,String,true,,02113,02131,,Unsorted,0,5,45,4.5,,,,,,1,,0.1,8
+latitude,Float,,423.4656,42.2884,42.3735,0.0851,Unsorted,7,7,70,7,42.3466,0.008,0.0252,0.0006,0.0595,0,4,0,9
+longitude,Float,,-710.782,-71.133,-71.0566,0.0764,Unsorted,6,8,77,7.7,-71.0782,0.0078,0.0246,0.0006,-0.0346,0,4,0,10
+source,String,true,,City Worker App,Constituent Call,,Unsorted,15,16,157,15.7,,,,,,0,,0,2
diff --git a/resources/test/boston311-100-everything-8places-stats.csv b/resources/test/boston311-100-everything-8places-stats.csv
index 6ce574136..4a3b9c18d 100644
--- a/resources/test/boston311-100-everything-8places-stats.csv
+++ b/resources/test/boston311-100-everything-8places-stats.csv
@@ -1,30 +1,30 @@
-field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,mean,nullcount,max_precision,sparsity,mad,lower_outer_fence,lower_inner_fence,q1,q2_median,q3,iqr,upper_inner_fence,upper_outer_fence,skewness,cardinality,mode,mode_count,mode_occurrences,antimode,antimode_count,antimode_occurrences
-case_enquiry_id,Integer,,10100411645180,101004113298,101004155594,42296,Unsorted,12,12,101004116451.80003357,0,,0,673,101004109567,101004111646,101004113725,101004114353,101004115111,1386,101004117190,101004119269,0.09379509,100,,0,0,*ALL,0,1
-open_dt,String,true,,2022-01-01 00:16:00,2022-01-31 11:46:00,,Unsorted,19,19,,0,,0,,,,,,,,,,,100,,0,0,*ALL,0,1
-target_dt,String,true,,2022-01-03 10:32:34,2022-05-20 13:03:21,,Unsorted,0,19,,11,,0.11,,,,,,,,,,,42,2022-01-04 08:30:00,1,25,"*PREVIEW: 2022-01-03 10:32:34,2022-01-03 11:58:12,2022-01-04 09:58:36,2022-01-04 10:41:29,2022-01-04...",34,1
-closed_dt,String,true,,2022-01-01 12:56:14,2022-04-25 14:30:31,,Unsorted,0,19,,15,,0.15,,,,,,,,,,,86,,1,15,"*PREVIEW: 2022-01-01 12:56:14,2022-01-01 14:17:15,2022-01-01 14:59:41,2022-01-01 15:10:16,2022-01-01...",85,1
-ontime,String,true,,ONTIME,OVERDUE,,Unsorted,6,7,,0,,0,,,,,,,,,,,2,ONTIME,1,83,OVERDUE,1,17
-case_status,String,true,,Closed,Open,,Unsorted,4,6,,0,,0,,,,,,,,,,,2,Closed,1,85,Open,1,15
-closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,Unsorted,1,284,,0,,0,,,,,,,,,,,86, ,1,15,"*PREVIEW: Case Closed Case Resolved  NEW CART#21026466 DELV ON 1/11/22  ,Case Closed Case Resolved  ...",85,1
-case_title,String,true,,Abandoned Vehicles,Traffic Signal Inspection,,Unsorted,10,57,,0,,0,,,,,,,,,,,42,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,BTDT: Complaint,City/State Snow Issues,DISPATCHED Short Term Rental...",24,1
-subject,String,true,,Animal Control,Transportation - Traffic Division,,Unsorted,14,33,,0,,0,,,,,,,,,,,9,Public Works Department,1,51,"Animal Control,Boston Police Department,Boston Water & Sewer Commission",3,1
-reason,String,true,,Administrative & General Requests,Street Lights,,Unsorted,7,33,,0,,0,,,,,,,,,,,20,Enforcement & Abandoned Vehicles,1,23,"Administrative & General Requests,Animal Issues,Building,Employee & General Comments,Noise Disturban...",7,1
-type,String,true,,Abandoned Vehicles,Unsatisfactory Utilities - Electrical  Plumbing,,Unsorted,10,47,,0,,0,,,,,,,,,,,36,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,City/State Snow Issues,Electrical,General Comments For a Program or...",15,1
-queue,String,true,,BTDT_AVRS Interface Queue,PWDx_Street Light_General Lighting Request,,Unsorted,13,55,,0,,0,,,,,,,,,,,35,BTDT_Parking Enforcement,1,21,"*PREVIEW: BTDT_BostonBikes,BTDT_Engineering_New Sign and Pavement Marking Requests,BTDT_Sign Shop_Si...",15,1
-department,String,true,,BTDT,PWDx,,Unsorted,3,4,,0,,0,,,,,,,,,,,7,PWDx,1,49,GEN_,1,2
-submittedphoto,String,true,,https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,https://311.boston.gov/media/boston/report/photos/61d75bba05bbcf180c2d41de/report.jpg,,Unsorted,0,100,,58,,0.58,,,,,,,,,,,43,,1,58,"*PREVIEW: https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,http...",42,1
-closedphoto,NULL,,,,,,,0,0,,100,,1,,,,,,,,,,,1,,1,100,,0,0
-location,String,true,, ,INTERSECTION of Verdun St & Gallivan Blvd  Dorchester  MA  ,,Unsorted,1,63,,0,,0,,,,,,,,,,,98,"563 Columbus Ave  Roxbury  MA  02118,INTERSECTION of Gallivan Blvd & Washington St  Dorchester  MA  ",2,2,"*PREVIEW:  ,103 N Beacon St  Brighton  MA  02135,11 Aberdeen St  Boston  MA  02215,1148 Hyde Park Av...",96,1
-fire_district,String,true,, ,9,,Unsorted,1,2,,0,,0,,,,,,,,,,,10,3,1,19, ,1,1
-pwd_district,String,true,, ,1C,,Unsorted,1,3,,0,,0,,,,,,,,,,,14,1B,1,16, ,1,1
-city_council_district,String,true,, ,9,,Unsorted,1,1,,0,,0,,,,,,,,,,,10,1,1,22, ,1,1
-police_district,String,true,, ,E5,,Unsorted,1,3,,0,,0,,,,,,,,,,,13,A1,1,20, ,1,1
-neighborhood,String,true,, ,West Roxbury,,Unsorted,1,38,,0,,0,,,,,,,,,,,19,Dorchester,1,15," ,Brighton,Mission Hill",3,1
-neighborhood_services_district,String,true,, ,9,,Unsorted,1,2,,0,,0,,,,,,,,,,,16,3,1,15," ,12",2,1
-ward,String,true,, ,Ward 9,,Unsorted,1,7,,0,,0,,,,,,,,,,,42,Ward 3,1,10,"*PREVIEW:  ,01,02,04,06,07,1,10,16,18",23,1
-precinct,String,true,, ,2210,,Unsorted,0,4,,1,,0.01,,,,,,,,,,,76,0306,1,5,"*PREVIEW: NULL, ,0102,0105,0108,0109,0201,0204,0305,0307",61,1
-location_street_name,String,true,,103 N Beacon St,INTERSECTION Verdun St & Gallivan Blvd,,Unsorted,0,45,,1,,0.01,,,,,,,,,,,97,"20 Washington St,563 Columbus Ave,INTERSECTION Gallivan Blvd & Washington St",3,2,"*PREVIEW: NULL,103 N Beacon St,11 Aberdeen St,1148 Hyde Park Ave,119 L St,12 Derne St,126 Elm St,127...",94,1
-location_zipcode,String,true,,02109,02215,,Unsorted,0,5,,17,,0.17,,,,,,,,,,,24,,1,17,"02126,02134,02210,02215",4,1
-latitude,Float,,4233.6674,42.2553,42.3806,0.1253,Unsorted,6,7,42.336674,0,4,0,0.0163,42.2034,42.2619,42.3204,42.34315,42.3594,0.039,42.4179,42.4764,-0.16666667,78,42.3594,1,20,"*PREVIEW: 42.2553,42.2601,42.2609,42.2645,42.2674,42.2789,42.2797,42.2804,42.2821,42.2878",74,1
-longitude,Float,,-7107.2688,-71.1626,-71.0298,0.1328,Unsorted,6,8,-71.072688,0,4,0,0.01205,-71.17405,-71.129425,-71.0848,-71.06085,-71.05505,0.02975,-71.010425,-70.9658,-0.61008403,77,-71.0587,1,19,"*PREVIEW: -71.0298,-71.0301,-71.0309,-71.0323,-71.0325,-71.0329,-71.0336,-71.0338,-71.034,-71.0355",72,1
-source,String,true,,Citizens Connect App,Self Service,,Unsorted,12,20,,0,,0,,,,,,,,,,,4,Citizens Connect App,1,56,Self Service,1,3
+field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,sum_length,avg_length,mean,nullcount,max_precision,sparsity,mad,lower_outer_fence,lower_inner_fence,q1,q2_median,q3,iqr,upper_inner_fence,upper_outer_fence,skewness,cardinality,mode,mode_count,mode_occurrences,antimode,antimode_count,antimode_occurrences
+case_enquiry_id,Integer,,10100411645180,101004113298,101004155594,42296,Unsorted,12,12,1200,12,101004116451.80003357,0,,0,673,101004109567,101004111646,101004113725,101004114353,101004115111,1386,101004117190,101004119269,0.09379509,100,,0,0,*ALL,0,1
+open_dt,String,true,,2022-01-01 00:16:00,2022-01-31 11:46:00,,Unsorted,19,19,1900,19,,0,,0,,,,,,,,,,,100,,0,0,*ALL,0,1
+target_dt,String,true,,2022-01-03 10:32:34,2022-05-20 13:03:21,,Unsorted,0,19,1691,16.91,,11,,0.11,,,,,,,,,,,42,2022-01-04 08:30:00,1,25,"*PREVIEW: 2022-01-03 10:32:34,2022-01-03 11:58:12,2022-01-04 09:58:36,2022-01-04 10:41:29,2022-01-04...",34,1
+closed_dt,String,true,,2022-01-01 12:56:14,2022-04-25 14:30:31,,Unsorted,0,19,1615,16.15,,15,,0.15,,,,,,,,,,,86,,1,15,"*PREVIEW: 2022-01-01 12:56:14,2022-01-01 14:17:15,2022-01-01 14:59:41,2022-01-01 15:10:16,2022-01-01...",85,1
+ontime,String,true,,ONTIME,OVERDUE,,Unsorted,6,7,617,6.17,,0,,0,,,,,,,,,,,2,ONTIME,1,83,OVERDUE,1,17
+case_status,String,true,,Closed,Open,,Unsorted,4,6,570,5.7,,0,,0,,,,,,,,,,,2,Closed,1,85,Open,1,15
+closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,Unsorted,1,284,8314,83.14,,0,,0,,,,,,,,,,,86, ,1,15,"*PREVIEW: Case Closed Case Resolved  NEW CART#21026466 DELV ON 1/11/22  ,Case Closed Case Resolved  ...",85,1
+case_title,String,true,,Abandoned Vehicles,Traffic Signal Inspection,,Unsorted,10,57,2386,23.86,,0,,0,,,,,,,,,,,42,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,BTDT: Complaint,City/State Snow Issues,DISPATCHED Short Term Rental...",24,1
+subject,String,true,,Animal Control,Transportation - Traffic Division,,Unsorted,14,33,2570,25.7,,0,,0,,,,,,,,,,,9,Public Works Department,1,51,"Animal Control,Boston Police Department,Boston Water & Sewer Commission",3,1
+reason,String,true,,Administrative & General Requests,Street Lights,,Unsorted,7,33,1892,18.92,,0,,0,,,,,,,,,,,20,Enforcement & Abandoned Vehicles,1,23,"Administrative & General Requests,Animal Issues,Building,Employee & General Comments,Noise Disturban...",7,1
+type,String,true,,Abandoned Vehicles,Unsatisfactory Utilities - Electrical  Plumbing,,Unsorted,10,47,2266,22.66,,0,,0,,,,,,,,,,,36,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,City/State Snow Issues,Electrical,General Comments For a Program or...",15,1
+queue,String,true,,BTDT_AVRS Interface Queue,PWDx_Street Light_General Lighting Request,,Unsorted,13,55,2802,28.02,,0,,0,,,,,,,,,,,35,BTDT_Parking Enforcement,1,21,"*PREVIEW: BTDT_BostonBikes,BTDT_Engineering_New Sign and Pavement Marking Requests,BTDT_Sign Shop_Si...",15,1
+department,String,true,,BTDT,PWDx,,Unsorted,3,4,392,3.92,,0,,0,,,,,,,,,,,7,PWDx,1,49,GEN_,1,2
+submittedphoto,String,true,,https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,https://311.boston.gov/media/boston/report/photos/61d75bba05bbcf180c2d41de/report.jpg,,Unsorted,0,100,3633,36.33,,58,,0.58,,,,,,,,,,,43,,1,58,"*PREVIEW: https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,http...",42,1
+closedphoto,NULL,,,,,,,0,0,,,,100,,1,,,,,,,,,,,1,,1,100,,0,0
+location,String,true,, ,INTERSECTION of Verdun St & Gallivan Blvd  Dorchester  MA  ,,Unsorted,1,63,3938,39.38,,0,,0,,,,,,,,,,,98,"563 Columbus Ave  Roxbury  MA  02118,INTERSECTION of Gallivan Blvd & Washington St  Dorchester  MA  ",2,2,"*PREVIEW:  ,103 N Beacon St  Brighton  MA  02135,11 Aberdeen St  Boston  MA  02215,1148 Hyde Park Av...",96,1
+fire_district,String,true,, ,9,,Unsorted,1,2,113,1.13,,0,,0,,,,,,,,,,,10,3,1,19, ,1,1
+pwd_district,String,true,, ,1C,,Unsorted,1,3,209,2.09,,0,,0,,,,,,,,,,,14,1B,1,16, ,1,1
+city_council_district,String,true,, ,9,,Unsorted,1,1,100,1,,0,,0,,,,,,,,,,,10,1,1,22, ,1,1
+police_district,String,true,, ,E5,,Unsorted,1,3,223,2.23,,0,,0,,,,,,,,,,,13,A1,1,20, ,1,1
+neighborhood,String,true,, ,West Roxbury,,Unsorted,1,38,1486,14.86,,0,,0,,,,,,,,,,,19,Dorchester,1,15," ,Brighton,Mission Hill",3,1
+neighborhood_services_district,String,true,, ,9,,Unsorted,1,2,139,1.39,,0,,0,,,,,,,,,,,16,3,1,15," ,12",2,1
+ward,String,true,, ,Ward 9,,Unsorted,1,7,499,4.99,,0,,0,,,,,,,,,,,42,Ward 3,1,10,"*PREVIEW:  ,01,02,04,06,07,1,10,16,18",23,1
+precinct,String,true,, ,2210,,Unsorted,0,4,393,3.93,,1,,0.01,,,,,,,,,,,76,0306,1,5,"*PREVIEW: NULL, ,0102,0105,0108,0109,0201,0204,0305,0307",61,1
+location_street_name,String,true,,103 N Beacon St,INTERSECTION Verdun St & Gallivan Blvd,,Unsorted,0,45,1800,18,,1,,0.01,,,,,,,,,,,97,"20 Washington St,563 Columbus Ave,INTERSECTION Gallivan Blvd & Washington St",3,2,"*PREVIEW: NULL,103 N Beacon St,11 Aberdeen St,1148 Hyde Park Ave,119 L St,12 Derne St,126 Elm St,127...",94,1
+location_zipcode,String,true,,02109,02215,,Unsorted,0,5,415,4.15,,17,,0.17,,,,,,,,,,,24,,1,17,"02126,02134,02210,02215",4,1
+latitude,Float,,4233.6674,42.2553,42.3806,0.1253,Unsorted,6,7,694,6.94,42.336674,0,4,0,0.0163,42.2034,42.2619,42.3204,42.34315,42.3594,0.039,42.4179,42.4764,-0.16666667,78,42.3594,1,20,"*PREVIEW: 42.2553,42.2601,42.2609,42.2645,42.2674,42.2789,42.2797,42.2804,42.2821,42.2878",74,1
+longitude,Float,,-7107.2688,-71.1626,-71.0298,0.1328,Unsorted,6,8,791,7.91,-71.072688,0,4,0,0.01205,-71.17405,-71.129425,-71.0848,-71.06085,-71.05505,0.02975,-71.010425,-70.9658,-0.61008403,77,-71.0587,1,19,"*PREVIEW: -71.0298,-71.0301,-71.0309,-71.0323,-71.0325,-71.0329,-71.0336,-71.0338,-71.034,-71.0355",72,1
+source,String,true,,Citizens Connect App,Self Service,,Unsorted,12,20,1801,18.01,,0,,0,,,,,,,,,,,4,Citizens Connect App,1,56,Self Service,1,3
diff --git a/resources/test/boston311-100-everything-date-stats-variance-stddev.csv b/resources/test/boston311-100-everything-date-stats-variance-stddev.csv
index 2f15eeca2..78ed06093 100644
--- a/resources/test/boston311-100-everything-date-stats-variance-stddev.csv
+++ b/resources/test/boston311-100-everything-date-stats-variance-stddev.csv
@@ -1,30 +1,30 @@
-field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,mean,sem,stddev,variance,cv,nullcount,max_precision,sparsity,mad,lower_outer_fence,lower_inner_fence,q1,q2_median,q3,iqr,upper_inner_fence,upper_outer_fence,skewness,cardinality,mode,mode_count,mode_occurrences,antimode,antimode_count,antimode_occurrences
-case_enquiry_id,Integer,,10100411645180,101004113298,101004155594,42296,Unsorted,12,12,101004116451.8,790.552,7905.5202,62497248.9138,0,0,,0,673,101004109567,101004111646,101004113725,101004114353,101004115111,1386,101004117190,101004119269,0.0938,100,,0,0,*ALL,0,1
-open_dt,DateTime,,,2022-01-01T00:16:00+00:00,2022-01-31T11:46:00+00:00,30.47917,Unsorted,,,2022-01-04T07:07:45.050+00:00,0.5568,5.568,31.00259,0.0293,0,,0,0.76261,2021-12-27T14:16:49+00:00,2021-12-30T06:00:07+00:00,2022-01-01T21:43:25+00:00,2022-01-03T07:02:14+00:00,2022-01-03T16:12:17+00:00,1.77005,2022-01-06T07:55:35+00:00,2022-01-08T23:38:53+00:00,-0.5684,100,,0,0,*ALL,0,1
-target_dt,DateTime,,,2022-01-03T10:32:34+00:00,2022-05-20T13:03:21+00:00,137.10471,Unsorted,,,2022-01-17T03:14:16.404+00:00,2.86258,27.00551,729.29774,0.1421,11,,0.11,1,2021-11-26T08:30:00+00:00,2021-12-15T20:30:00+00:00,2022-01-04T08:30:00+00:00,2022-01-05T08:30:00+00:00,2022-01-17T08:30:00+00:00,13,2022-02-05T20:30:00+00:00,2022-02-25T08:30:00+00:00,0.8462,42,2022-01-04 08:30:00,1,25,"*PREVIEW: 2022-01-03 10:32:34,2022-01-03 11:58:12,2022-01-04 09:58:36,2022-01-04 10:41:29,2022-01-04...",34,1
-closed_dt,DateTime,,,2022-01-01T12:56:14+00:00,2022-04-25T14:30:31+00:00,114.06547,Unsorted,,,2022-01-08T01:10:44.411+00:00,1.71655,15.82577,250.4549,0.0833,15,,0.15,0.77213,2021-12-29T15:13:29+00:00,2021-12-31T19:50:08.750+00:00,2022-01-03T00:26:48.500+00:00,2022-01-03T12:15:23+00:00,2022-01-04T11:31:15+00:00,1.46142,2022-01-06T16:07:54.750+00:00,2022-01-08T20:44:34.500+00:00,0.3266,86,,1,15,"*PREVIEW: 2022-01-01 12:56:14,2022-01-01 14:17:15,2022-01-01 14:59:41,2022-01-01 15:10:16,2022-01-01...",85,1
-ontime,String,true,,ONTIME,OVERDUE,,Unsorted,6,7,,,,,,0,,0,,,,,,,,,,,2,ONTIME,1,83,OVERDUE,1,17
-case_status,String,true,,Closed,Open,,Unsorted,4,6,,,,,,0,,0,,,,,,,,,,,2,Closed,1,85,Open,1,15
-closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,Unsorted,1,284,,,,,,0,,0,,,,,,,,,,,86, ,1,15,"*PREVIEW: Case Closed Case Resolved  NEW CART#21026466 DELV ON 1/11/22  ,Case Closed Case Resolved  ...",85,1
-case_title,String,true,,Abandoned Vehicles,Traffic Signal Inspection,,Unsorted,10,57,,,,,,0,,0,,,,,,,,,,,42,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,BTDT: Complaint,City/State Snow Issues,DISPATCHED Short Term Rental...",24,1
-subject,String,true,,Animal Control,Transportation - Traffic Division,,Unsorted,14,33,,,,,,0,,0,,,,,,,,,,,9,Public Works Department,1,51,"Animal Control,Boston Police Department,Boston Water & Sewer Commission",3,1
-reason,String,true,,Administrative & General Requests,Street Lights,,Unsorted,7,33,,,,,,0,,0,,,,,,,,,,,20,Enforcement & Abandoned Vehicles,1,23,"Administrative & General Requests,Animal Issues,Building,Employee & General Comments,Noise Disturban...",7,1
-type,String,true,,Abandoned Vehicles,Unsatisfactory Utilities - Electrical  Plumbing,,Unsorted,10,47,,,,,,0,,0,,,,,,,,,,,36,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,City/State Snow Issues,Electrical,General Comments For a Program or...",15,1
-queue,String,true,,BTDT_AVRS Interface Queue,PWDx_Street Light_General Lighting Request,,Unsorted,13,55,,,,,,0,,0,,,,,,,,,,,35,BTDT_Parking Enforcement,1,21,"*PREVIEW: BTDT_BostonBikes,BTDT_Engineering_New Sign and Pavement Marking Requests,BTDT_Sign Shop_Si...",15,1
-department,String,true,,BTDT,PWDx,,Unsorted,3,4,,,,,,0,,0,,,,,,,,,,,7,PWDx,1,49,GEN_,1,2
-submittedphoto,String,true,,https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,https://311.boston.gov/media/boston/report/photos/61d75bba05bbcf180c2d41de/report.jpg,,Unsorted,0,100,,,,,,58,,0.58,,,,,,,,,,,43,,1,58,"*PREVIEW: https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,http...",42,1
-closedphoto,NULL,,,,,,,0,0,,,,,,100,,1,,,,,,,,,,,1,,1,100,,0,0
-location,String,true,, ,INTERSECTION of Verdun St & Gallivan Blvd  Dorchester  MA  ,,Unsorted,1,63,,,,,,0,,0,,,,,,,,,,,98,"563 Columbus Ave  Roxbury  MA  02118,INTERSECTION of Gallivan Blvd & Washington St  Dorchester  MA  ",2,2,"*PREVIEW:  ,103 N Beacon St  Brighton  MA  02135,11 Aberdeen St  Boston  MA  02215,1148 Hyde Park Av...",96,1
-fire_district,String,true,, ,9,,Unsorted,1,2,,,,,,0,,0,,,,,,,,,,,10,3,1,19, ,1,1
-pwd_district,String,true,, ,1C,,Unsorted,1,3,,,,,,0,,0,,,,,,,,,,,14,1B,1,16, ,1,1
-city_council_district,String,true,, ,9,,Unsorted,1,1,,,,,,0,,0,,,,,,,,,,,10,1,1,22, ,1,1
-police_district,String,true,, ,E5,,Unsorted,1,3,,,,,,0,,0,,,,,,,,,,,13,A1,1,20, ,1,1
-neighborhood,String,true,, ,West Roxbury,,Unsorted,1,38,,,,,,0,,0,,,,,,,,,,,19,Dorchester,1,15," ,Brighton,Mission Hill",3,1
-neighborhood_services_district,String,true,, ,9,,Unsorted,1,2,,,,,,0,,0,,,,,,,,,,,16,3,1,15," ,12",2,1
-ward,String,true,, ,Ward 9,,Unsorted,1,7,,,,,,0,,0,,,,,,,,,,,42,Ward 3,1,10,"*PREVIEW:  ,01,02,04,06,07,1,10,16,18",23,1
-precinct,String,true,, ,2210,,Unsorted,0,4,,,,,,1,,0.01,,,,,,,,,,,76,0306,1,5,"*PREVIEW: NULL, ,0102,0105,0108,0109,0201,0204,0305,0307",61,1
-location_street_name,String,true,,103 N Beacon St,INTERSECTION Verdun St & Gallivan Blvd,,Unsorted,0,45,,,,,,1,,0.01,,,,,,,,,,,97,"20 Washington St,563 Columbus Ave,INTERSECTION Gallivan Blvd & Washington St",3,2,"*PREVIEW: NULL,103 N Beacon St,11 Aberdeen St,1148 Hyde Park Ave,119 L St,12 Derne St,126 Elm St,127...",94,1
-location_zipcode,String,true,,02109,02215,,Unsorted,0,5,,,,,,17,,0.17,,,,,,,,,,,24,,1,17,"02126,02134,02210,02215",4,1
-latitude,Float,,4233.6674,42.2553,42.3806,0.1253,Unsorted,6,7,42.3367,0.0031,0.0305,0.0009,0.072,0,4,0,0.0163,42.2034,42.2619,42.3204,42.3432,42.3594,0.039,42.4179,42.4764,-0.1667,78,42.3594,1,20,"*PREVIEW: 42.2553,42.2601,42.2609,42.2645,42.2674,42.2789,42.2797,42.2804,42.2821,42.2878",74,1
-longitude,Float,,-7107.2688,-71.1626,-71.0298,0.1328,Unsorted,6,8,-71.0727,0.0031,0.0311,0.001,-0.0437,0,4,0,0.0121,-71.1741,-71.1294,-71.0848,-71.0609,-71.055,0.0298,-71.0104,-70.9658,-0.6101,77,-71.0587,1,19,"*PREVIEW: -71.0298,-71.0301,-71.0309,-71.0323,-71.0325,-71.0329,-71.0336,-71.0338,-71.034,-71.0355",72,1
-source,String,true,,Citizens Connect App,Self Service,,Unsorted,12,20,,,,,,0,,0,,,,,,,,,,,4,Citizens Connect App,1,56,Self Service,1,3
+field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,sum_length,avg_length,mean,sem,stddev,variance,cv,nullcount,max_precision,sparsity,mad,lower_outer_fence,lower_inner_fence,q1,q2_median,q3,iqr,upper_inner_fence,upper_outer_fence,skewness,cardinality,mode,mode_count,mode_occurrences,antimode,antimode_count,antimode_occurrences
+case_enquiry_id,Integer,,10100411645180,101004113298,101004155594,42296,Unsorted,12,12,1200,12,101004116451.8,790.552,7905.5202,62497248.9138,0,0,,0,673,101004109567,101004111646,101004113725,101004114353,101004115111,1386,101004117190,101004119269,0.0938,100,,0,0,*ALL,0,1
+open_dt,DateTime,,,2022-01-01T00:16:00+00:00,2022-01-31T11:46:00+00:00,30.47917,Unsorted,,,,,2022-01-04T07:07:45.050+00:00,0.5568,5.568,31.00259,0.0293,0,,0,0.76261,2021-12-27T14:16:49+00:00,2021-12-30T06:00:07+00:00,2022-01-01T21:43:25+00:00,2022-01-03T07:02:14+00:00,2022-01-03T16:12:17+00:00,1.77005,2022-01-06T07:55:35+00:00,2022-01-08T23:38:53+00:00,-0.5684,100,,0,0,*ALL,0,1
+target_dt,DateTime,,,2022-01-03T10:32:34+00:00,2022-05-20T13:03:21+00:00,137.10471,Unsorted,,,,,2022-01-17T03:14:16.404+00:00,2.86258,27.00551,729.29774,0.1421,11,,0.11,1,2021-11-26T08:30:00+00:00,2021-12-15T20:30:00+00:00,2022-01-04T08:30:00+00:00,2022-01-05T08:30:00+00:00,2022-01-17T08:30:00+00:00,13,2022-02-05T20:30:00+00:00,2022-02-25T08:30:00+00:00,0.8462,42,2022-01-04 08:30:00,1,25,"*PREVIEW: 2022-01-03 10:32:34,2022-01-03 11:58:12,2022-01-04 09:58:36,2022-01-04 10:41:29,2022-01-04...",34,1
+closed_dt,DateTime,,,2022-01-01T12:56:14+00:00,2022-04-25T14:30:31+00:00,114.06547,Unsorted,,,,,2022-01-08T01:10:44.411+00:00,1.71655,15.82577,250.4549,0.0833,15,,0.15,0.77213,2021-12-29T15:13:29+00:00,2021-12-31T19:50:08.750+00:00,2022-01-03T00:26:48.500+00:00,2022-01-03T12:15:23+00:00,2022-01-04T11:31:15+00:00,1.46142,2022-01-06T16:07:54.750+00:00,2022-01-08T20:44:34.500+00:00,0.3266,86,,1,15,"*PREVIEW: 2022-01-01 12:56:14,2022-01-01 14:17:15,2022-01-01 14:59:41,2022-01-01 15:10:16,2022-01-01...",85,1
+ontime,String,true,,ONTIME,OVERDUE,,Unsorted,6,7,617,6.17,,,,,,0,,0,,,,,,,,,,,2,ONTIME,1,83,OVERDUE,1,17
+case_status,String,true,,Closed,Open,,Unsorted,4,6,570,5.7,,,,,,0,,0,,,,,,,,,,,2,Closed,1,85,Open,1,15
+closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,Unsorted,1,284,8314,83.14,,,,,,0,,0,,,,,,,,,,,86, ,1,15,"*PREVIEW: Case Closed Case Resolved  NEW CART#21026466 DELV ON 1/11/22  ,Case Closed Case Resolved  ...",85,1
+case_title,String,true,,Abandoned Vehicles,Traffic Signal Inspection,,Unsorted,10,57,2386,23.86,,,,,,0,,0,,,,,,,,,,,42,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,BTDT: Complaint,City/State Snow Issues,DISPATCHED Short Term Rental...",24,1
+subject,String,true,,Animal Control,Transportation - Traffic Division,,Unsorted,14,33,2570,25.7,,,,,,0,,0,,,,,,,,,,,9,Public Works Department,1,51,"Animal Control,Boston Police Department,Boston Water & Sewer Commission",3,1
+reason,String,true,,Administrative & General Requests,Street Lights,,Unsorted,7,33,1892,18.92,,,,,,0,,0,,,,,,,,,,,20,Enforcement & Abandoned Vehicles,1,23,"Administrative & General Requests,Animal Issues,Building,Employee & General Comments,Noise Disturban...",7,1
+type,String,true,,Abandoned Vehicles,Unsatisfactory Utilities - Electrical  Plumbing,,Unsorted,10,47,2266,22.66,,,,,,0,,0,,,,,,,,,,,36,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,City/State Snow Issues,Electrical,General Comments For a Program or...",15,1
+queue,String,true,,BTDT_AVRS Interface Queue,PWDx_Street Light_General Lighting Request,,Unsorted,13,55,2802,28.02,,,,,,0,,0,,,,,,,,,,,35,BTDT_Parking Enforcement,1,21,"*PREVIEW: BTDT_BostonBikes,BTDT_Engineering_New Sign and Pavement Marking Requests,BTDT_Sign Shop_Si...",15,1
+department,String,true,,BTDT,PWDx,,Unsorted,3,4,392,3.92,,,,,,0,,0,,,,,,,,,,,7,PWDx,1,49,GEN_,1,2
+submittedphoto,String,true,,https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,https://311.boston.gov/media/boston/report/photos/61d75bba05bbcf180c2d41de/report.jpg,,Unsorted,0,100,3633,36.33,,,,,,58,,0.58,,,,,,,,,,,43,,1,58,"*PREVIEW: https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,http...",42,1
+closedphoto,NULL,,,,,,,0,0,,,,,,,,100,,1,,,,,,,,,,,1,,1,100,,0,0
+location,String,true,, ,INTERSECTION of Verdun St & Gallivan Blvd  Dorchester  MA  ,,Unsorted,1,63,3938,39.38,,,,,,0,,0,,,,,,,,,,,98,"563 Columbus Ave  Roxbury  MA  02118,INTERSECTION of Gallivan Blvd & Washington St  Dorchester  MA  ",2,2,"*PREVIEW:  ,103 N Beacon St  Brighton  MA  02135,11 Aberdeen St  Boston  MA  02215,1148 Hyde Park Av...",96,1
+fire_district,String,true,, ,9,,Unsorted,1,2,113,1.13,,,,,,0,,0,,,,,,,,,,,10,3,1,19, ,1,1
+pwd_district,String,true,, ,1C,,Unsorted,1,3,209,2.09,,,,,,0,,0,,,,,,,,,,,14,1B,1,16, ,1,1
+city_council_district,String,true,, ,9,,Unsorted,1,1,100,1,,,,,,0,,0,,,,,,,,,,,10,1,1,22, ,1,1
+police_district,String,true,, ,E5,,Unsorted,1,3,223,2.23,,,,,,0,,0,,,,,,,,,,,13,A1,1,20, ,1,1
+neighborhood,String,true,, ,West Roxbury,,Unsorted,1,38,1486,14.86,,,,,,0,,0,,,,,,,,,,,19,Dorchester,1,15," ,Brighton,Mission Hill",3,1
+neighborhood_services_district,String,true,, ,9,,Unsorted,1,2,139,1.39,,,,,,0,,0,,,,,,,,,,,16,3,1,15," ,12",2,1
+ward,String,true,, ,Ward 9,,Unsorted,1,7,499,4.99,,,,,,0,,0,,,,,,,,,,,42,Ward 3,1,10,"*PREVIEW:  ,01,02,04,06,07,1,10,16,18",23,1
+precinct,String,true,, ,2210,,Unsorted,0,4,393,3.93,,,,,,1,,0.01,,,,,,,,,,,76,0306,1,5,"*PREVIEW: NULL, ,0102,0105,0108,0109,0201,0204,0305,0307",61,1
+location_street_name,String,true,,103 N Beacon St,INTERSECTION Verdun St & Gallivan Blvd,,Unsorted,0,45,1800,18,,,,,,1,,0.01,,,,,,,,,,,97,"20 Washington St,563 Columbus Ave,INTERSECTION Gallivan Blvd & Washington St",3,2,"*PREVIEW: NULL,103 N Beacon St,11 Aberdeen St,1148 Hyde Park Ave,119 L St,12 Derne St,126 Elm St,127...",94,1
+location_zipcode,String,true,,02109,02215,,Unsorted,0,5,415,4.15,,,,,,17,,0.17,,,,,,,,,,,24,,1,17,"02126,02134,02210,02215",4,1
+latitude,Float,,4233.6674,42.2553,42.3806,0.1253,Unsorted,6,7,694,6.94,42.3367,0.0031,0.0305,0.0009,0.072,0,4,0,0.0163,42.2034,42.2619,42.3204,42.3432,42.3594,0.039,42.4179,42.4764,-0.1667,78,42.3594,1,20,"*PREVIEW: 42.2553,42.2601,42.2609,42.2645,42.2674,42.2789,42.2797,42.2804,42.2821,42.2878",74,1
+longitude,Float,,-7107.2688,-71.1626,-71.0298,0.1328,Unsorted,6,8,791,7.91,-71.0727,0.0031,0.0311,0.001,-0.0437,0,4,0,0.0121,-71.1741,-71.1294,-71.0848,-71.0609,-71.055,0.0298,-71.0104,-70.9658,-0.6101,77,-71.0587,1,19,"*PREVIEW: -71.0298,-71.0301,-71.0309,-71.0323,-71.0325,-71.0329,-71.0336,-71.0338,-71.034,-71.0355",72,1
+source,String,true,,Citizens Connect App,Self Service,,Unsorted,12,20,1801,18.01,,,,,,0,,0,,,,,,,,,,,4,Citizens Connect App,1,56,Self Service,1,3
diff --git a/resources/test/boston311-100-everything-date-stats.csv b/resources/test/boston311-100-everything-date-stats.csv
index cb4165df8..55e1f62e7 100644
--- a/resources/test/boston311-100-everything-date-stats.csv
+++ b/resources/test/boston311-100-everything-date-stats.csv
@@ -1,30 +1,30 @@
-field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,mean,nullcount,max_precision,sparsity,mad,lower_outer_fence,lower_inner_fence,q1,q2_median,q3,iqr,upper_inner_fence,upper_outer_fence,skewness,cardinality,mode,mode_count,mode_occurrences,antimode,antimode_count,antimode_occurrences
-case_enquiry_id,Integer,,10100411645180,101004113298,101004155594,42296,Unsorted,12,12,101004116451.8,0,,0,673,101004109567,101004111646,101004113725,101004114353,101004115111,1386,101004117190,101004119269,0.0938,100,,0,0,*ALL,0,1
-open_dt,DateTime,,,2022-01-01T00:16:00+00:00,2022-01-31T11:46:00+00:00,30.47917,Unsorted,,,2022-01-04T07:07:45.050+00:00,0,,0,0.76261,2021-12-27T14:16:49+00:00,2021-12-30T06:00:07+00:00,2022-01-01T21:43:25+00:00,2022-01-03T07:02:14+00:00,2022-01-03T16:12:17+00:00,1.77005,2022-01-06T07:55:35+00:00,2022-01-08T23:38:53+00:00,-0.5684,100,,0,0,*ALL,0,1
-target_dt,DateTime,,,2022-01-03T10:32:34+00:00,2022-05-20T13:03:21+00:00,137.10471,Unsorted,,,2022-01-17T03:14:16.404+00:00,11,,0.11,1,2021-11-26T08:30:00+00:00,2021-12-15T20:30:00+00:00,2022-01-04T08:30:00+00:00,2022-01-05T08:30:00+00:00,2022-01-17T08:30:00+00:00,13,2022-02-05T20:30:00+00:00,2022-02-25T08:30:00+00:00,0.8462,42,2022-01-04 08:30:00,1,25,"*PREVIEW: 2022-01-03 10:32:34,2022-01-03 11:58:12,2022-01-04 09:58:36,2022-01-04 10:41:29,2022-01-04...",34,1
-closed_dt,DateTime,,,2022-01-01T12:56:14+00:00,2022-04-25T14:30:31+00:00,114.06547,Unsorted,,,2022-01-08T01:10:44.411+00:00,15,,0.15,0.77213,2021-12-29T15:13:29+00:00,2021-12-31T19:50:08.750+00:00,2022-01-03T00:26:48.500+00:00,2022-01-03T12:15:23+00:00,2022-01-04T11:31:15+00:00,1.46142,2022-01-06T16:07:54.750+00:00,2022-01-08T20:44:34.500+00:00,0.3266,86,,1,15,"*PREVIEW: 2022-01-01 12:56:14,2022-01-01 14:17:15,2022-01-01 14:59:41,2022-01-01 15:10:16,2022-01-01...",85,1
-ontime,String,true,,ONTIME,OVERDUE,,Unsorted,6,7,,0,,0,,,,,,,,,,,2,ONTIME,1,83,OVERDUE,1,17
-case_status,String,true,,Closed,Open,,Unsorted,4,6,,0,,0,,,,,,,,,,,2,Closed,1,85,Open,1,15
-closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,Unsorted,1,284,,0,,0,,,,,,,,,,,86, ,1,15,"*PREVIEW: Case Closed Case Resolved  NEW CART#21026466 DELV ON 1/11/22  ,Case Closed Case Resolved  ...",85,1
-case_title,String,true,,Abandoned Vehicles,Traffic Signal Inspection,,Unsorted,10,57,,0,,0,,,,,,,,,,,42,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,BTDT: Complaint,City/State Snow Issues,DISPATCHED Short Term Rental...",24,1
-subject,String,true,,Animal Control,Transportation - Traffic Division,,Unsorted,14,33,,0,,0,,,,,,,,,,,9,Public Works Department,1,51,"Animal Control,Boston Police Department,Boston Water & Sewer Commission",3,1
-reason,String,true,,Administrative & General Requests,Street Lights,,Unsorted,7,33,,0,,0,,,,,,,,,,,20,Enforcement & Abandoned Vehicles,1,23,"Administrative & General Requests,Animal Issues,Building,Employee & General Comments,Noise Disturban...",7,1
-type,String,true,,Abandoned Vehicles,Unsatisfactory Utilities - Electrical  Plumbing,,Unsorted,10,47,,0,,0,,,,,,,,,,,36,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,City/State Snow Issues,Electrical,General Comments For a Program or...",15,1
-queue,String,true,,BTDT_AVRS Interface Queue,PWDx_Street Light_General Lighting Request,,Unsorted,13,55,,0,,0,,,,,,,,,,,35,BTDT_Parking Enforcement,1,21,"*PREVIEW: BTDT_BostonBikes,BTDT_Engineering_New Sign and Pavement Marking Requests,BTDT_Sign Shop_Si...",15,1
-department,String,true,,BTDT,PWDx,,Unsorted,3,4,,0,,0,,,,,,,,,,,7,PWDx,1,49,GEN_,1,2
-submittedphoto,String,true,,https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,https://311.boston.gov/media/boston/report/photos/61d75bba05bbcf180c2d41de/report.jpg,,Unsorted,0,100,,58,,0.58,,,,,,,,,,,43,,1,58,"*PREVIEW: https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,http...",42,1
-closedphoto,NULL,,,,,,,0,0,,100,,1,,,,,,,,,,,1,,1,100,,0,0
-location,String,true,, ,INTERSECTION of Verdun St & Gallivan Blvd  Dorchester  MA  ,,Unsorted,1,63,,0,,0,,,,,,,,,,,98,"563 Columbus Ave  Roxbury  MA  02118,INTERSECTION of Gallivan Blvd & Washington St  Dorchester  MA  ",2,2,"*PREVIEW:  ,103 N Beacon St  Brighton  MA  02135,11 Aberdeen St  Boston  MA  02215,1148 Hyde Park Av...",96,1
-fire_district,String,true,, ,9,,Unsorted,1,2,,0,,0,,,,,,,,,,,10,3,1,19, ,1,1
-pwd_district,String,true,, ,1C,,Unsorted,1,3,,0,,0,,,,,,,,,,,14,1B,1,16, ,1,1
-city_council_district,String,true,, ,9,,Unsorted,1,1,,0,,0,,,,,,,,,,,10,1,1,22, ,1,1
-police_district,String,true,, ,E5,,Unsorted,1,3,,0,,0,,,,,,,,,,,13,A1,1,20, ,1,1
-neighborhood,String,true,, ,West Roxbury,,Unsorted,1,38,,0,,0,,,,,,,,,,,19,Dorchester,1,15," ,Brighton,Mission Hill",3,1
-neighborhood_services_district,String,true,, ,9,,Unsorted,1,2,,0,,0,,,,,,,,,,,16,3,1,15," ,12",2,1
-ward,String,true,, ,Ward 9,,Unsorted,1,7,,0,,0,,,,,,,,,,,42,Ward 3,1,10,"*PREVIEW:  ,01,02,04,06,07,1,10,16,18",23,1
-precinct,String,true,, ,2210,,Unsorted,0,4,,1,,0.01,,,,,,,,,,,76,0306,1,5,"*PREVIEW: NULL, ,0102,0105,0108,0109,0201,0204,0305,0307",61,1
-location_street_name,String,true,,103 N Beacon St,INTERSECTION Verdun St & Gallivan Blvd,,Unsorted,0,45,,1,,0.01,,,,,,,,,,,97,"20 Washington St,563 Columbus Ave,INTERSECTION Gallivan Blvd & Washington St",3,2,"*PREVIEW: NULL,103 N Beacon St,11 Aberdeen St,1148 Hyde Park Ave,119 L St,12 Derne St,126 Elm St,127...",94,1
-location_zipcode,String,true,,02109,02215,,Unsorted,0,5,,17,,0.17,,,,,,,,,,,24,,1,17,"02126,02134,02210,02215",4,1
-latitude,Float,,4233.6674,42.2553,42.3806,0.1253,Unsorted,6,7,42.3367,0,4,0,0.0163,42.2034,42.2619,42.3204,42.3432,42.3594,0.039,42.4179,42.4764,-0.1667,78,42.3594,1,20,"*PREVIEW: 42.2553,42.2601,42.2609,42.2645,42.2674,42.2789,42.2797,42.2804,42.2821,42.2878",74,1
-longitude,Float,,-7107.2688,-71.1626,-71.0298,0.1328,Unsorted,6,8,-71.0727,0,4,0,0.0121,-71.1741,-71.1294,-71.0848,-71.0609,-71.055,0.0298,-71.0104,-70.9658,-0.6101,77,-71.0587,1,19,"*PREVIEW: -71.0298,-71.0301,-71.0309,-71.0323,-71.0325,-71.0329,-71.0336,-71.0338,-71.034,-71.0355",72,1
-source,String,true,,Citizens Connect App,Self Service,,Unsorted,12,20,,0,,0,,,,,,,,,,,4,Citizens Connect App,1,56,Self Service,1,3
+field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,sum_length,avg_length,mean,nullcount,max_precision,sparsity,mad,lower_outer_fence,lower_inner_fence,q1,q2_median,q3,iqr,upper_inner_fence,upper_outer_fence,skewness,cardinality,mode,mode_count,mode_occurrences,antimode,antimode_count,antimode_occurrences
+case_enquiry_id,Integer,,10100411645180,101004113298,101004155594,42296,Unsorted,12,12,1200,12,101004116451.8,0,,0,673,101004109567,101004111646,101004113725,101004114353,101004115111,1386,101004117190,101004119269,0.0938,100,,0,0,*ALL,0,1
+open_dt,DateTime,,,2022-01-01T00:16:00+00:00,2022-01-31T11:46:00+00:00,30.47917,Unsorted,,,,,2022-01-04T07:07:45.050+00:00,0,,0,0.76261,2021-12-27T14:16:49+00:00,2021-12-30T06:00:07+00:00,2022-01-01T21:43:25+00:00,2022-01-03T07:02:14+00:00,2022-01-03T16:12:17+00:00,1.77005,2022-01-06T07:55:35+00:00,2022-01-08T23:38:53+00:00,-0.5684,100,,0,0,*ALL,0,1
+target_dt,DateTime,,,2022-01-03T10:32:34+00:00,2022-05-20T13:03:21+00:00,137.10471,Unsorted,,,,,2022-01-17T03:14:16.404+00:00,11,,0.11,1,2021-11-26T08:30:00+00:00,2021-12-15T20:30:00+00:00,2022-01-04T08:30:00+00:00,2022-01-05T08:30:00+00:00,2022-01-17T08:30:00+00:00,13,2022-02-05T20:30:00+00:00,2022-02-25T08:30:00+00:00,0.8462,42,2022-01-04 08:30:00,1,25,"*PREVIEW: 2022-01-03 10:32:34,2022-01-03 11:58:12,2022-01-04 09:58:36,2022-01-04 10:41:29,2022-01-04...",34,1
+closed_dt,DateTime,,,2022-01-01T12:56:14+00:00,2022-04-25T14:30:31+00:00,114.06547,Unsorted,,,,,2022-01-08T01:10:44.411+00:00,15,,0.15,0.77213,2021-12-29T15:13:29+00:00,2021-12-31T19:50:08.750+00:00,2022-01-03T00:26:48.500+00:00,2022-01-03T12:15:23+00:00,2022-01-04T11:31:15+00:00,1.46142,2022-01-06T16:07:54.750+00:00,2022-01-08T20:44:34.500+00:00,0.3266,86,,1,15,"*PREVIEW: 2022-01-01 12:56:14,2022-01-01 14:17:15,2022-01-01 14:59:41,2022-01-01 15:10:16,2022-01-01...",85,1
+ontime,String,true,,ONTIME,OVERDUE,,Unsorted,6,7,617,6.17,,0,,0,,,,,,,,,,,2,ONTIME,1,83,OVERDUE,1,17
+case_status,String,true,,Closed,Open,,Unsorted,4,6,570,5.7,,0,,0,,,,,,,,,,,2,Closed,1,85,Open,1,15
+closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,Unsorted,1,284,8314,83.14,,0,,0,,,,,,,,,,,86, ,1,15,"*PREVIEW: Case Closed Case Resolved  NEW CART#21026466 DELV ON 1/11/22  ,Case Closed Case Resolved  ...",85,1
+case_title,String,true,,Abandoned Vehicles,Traffic Signal Inspection,,Unsorted,10,57,2386,23.86,,0,,0,,,,,,,,,,,42,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,BTDT: Complaint,City/State Snow Issues,DISPATCHED Short Term Rental...",24,1
+subject,String,true,,Animal Control,Transportation - Traffic Division,,Unsorted,14,33,2570,25.7,,0,,0,,,,,,,,,,,9,Public Works Department,1,51,"Animal Control,Boston Police Department,Boston Water & Sewer Commission",3,1
+reason,String,true,,Administrative & General Requests,Street Lights,,Unsorted,7,33,1892,18.92,,0,,0,,,,,,,,,,,20,Enforcement & Abandoned Vehicles,1,23,"Administrative & General Requests,Animal Issues,Building,Employee & General Comments,Noise Disturban...",7,1
+type,String,true,,Abandoned Vehicles,Unsatisfactory Utilities - Electrical  Plumbing,,Unsorted,10,47,2266,22.66,,0,,0,,,,,,,,,,,36,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,City/State Snow Issues,Electrical,General Comments For a Program or...",15,1
+queue,String,true,,BTDT_AVRS Interface Queue,PWDx_Street Light_General Lighting Request,,Unsorted,13,55,2802,28.02,,0,,0,,,,,,,,,,,35,BTDT_Parking Enforcement,1,21,"*PREVIEW: BTDT_BostonBikes,BTDT_Engineering_New Sign and Pavement Marking Requests,BTDT_Sign Shop_Si...",15,1
+department,String,true,,BTDT,PWDx,,Unsorted,3,4,392,3.92,,0,,0,,,,,,,,,,,7,PWDx,1,49,GEN_,1,2
+submittedphoto,String,true,,https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,https://311.boston.gov/media/boston/report/photos/61d75bba05bbcf180c2d41de/report.jpg,,Unsorted,0,100,3633,36.33,,58,,0.58,,,,,,,,,,,43,,1,58,"*PREVIEW: https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,http...",42,1
+closedphoto,NULL,,,,,,,0,0,,,,100,,1,,,,,,,,,,,1,,1,100,,0,0
+location,String,true,, ,INTERSECTION of Verdun St & Gallivan Blvd  Dorchester  MA  ,,Unsorted,1,63,3938,39.38,,0,,0,,,,,,,,,,,98,"563 Columbus Ave  Roxbury  MA  02118,INTERSECTION of Gallivan Blvd & Washington St  Dorchester  MA  ",2,2,"*PREVIEW:  ,103 N Beacon St  Brighton  MA  02135,11 Aberdeen St  Boston  MA  02215,1148 Hyde Park Av...",96,1
+fire_district,String,true,, ,9,,Unsorted,1,2,113,1.13,,0,,0,,,,,,,,,,,10,3,1,19, ,1,1
+pwd_district,String,true,, ,1C,,Unsorted,1,3,209,2.09,,0,,0,,,,,,,,,,,14,1B,1,16, ,1,1
+city_council_district,String,true,, ,9,,Unsorted,1,1,100,1,,0,,0,,,,,,,,,,,10,1,1,22, ,1,1
+police_district,String,true,, ,E5,,Unsorted,1,3,223,2.23,,0,,0,,,,,,,,,,,13,A1,1,20, ,1,1
+neighborhood,String,true,, ,West Roxbury,,Unsorted,1,38,1486,14.86,,0,,0,,,,,,,,,,,19,Dorchester,1,15," ,Brighton,Mission Hill",3,1
+neighborhood_services_district,String,true,, ,9,,Unsorted,1,2,139,1.39,,0,,0,,,,,,,,,,,16,3,1,15," ,12",2,1
+ward,String,true,, ,Ward 9,,Unsorted,1,7,499,4.99,,0,,0,,,,,,,,,,,42,Ward 3,1,10,"*PREVIEW:  ,01,02,04,06,07,1,10,16,18",23,1
+precinct,String,true,, ,2210,,Unsorted,0,4,393,3.93,,1,,0.01,,,,,,,,,,,76,0306,1,5,"*PREVIEW: NULL, ,0102,0105,0108,0109,0201,0204,0305,0307",61,1
+location_street_name,String,true,,103 N Beacon St,INTERSECTION Verdun St & Gallivan Blvd,,Unsorted,0,45,1800,18,,1,,0.01,,,,,,,,,,,97,"20 Washington St,563 Columbus Ave,INTERSECTION Gallivan Blvd & Washington St",3,2,"*PREVIEW: NULL,103 N Beacon St,11 Aberdeen St,1148 Hyde Park Ave,119 L St,12 Derne St,126 Elm St,127...",94,1
+location_zipcode,String,true,,02109,02215,,Unsorted,0,5,415,4.15,,17,,0.17,,,,,,,,,,,24,,1,17,"02126,02134,02210,02215",4,1
+latitude,Float,,4233.6674,42.2553,42.3806,0.1253,Unsorted,6,7,694,6.94,42.3367,0,4,0,0.0163,42.2034,42.2619,42.3204,42.3432,42.3594,0.039,42.4179,42.4764,-0.1667,78,42.3594,1,20,"*PREVIEW: 42.2553,42.2601,42.2609,42.2645,42.2674,42.2789,42.2797,42.2804,42.2821,42.2878",74,1
+longitude,Float,,-7107.2688,-71.1626,-71.0298,0.1328,Unsorted,6,8,791,7.91,-71.0727,0,4,0,0.0121,-71.1741,-71.1294,-71.0848,-71.0609,-71.055,0.0298,-71.0104,-70.9658,-0.6101,77,-71.0587,1,19,"*PREVIEW: -71.0298,-71.0301,-71.0309,-71.0323,-71.0325,-71.0329,-71.0336,-71.0338,-71.034,-71.0355",72,1
+source,String,true,,Citizens Connect App,Self Service,,Unsorted,12,20,1801,18.01,,0,,0,,,,,,,,,,,4,Citizens Connect App,1,56,Self Service,1,3
diff --git a/resources/test/boston311-100-everything-datenotime-stats.csv b/resources/test/boston311-100-everything-datenotime-stats.csv
index ad90c2fe3..0c889aef0 100644
--- a/resources/test/boston311-100-everything-datenotime-stats.csv
+++ b/resources/test/boston311-100-everything-datenotime-stats.csv
@@ -1,30 +1,30 @@
-field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,mean,nullcount,max_precision,sparsity,mad,lower_outer_fence,lower_inner_fence,q1,q2_median,q3,iqr,upper_inner_fence,upper_outer_fence,skewness,cardinality,mode,mode_count,mode_occurrences,antimode,antimode_count,antimode_occurrences
-case_enquiry_id,Integer,,10100411645180,101004113298,101004155594,42296,Unsorted,12,12,101004116451.8,0,,0,673,101004109567,101004111646,101004113725,101004114353,101004115111,1386,101004117190,101004119269,0.0938,100,,0,0,*ALL,0,1
-open_dt,Date,,,2022-01-01,2022-01-31,30,Unsorted,,,2022-01-03,0,,0,1,2021-12-26,2021-12-29,2022-01-01,2022-01-03,2022-01-03,2,2022-01-06,2022-01-09,-1,10,2022-01-03,1,38,"2022-01-06,2022-01-08,2022-01-19,2022-01-21",4,1
-target_dt,Date,,,2022-01-03,2022-05-20,137,Unsorted,,,2022-01-16,11,,0.11,1,2021-11-26,2021-12-15,2022-01-04,2022-01-05,2022-01-17,13,2022-02-05,2022-02-25,0.8462,22,2022-01-04,1,37,"2022-01-11,2022-01-19,2022-02-04,2022-02-14,2022-02-17,2022-03-02,2022-03-10,2022-04-01,2022-05-20",9,1
-closed_dt,Date,,,2022-01-01,2022-04-25,114,Unsorted,,,2022-01-07,15,,0.15,1,2021-12-31,2022-01-01,2022-01-03,2022-01-03,2022-01-04,1,2022-01-05,2022-01-07,1,18,2022-01-03,1,35,"2022-01-07,2022-01-09,2022-01-13,2022-01-19,2022-02-12,2022-02-28,2022-03-09,2022-04-25",8,1
-ontime,String,true,,ONTIME,OVERDUE,,Unsorted,6,7,,0,,0,,,,,,,,,,,2,ONTIME,1,83,OVERDUE,1,17
-case_status,String,true,,Closed,Open,,Unsorted,4,6,,0,,0,,,,,,,,,,,2,Closed,1,85,Open,1,15
-closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,Unsorted,1,284,,0,,0,,,,,,,,,,,86, ,1,15,"*PREVIEW: Case Closed Case Resolved  NEW CART#21026466 DELV ON 1/11/22  ,Case Closed Case Resolved  ...",85,1
-case_title,String,true,,Abandoned Vehicles,Traffic Signal Inspection,,Unsorted,10,57,,0,,0,,,,,,,,,,,42,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,BTDT: Complaint,City/State Snow Issues,DISPATCHED Short Term Rental...",24,1
-subject,String,true,,Animal Control,Transportation - Traffic Division,,Unsorted,14,33,,0,,0,,,,,,,,,,,9,Public Works Department,1,51,"Animal Control,Boston Police Department,Boston Water & Sewer Commission",3,1
-reason,String,true,,Administrative & General Requests,Street Lights,,Unsorted,7,33,,0,,0,,,,,,,,,,,20,Enforcement & Abandoned Vehicles,1,23,"Administrative & General Requests,Animal Issues,Building,Employee & General Comments,Noise Disturban...",7,1
-type,String,true,,Abandoned Vehicles,Unsatisfactory Utilities - Electrical  Plumbing,,Unsorted,10,47,,0,,0,,,,,,,,,,,36,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,City/State Snow Issues,Electrical,General Comments For a Program or...",15,1
-queue,String,true,,BTDT_AVRS Interface Queue,PWDx_Street Light_General Lighting Request,,Unsorted,13,55,,0,,0,,,,,,,,,,,35,BTDT_Parking Enforcement,1,21,"*PREVIEW: BTDT_BostonBikes,BTDT_Engineering_New Sign and Pavement Marking Requests,BTDT_Sign Shop_Si...",15,1
-department,String,true,,BTDT,PWDx,,Unsorted,3,4,,0,,0,,,,,,,,,,,7,PWDx,1,49,GEN_,1,2
-submittedphoto,String,true,,https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,https://311.boston.gov/media/boston/report/photos/61d75bba05bbcf180c2d41de/report.jpg,,Unsorted,0,100,,58,,0.58,,,,,,,,,,,43,,1,58,"*PREVIEW: https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,http...",42,1
-closedphoto,NULL,,,,,,,0,0,,100,,1,,,,,,,,,,,1,,1,100,,0,0
-location,String,true,, ,INTERSECTION of Verdun St & Gallivan Blvd  Dorchester  MA  ,,Unsorted,1,63,,0,,0,,,,,,,,,,,98,"563 Columbus Ave  Roxbury  MA  02118,INTERSECTION of Gallivan Blvd & Washington St  Dorchester  MA  ",2,2,"*PREVIEW:  ,103 N Beacon St  Brighton  MA  02135,11 Aberdeen St  Boston  MA  02215,1148 Hyde Park Av...",96,1
-fire_district,String,true,, ,9,,Unsorted,1,2,,0,,0,,,,,,,,,,,10,3,1,19, ,1,1
-pwd_district,String,true,, ,1C,,Unsorted,1,3,,0,,0,,,,,,,,,,,14,1B,1,16, ,1,1
-city_council_district,String,true,, ,9,,Unsorted,1,1,,0,,0,,,,,,,,,,,10,1,1,22, ,1,1
-police_district,String,true,, ,E5,,Unsorted,1,3,,0,,0,,,,,,,,,,,13,A1,1,20, ,1,1
-neighborhood,String,true,, ,West Roxbury,,Unsorted,1,38,,0,,0,,,,,,,,,,,19,Dorchester,1,15," ,Brighton,Mission Hill",3,1
-neighborhood_services_district,String,true,, ,9,,Unsorted,1,2,,0,,0,,,,,,,,,,,16,3,1,15," ,12",2,1
-ward,String,true,, ,Ward 9,,Unsorted,1,7,,0,,0,,,,,,,,,,,42,Ward 3,1,10,"*PREVIEW:  ,01,02,04,06,07,1,10,16,18",23,1
-precinct,String,true,, ,2210,,Unsorted,0,4,,1,,0.01,,,,,,,,,,,76,0306,1,5,"*PREVIEW: NULL, ,0102,0105,0108,0109,0201,0204,0305,0307",61,1
-location_street_name,String,true,,103 N Beacon St,INTERSECTION Verdun St & Gallivan Blvd,,Unsorted,0,45,,1,,0.01,,,,,,,,,,,97,"20 Washington St,563 Columbus Ave,INTERSECTION Gallivan Blvd & Washington St",3,2,"*PREVIEW: NULL,103 N Beacon St,11 Aberdeen St,1148 Hyde Park Ave,119 L St,12 Derne St,126 Elm St,127...",94,1
-location_zipcode,String,true,,02109,02215,,Unsorted,0,5,,17,,0.17,,,,,,,,,,,24,,1,17,"02126,02134,02210,02215",4,1
-latitude,Float,,4233.6674,42.2553,42.3806,0.1253,Unsorted,6,7,42.3367,0,4,0,0.0163,42.2034,42.2619,42.3204,42.3432,42.3594,0.039,42.4179,42.4764,-0.1667,78,42.3594,1,20,"*PREVIEW: 42.2553,42.2601,42.2609,42.2645,42.2674,42.2789,42.2797,42.2804,42.2821,42.2878",74,1
-longitude,Float,,-7107.2688,-71.1626,-71.0298,0.1328,Unsorted,6,8,-71.0727,0,4,0,0.0121,-71.1741,-71.1294,-71.0848,-71.0609,-71.055,0.0298,-71.0104,-70.9658,-0.6101,77,-71.0587,1,19,"*PREVIEW: -71.0298,-71.0301,-71.0309,-71.0323,-71.0325,-71.0329,-71.0336,-71.0338,-71.034,-71.0355",72,1
-source,String,true,,Citizens Connect App,Self Service,,Unsorted,12,20,,0,,0,,,,,,,,,,,4,Citizens Connect App,1,56,Self Service,1,3
+field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,sum_length,avg_length,mean,nullcount,max_precision,sparsity,mad,lower_outer_fence,lower_inner_fence,q1,q2_median,q3,iqr,upper_inner_fence,upper_outer_fence,skewness,cardinality,mode,mode_count,mode_occurrences,antimode,antimode_count,antimode_occurrences
+case_enquiry_id,Integer,,10100411645180,101004113298,101004155594,42296,Unsorted,12,12,1200,12,101004116451.8,0,,0,673,101004109567,101004111646,101004113725,101004114353,101004115111,1386,101004117190,101004119269,0.0938,100,,0,0,*ALL,0,1
+open_dt,Date,,,2022-01-01,2022-01-31,30,Unsorted,,,,,2022-01-03,0,,0,1,2021-12-26,2021-12-29,2022-01-01,2022-01-03,2022-01-03,2,2022-01-06,2022-01-09,-1,10,2022-01-03,1,38,"2022-01-06,2022-01-08,2022-01-19,2022-01-21",4,1
+target_dt,Date,,,2022-01-03,2022-05-20,137,Unsorted,,,,,2022-01-16,11,,0.11,1,2021-11-26,2021-12-15,2022-01-04,2022-01-05,2022-01-17,13,2022-02-05,2022-02-25,0.8462,22,2022-01-04,1,37,"2022-01-11,2022-01-19,2022-02-04,2022-02-14,2022-02-17,2022-03-02,2022-03-10,2022-04-01,2022-05-20",9,1
+closed_dt,Date,,,2022-01-01,2022-04-25,114,Unsorted,,,,,2022-01-07,15,,0.15,1,2021-12-31,2022-01-01,2022-01-03,2022-01-03,2022-01-04,1,2022-01-05,2022-01-07,1,18,2022-01-03,1,35,"2022-01-07,2022-01-09,2022-01-13,2022-01-19,2022-02-12,2022-02-28,2022-03-09,2022-04-25",8,1
+ontime,String,true,,ONTIME,OVERDUE,,Unsorted,6,7,617,6.17,,0,,0,,,,,,,,,,,2,ONTIME,1,83,OVERDUE,1,17
+case_status,String,true,,Closed,Open,,Unsorted,4,6,570,5.7,,0,,0,,,,,,,,,,,2,Closed,1,85,Open,1,15
+closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,Unsorted,1,284,8314,83.14,,0,,0,,,,,,,,,,,86, ,1,15,"*PREVIEW: Case Closed Case Resolved  NEW CART#21026466 DELV ON 1/11/22  ,Case Closed Case Resolved  ...",85,1
+case_title,String,true,,Abandoned Vehicles,Traffic Signal Inspection,,Unsorted,10,57,2386,23.86,,0,,0,,,,,,,,,,,42,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,BTDT: Complaint,City/State Snow Issues,DISPATCHED Short Term Rental...",24,1
+subject,String,true,,Animal Control,Transportation - Traffic Division,,Unsorted,14,33,2570,25.7,,0,,0,,,,,,,,,,,9,Public Works Department,1,51,"Animal Control,Boston Police Department,Boston Water & Sewer Commission",3,1
+reason,String,true,,Administrative & General Requests,Street Lights,,Unsorted,7,33,1892,18.92,,0,,0,,,,,,,,,,,20,Enforcement & Abandoned Vehicles,1,23,"Administrative & General Requests,Animal Issues,Building,Employee & General Comments,Noise Disturban...",7,1
+type,String,true,,Abandoned Vehicles,Unsatisfactory Utilities - Electrical  Plumbing,,Unsorted,10,47,2266,22.66,,0,,0,,,,,,,,,,,36,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,City/State Snow Issues,Electrical,General Comments For a Program or...",15,1
+queue,String,true,,BTDT_AVRS Interface Queue,PWDx_Street Light_General Lighting Request,,Unsorted,13,55,2802,28.02,,0,,0,,,,,,,,,,,35,BTDT_Parking Enforcement,1,21,"*PREVIEW: BTDT_BostonBikes,BTDT_Engineering_New Sign and Pavement Marking Requests,BTDT_Sign Shop_Si...",15,1
+department,String,true,,BTDT,PWDx,,Unsorted,3,4,392,3.92,,0,,0,,,,,,,,,,,7,PWDx,1,49,GEN_,1,2
+submittedphoto,String,true,,https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,https://311.boston.gov/media/boston/report/photos/61d75bba05bbcf180c2d41de/report.jpg,,Unsorted,0,100,3633,36.33,,58,,0.58,,,,,,,,,,,43,,1,58,"*PREVIEW: https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,http...",42,1
+closedphoto,NULL,,,,,,,0,0,,,,100,,1,,,,,,,,,,,1,,1,100,,0,0
+location,String,true,, ,INTERSECTION of Verdun St & Gallivan Blvd  Dorchester  MA  ,,Unsorted,1,63,3938,39.38,,0,,0,,,,,,,,,,,98,"563 Columbus Ave  Roxbury  MA  02118,INTERSECTION of Gallivan Blvd & Washington St  Dorchester  MA  ",2,2,"*PREVIEW:  ,103 N Beacon St  Brighton  MA  02135,11 Aberdeen St  Boston  MA  02215,1148 Hyde Park Av...",96,1
+fire_district,String,true,, ,9,,Unsorted,1,2,113,1.13,,0,,0,,,,,,,,,,,10,3,1,19, ,1,1
+pwd_district,String,true,, ,1C,,Unsorted,1,3,209,2.09,,0,,0,,,,,,,,,,,14,1B,1,16, ,1,1
+city_council_district,String,true,, ,9,,Unsorted,1,1,100,1,,0,,0,,,,,,,,,,,10,1,1,22, ,1,1
+police_district,String,true,, ,E5,,Unsorted,1,3,223,2.23,,0,,0,,,,,,,,,,,13,A1,1,20, ,1,1
+neighborhood,String,true,, ,West Roxbury,,Unsorted,1,38,1486,14.86,,0,,0,,,,,,,,,,,19,Dorchester,1,15," ,Brighton,Mission Hill",3,1
+neighborhood_services_district,String,true,, ,9,,Unsorted,1,2,139,1.39,,0,,0,,,,,,,,,,,16,3,1,15," ,12",2,1
+ward,String,true,, ,Ward 9,,Unsorted,1,7,499,4.99,,0,,0,,,,,,,,,,,42,Ward 3,1,10,"*PREVIEW:  ,01,02,04,06,07,1,10,16,18",23,1
+precinct,String,true,, ,2210,,Unsorted,0,4,393,3.93,,1,,0.01,,,,,,,,,,,76,0306,1,5,"*PREVIEW: NULL, ,0102,0105,0108,0109,0201,0204,0305,0307",61,1
+location_street_name,String,true,,103 N Beacon St,INTERSECTION Verdun St & Gallivan Blvd,,Unsorted,0,45,1800,18,,1,,0.01,,,,,,,,,,,97,"20 Washington St,563 Columbus Ave,INTERSECTION Gallivan Blvd & Washington St",3,2,"*PREVIEW: NULL,103 N Beacon St,11 Aberdeen St,1148 Hyde Park Ave,119 L St,12 Derne St,126 Elm St,127...",94,1
+location_zipcode,String,true,,02109,02215,,Unsorted,0,5,415,4.15,,17,,0.17,,,,,,,,,,,24,,1,17,"02126,02134,02210,02215",4,1
+latitude,Float,,4233.6674,42.2553,42.3806,0.1253,Unsorted,6,7,694,6.94,42.3367,0,4,0,0.0163,42.2034,42.2619,42.3204,42.3432,42.3594,0.039,42.4179,42.4764,-0.1667,78,42.3594,1,20,"*PREVIEW: 42.2553,42.2601,42.2609,42.2645,42.2674,42.2789,42.2797,42.2804,42.2821,42.2878",74,1
+longitude,Float,,-7107.2688,-71.1626,-71.0298,0.1328,Unsorted,6,8,791,7.91,-71.0727,0,4,0,0.0121,-71.1741,-71.1294,-71.0848,-71.0609,-71.055,0.0298,-71.0104,-70.9658,-0.6101,77,-71.0587,1,19,"*PREVIEW: -71.0298,-71.0301,-71.0309,-71.0323,-71.0325,-71.0329,-71.0336,-71.0338,-71.034,-71.0355",72,1
+source,String,true,,Citizens Connect App,Self Service,,Unsorted,12,20,1801,18.01,,0,,0,,,,,,,,,,,4,Citizens Connect App,1,56,Self Service,1,3
diff --git a/resources/test/boston311-100-everything-inferdates-defaultwhitelist-stats.csv b/resources/test/boston311-100-everything-inferdates-defaultwhitelist-stats.csv
index d66e410a7..e02ed8f88 100644
--- a/resources/test/boston311-100-everything-inferdates-defaultwhitelist-stats.csv
+++ b/resources/test/boston311-100-everything-inferdates-defaultwhitelist-stats.csv
@@ -1,30 +1,30 @@
-field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,mean,nullcount,max_precision,sparsity,mad,lower_outer_fence,lower_inner_fence,q1,q2_median,q3,iqr,upper_inner_fence,upper_outer_fence,skewness,cardinality,mode,mode_count,mode_occurrences,antimode,antimode_count,antimode_occurrences
-case_enquiry_id,Integer,,10100411645180,101004113298,101004155594,42296,Unsorted,12,12,101004116451.8,0,,0,673,101004109567,101004111646,101004113725,101004114353,101004115111,1386,101004117190,101004119269,0.0938,100,,0,0,*ALL,0,1
-open_dt,DateTime,,,2022-01-01T00:16:00+00:00,2022-01-31T11:46:00+00:00,30.47917,Unsorted,,,2022-01-04T07:07:45.050+00:00,0,,0,0.76261,2021-12-27T14:16:49+00:00,2021-12-30T06:00:07+00:00,2022-01-01T21:43:25+00:00,2022-01-03T07:02:14+00:00,2022-01-03T16:12:17+00:00,1.77005,2022-01-06T07:55:35+00:00,2022-01-08T23:38:53+00:00,-0.5684,100,,0,0,*ALL,0,1
-target_dt,String,true,,2022-01-03 10:32:34,2022-05-20 13:03:21,,Unsorted,0,19,,11,,0.11,,,,,,,,,,,42,2022-01-04 08:30:00,1,25,"*PREVIEW: 2022-01-03 10:32:34,2022-01-03 11:58:12,2022-01-04 09:58:36,2022-01-04 10:41:29,2022-01-04...",34,1
-closed_dt,DateTime,,,2022-01-01T12:56:14+00:00,2022-04-25T14:30:31+00:00,114.06547,Unsorted,,,2022-01-08T01:10:44.411+00:00,15,,0.15,0.77213,2021-12-29T15:13:29+00:00,2021-12-31T19:50:08.750+00:00,2022-01-03T00:26:48.500+00:00,2022-01-03T12:15:23+00:00,2022-01-04T11:31:15+00:00,1.46142,2022-01-06T16:07:54.750+00:00,2022-01-08T20:44:34.500+00:00,0.3266,86,,1,15,"*PREVIEW: 2022-01-01 12:56:14,2022-01-01 14:17:15,2022-01-01 14:59:41,2022-01-01 15:10:16,2022-01-01...",85,1
-ontime,String,true,,ONTIME,OVERDUE,,Unsorted,6,7,,0,,0,,,,,,,,,,,2,ONTIME,1,83,OVERDUE,1,17
-case_status,String,true,,Closed,Open,,Unsorted,4,6,,0,,0,,,,,,,,,,,2,Closed,1,85,Open,1,15
-closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,Unsorted,1,284,,0,,0,,,,,,,,,,,86, ,1,15,"*PREVIEW: Case Closed Case Resolved  NEW CART#21026466 DELV ON 1/11/22  ,Case Closed Case Resolved  ...",85,1
-case_title,String,true,,Abandoned Vehicles,Traffic Signal Inspection,,Unsorted,10,57,,0,,0,,,,,,,,,,,42,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,BTDT: Complaint,City/State Snow Issues,DISPATCHED Short Term Rental...",24,1
-subject,String,true,,Animal Control,Transportation - Traffic Division,,Unsorted,14,33,,0,,0,,,,,,,,,,,9,Public Works Department,1,51,"Animal Control,Boston Police Department,Boston Water & Sewer Commission",3,1
-reason,String,true,,Administrative & General Requests,Street Lights,,Unsorted,7,33,,0,,0,,,,,,,,,,,20,Enforcement & Abandoned Vehicles,1,23,"Administrative & General Requests,Animal Issues,Building,Employee & General Comments,Noise Disturban...",7,1
-type,String,true,,Abandoned Vehicles,Unsatisfactory Utilities - Electrical  Plumbing,,Unsorted,10,47,,0,,0,,,,,,,,,,,36,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,City/State Snow Issues,Electrical,General Comments For a Program or...",15,1
-queue,String,true,,BTDT_AVRS Interface Queue,PWDx_Street Light_General Lighting Request,,Unsorted,13,55,,0,,0,,,,,,,,,,,35,BTDT_Parking Enforcement,1,21,"*PREVIEW: BTDT_BostonBikes,BTDT_Engineering_New Sign and Pavement Marking Requests,BTDT_Sign Shop_Si...",15,1
-department,String,true,,BTDT,PWDx,,Unsorted,3,4,,0,,0,,,,,,,,,,,7,PWDx,1,49,GEN_,1,2
-submittedphoto,String,true,,https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,https://311.boston.gov/media/boston/report/photos/61d75bba05bbcf180c2d41de/report.jpg,,Unsorted,0,100,,58,,0.58,,,,,,,,,,,43,,1,58,"*PREVIEW: https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,http...",42,1
-closedphoto,NULL,,,,,,,0,0,,100,,1,,,,,,,,,,,1,,1,100,,0,0
-location,String,true,, ,INTERSECTION of Verdun St & Gallivan Blvd  Dorchester  MA  ,,Unsorted,1,63,,0,,0,,,,,,,,,,,98,"563 Columbus Ave  Roxbury  MA  02118,INTERSECTION of Gallivan Blvd & Washington St  Dorchester  MA  ",2,2,"*PREVIEW:  ,103 N Beacon St  Brighton  MA  02135,11 Aberdeen St  Boston  MA  02215,1148 Hyde Park Av...",96,1
-fire_district,String,true,, ,9,,Unsorted,1,2,,0,,0,,,,,,,,,,,10,3,1,19, ,1,1
-pwd_district,String,true,, ,1C,,Unsorted,1,3,,0,,0,,,,,,,,,,,14,1B,1,16, ,1,1
-city_council_district,String,true,, ,9,,Unsorted,1,1,,0,,0,,,,,,,,,,,10,1,1,22, ,1,1
-police_district,String,true,, ,E5,,Unsorted,1,3,,0,,0,,,,,,,,,,,13,A1,1,20, ,1,1
-neighborhood,String,true,, ,West Roxbury,,Unsorted,1,38,,0,,0,,,,,,,,,,,19,Dorchester,1,15," ,Brighton,Mission Hill",3,1
-neighborhood_services_district,String,true,, ,9,,Unsorted,1,2,,0,,0,,,,,,,,,,,16,3,1,15," ,12",2,1
-ward,String,true,, ,Ward 9,,Unsorted,1,7,,0,,0,,,,,,,,,,,42,Ward 3,1,10,"*PREVIEW:  ,01,02,04,06,07,1,10,16,18",23,1
-precinct,String,true,, ,2210,,Unsorted,0,4,,1,,0.01,,,,,,,,,,,76,0306,1,5,"*PREVIEW: NULL, ,0102,0105,0108,0109,0201,0204,0305,0307",61,1
-location_street_name,String,true,,103 N Beacon St,INTERSECTION Verdun St & Gallivan Blvd,,Unsorted,0,45,,1,,0.01,,,,,,,,,,,97,"20 Washington St,563 Columbus Ave,INTERSECTION Gallivan Blvd & Washington St",3,2,"*PREVIEW: NULL,103 N Beacon St,11 Aberdeen St,1148 Hyde Park Ave,119 L St,12 Derne St,126 Elm St,127...",94,1
-location_zipcode,String,true,,02109,02215,,Unsorted,0,5,,17,,0.17,,,,,,,,,,,24,,1,17,"02126,02134,02210,02215",4,1
-latitude,Float,,4233.6674,42.2553,42.3806,0.1253,Unsorted,6,7,42.3367,0,4,0,0.0163,42.2034,42.2619,42.3204,42.3432,42.3594,0.039,42.4179,42.4764,-0.1667,78,42.3594,1,20,"*PREVIEW: 42.2553,42.2601,42.2609,42.2645,42.2674,42.2789,42.2797,42.2804,42.2821,42.2878",74,1
-longitude,Float,,-7107.2688,-71.1626,-71.0298,0.1328,Unsorted,6,8,-71.0727,0,4,0,0.0121,-71.1741,-71.1294,-71.0848,-71.0609,-71.055,0.0298,-71.0104,-70.9658,-0.6101,77,-71.0587,1,19,"*PREVIEW: -71.0298,-71.0301,-71.0309,-71.0323,-71.0325,-71.0329,-71.0336,-71.0338,-71.034,-71.0355",72,1
-source,String,true,,Citizens Connect App,Self Service,,Unsorted,12,20,,0,,0,,,,,,,,,,,4,Citizens Connect App,1,56,Self Service,1,3
+field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,sum_length,avg_length,mean,nullcount,max_precision,sparsity,mad,lower_outer_fence,lower_inner_fence,q1,q2_median,q3,iqr,upper_inner_fence,upper_outer_fence,skewness,cardinality,mode,mode_count,mode_occurrences,antimode,antimode_count,antimode_occurrences
+case_enquiry_id,Integer,,10100411645180,101004113298,101004155594,42296,Unsorted,12,12,1200,12,101004116451.8,0,,0,673,101004109567,101004111646,101004113725,101004114353,101004115111,1386,101004117190,101004119269,0.0938,100,,0,0,*ALL,0,1
+open_dt,DateTime,,,2022-01-01T00:16:00+00:00,2022-01-31T11:46:00+00:00,30.47917,Unsorted,,,,,2022-01-04T07:07:45.050+00:00,0,,0,0.76261,2021-12-27T14:16:49+00:00,2021-12-30T06:00:07+00:00,2022-01-01T21:43:25+00:00,2022-01-03T07:02:14+00:00,2022-01-03T16:12:17+00:00,1.77005,2022-01-06T07:55:35+00:00,2022-01-08T23:38:53+00:00,-0.5684,100,,0,0,*ALL,0,1
+target_dt,String,true,,2022-01-03 10:32:34,2022-05-20 13:03:21,,Unsorted,0,19,1691,16.91,,11,,0.11,,,,,,,,,,,42,2022-01-04 08:30:00,1,25,"*PREVIEW: 2022-01-03 10:32:34,2022-01-03 11:58:12,2022-01-04 09:58:36,2022-01-04 10:41:29,2022-01-04...",34,1
+closed_dt,DateTime,,,2022-01-01T12:56:14+00:00,2022-04-25T14:30:31+00:00,114.06547,Unsorted,,,,,2022-01-08T01:10:44.411+00:00,15,,0.15,0.77213,2021-12-29T15:13:29+00:00,2021-12-31T19:50:08.750+00:00,2022-01-03T00:26:48.500+00:00,2022-01-03T12:15:23+00:00,2022-01-04T11:31:15+00:00,1.46142,2022-01-06T16:07:54.750+00:00,2022-01-08T20:44:34.500+00:00,0.3266,86,,1,15,"*PREVIEW: 2022-01-01 12:56:14,2022-01-01 14:17:15,2022-01-01 14:59:41,2022-01-01 15:10:16,2022-01-01...",85,1
+ontime,String,true,,ONTIME,OVERDUE,,Unsorted,6,7,617,6.17,,0,,0,,,,,,,,,,,2,ONTIME,1,83,OVERDUE,1,17
+case_status,String,true,,Closed,Open,,Unsorted,4,6,570,5.7,,0,,0,,,,,,,,,,,2,Closed,1,85,Open,1,15
+closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,Unsorted,1,284,8314,83.14,,0,,0,,,,,,,,,,,86, ,1,15,"*PREVIEW: Case Closed Case Resolved  NEW CART#21026466 DELV ON 1/11/22  ,Case Closed Case Resolved  ...",85,1
+case_title,String,true,,Abandoned Vehicles,Traffic Signal Inspection,,Unsorted,10,57,2386,23.86,,0,,0,,,,,,,,,,,42,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,BTDT: Complaint,City/State Snow Issues,DISPATCHED Short Term Rental...",24,1
+subject,String,true,,Animal Control,Transportation - Traffic Division,,Unsorted,14,33,2570,25.7,,0,,0,,,,,,,,,,,9,Public Works Department,1,51,"Animal Control,Boston Police Department,Boston Water & Sewer Commission",3,1
+reason,String,true,,Administrative & General Requests,Street Lights,,Unsorted,7,33,1892,18.92,,0,,0,,,,,,,,,,,20,Enforcement & Abandoned Vehicles,1,23,"Administrative & General Requests,Animal Issues,Building,Employee & General Comments,Noise Disturban...",7,1
+type,String,true,,Abandoned Vehicles,Unsatisfactory Utilities - Electrical  Plumbing,,Unsorted,10,47,2266,22.66,,0,,0,,,,,,,,,,,36,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,City/State Snow Issues,Electrical,General Comments For a Program or...",15,1
+queue,String,true,,BTDT_AVRS Interface Queue,PWDx_Street Light_General Lighting Request,,Unsorted,13,55,2802,28.02,,0,,0,,,,,,,,,,,35,BTDT_Parking Enforcement,1,21,"*PREVIEW: BTDT_BostonBikes,BTDT_Engineering_New Sign and Pavement Marking Requests,BTDT_Sign Shop_Si...",15,1
+department,String,true,,BTDT,PWDx,,Unsorted,3,4,392,3.92,,0,,0,,,,,,,,,,,7,PWDx,1,49,GEN_,1,2
+submittedphoto,String,true,,https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,https://311.boston.gov/media/boston/report/photos/61d75bba05bbcf180c2d41de/report.jpg,,Unsorted,0,100,3633,36.33,,58,,0.58,,,,,,,,,,,43,,1,58,"*PREVIEW: https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,http...",42,1
+closedphoto,NULL,,,,,,,0,0,,,,100,,1,,,,,,,,,,,1,,1,100,,0,0
+location,String,true,, ,INTERSECTION of Verdun St & Gallivan Blvd  Dorchester  MA  ,,Unsorted,1,63,3938,39.38,,0,,0,,,,,,,,,,,98,"563 Columbus Ave  Roxbury  MA  02118,INTERSECTION of Gallivan Blvd & Washington St  Dorchester  MA  ",2,2,"*PREVIEW:  ,103 N Beacon St  Brighton  MA  02135,11 Aberdeen St  Boston  MA  02215,1148 Hyde Park Av...",96,1
+fire_district,String,true,, ,9,,Unsorted,1,2,113,1.13,,0,,0,,,,,,,,,,,10,3,1,19, ,1,1
+pwd_district,String,true,, ,1C,,Unsorted,1,3,209,2.09,,0,,0,,,,,,,,,,,14,1B,1,16, ,1,1
+city_council_district,String,true,, ,9,,Unsorted,1,1,100,1,,0,,0,,,,,,,,,,,10,1,1,22, ,1,1
+police_district,String,true,, ,E5,,Unsorted,1,3,223,2.23,,0,,0,,,,,,,,,,,13,A1,1,20, ,1,1
+neighborhood,String,true,, ,West Roxbury,,Unsorted,1,38,1486,14.86,,0,,0,,,,,,,,,,,19,Dorchester,1,15," ,Brighton,Mission Hill",3,1
+neighborhood_services_district,String,true,, ,9,,Unsorted,1,2,139,1.39,,0,,0,,,,,,,,,,,16,3,1,15," ,12",2,1
+ward,String,true,, ,Ward 9,,Unsorted,1,7,499,4.99,,0,,0,,,,,,,,,,,42,Ward 3,1,10,"*PREVIEW:  ,01,02,04,06,07,1,10,16,18",23,1
+precinct,String,true,, ,2210,,Unsorted,0,4,393,3.93,,1,,0.01,,,,,,,,,,,76,0306,1,5,"*PREVIEW: NULL, ,0102,0105,0108,0109,0201,0204,0305,0307",61,1
+location_street_name,String,true,,103 N Beacon St,INTERSECTION Verdun St & Gallivan Blvd,,Unsorted,0,45,1800,18,,1,,0.01,,,,,,,,,,,97,"20 Washington St,563 Columbus Ave,INTERSECTION Gallivan Blvd & Washington St",3,2,"*PREVIEW: NULL,103 N Beacon St,11 Aberdeen St,1148 Hyde Park Ave,119 L St,12 Derne St,126 Elm St,127...",94,1
+location_zipcode,String,true,,02109,02215,,Unsorted,0,5,415,4.15,,17,,0.17,,,,,,,,,,,24,,1,17,"02126,02134,02210,02215",4,1
+latitude,Float,,4233.6674,42.2553,42.3806,0.1253,Unsorted,6,7,694,6.94,42.3367,0,4,0,0.0163,42.2034,42.2619,42.3204,42.3432,42.3594,0.039,42.4179,42.4764,-0.1667,78,42.3594,1,20,"*PREVIEW: 42.2553,42.2601,42.2609,42.2645,42.2674,42.2789,42.2797,42.2804,42.2821,42.2878",74,1
+longitude,Float,,-7107.2688,-71.1626,-71.0298,0.1328,Unsorted,6,8,791,7.91,-71.0727,0,4,0,0.0121,-71.1741,-71.1294,-71.0848,-71.0609,-71.055,0.0298,-71.0104,-70.9658,-0.6101,77,-71.0587,1,19,"*PREVIEW: -71.0298,-71.0301,-71.0309,-71.0323,-71.0325,-71.0329,-71.0336,-71.0338,-71.034,-71.0355",72,1
+source,String,true,,Citizens Connect App,Self Service,,Unsorted,12,20,1801,18.01,,0,,0,,,,,,,,,,,4,Citizens Connect App,1,56,Self Service,1,3
diff --git a/resources/test/boston311-100-everything-nodate-stats.csv b/resources/test/boston311-100-everything-nodate-stats.csv
index 4a43a9601..352c27d20 100644
--- a/resources/test/boston311-100-everything-nodate-stats.csv
+++ b/resources/test/boston311-100-everything-nodate-stats.csv
@@ -1,30 +1,30 @@
-field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,mean,nullcount,max_precision,sparsity,mad,lower_outer_fence,lower_inner_fence,q1,q2_median,q3,iqr,upper_inner_fence,upper_outer_fence,skewness,cardinality,mode,mode_count,mode_occurrences,antimode,antimode_count,antimode_occurrences
-case_enquiry_id,Integer,,10100411645180,101004113298,101004155594,42296,Unsorted,12,12,101004116451.8,0,,0,673,101004109567,101004111646,101004113725,101004114353,101004115111,1386,101004117190,101004119269,0.0938,100,,0,0,*ALL,0,1
-open_dt,String,true,,2022-01-01 00:16:00,2022-01-31 11:46:00,,Unsorted,19,19,,0,,0,,,,,,,,,,,100,,0,0,*ALL,0,1
-target_dt,String,true,,2022-01-03 10:32:34,2022-05-20 13:03:21,,Unsorted,0,19,,11,,0.11,,,,,,,,,,,42,2022-01-04 08:30:00,1,25,"*PREVIEW: 2022-01-03 10:32:34,2022-01-03 11:58:12,2022-01-04 09:58:36,2022-01-04 10:41:29,2022-01-04...",34,1
-closed_dt,String,true,,2022-01-01 12:56:14,2022-04-25 14:30:31,,Unsorted,0,19,,15,,0.15,,,,,,,,,,,86,,1,15,"*PREVIEW: 2022-01-01 12:56:14,2022-01-01 14:17:15,2022-01-01 14:59:41,2022-01-01 15:10:16,2022-01-01...",85,1
-ontime,String,true,,ONTIME,OVERDUE,,Unsorted,6,7,,0,,0,,,,,,,,,,,2,ONTIME,1,83,OVERDUE,1,17
-case_status,String,true,,Closed,Open,,Unsorted,4,6,,0,,0,,,,,,,,,,,2,Closed,1,85,Open,1,15
-closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,Unsorted,1,284,,0,,0,,,,,,,,,,,86, ,1,15,"*PREVIEW: Case Closed Case Resolved  NEW CART#21026466 DELV ON 1/11/22  ,Case Closed Case Resolved  ...",85,1
-case_title,String,true,,Abandoned Vehicles,Traffic Signal Inspection,,Unsorted,10,57,,0,,0,,,,,,,,,,,42,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,BTDT: Complaint,City/State Snow Issues,DISPATCHED Short Term Rental...",24,1
-subject,String,true,,Animal Control,Transportation - Traffic Division,,Unsorted,14,33,,0,,0,,,,,,,,,,,9,Public Works Department,1,51,"Animal Control,Boston Police Department,Boston Water & Sewer Commission",3,1
-reason,String,true,,Administrative & General Requests,Street Lights,,Unsorted,7,33,,0,,0,,,,,,,,,,,20,Enforcement & Abandoned Vehicles,1,23,"Administrative & General Requests,Animal Issues,Building,Employee & General Comments,Noise Disturban...",7,1
-type,String,true,,Abandoned Vehicles,Unsatisfactory Utilities - Electrical  Plumbing,,Unsorted,10,47,,0,,0,,,,,,,,,,,36,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,City/State Snow Issues,Electrical,General Comments For a Program or...",15,1
-queue,String,true,,BTDT_AVRS Interface Queue,PWDx_Street Light_General Lighting Request,,Unsorted,13,55,,0,,0,,,,,,,,,,,35,BTDT_Parking Enforcement,1,21,"*PREVIEW: BTDT_BostonBikes,BTDT_Engineering_New Sign and Pavement Marking Requests,BTDT_Sign Shop_Si...",15,1
-department,String,true,,BTDT,PWDx,,Unsorted,3,4,,0,,0,,,,,,,,,,,7,PWDx,1,49,GEN_,1,2
-submittedphoto,String,true,,https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,https://311.boston.gov/media/boston/report/photos/61d75bba05bbcf180c2d41de/report.jpg,,Unsorted,0,100,,58,,0.58,,,,,,,,,,,43,,1,58,"*PREVIEW: https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,http...",42,1
-closedphoto,NULL,,,,,,,0,0,,100,,1,,,,,,,,,,,1,,1,100,,0,0
-location,String,true,, ,INTERSECTION of Verdun St & Gallivan Blvd  Dorchester  MA  ,,Unsorted,1,63,,0,,0,,,,,,,,,,,98,"563 Columbus Ave  Roxbury  MA  02118,INTERSECTION of Gallivan Blvd & Washington St  Dorchester  MA  ",2,2,"*PREVIEW:  ,103 N Beacon St  Brighton  MA  02135,11 Aberdeen St  Boston  MA  02215,1148 Hyde Park Av...",96,1
-fire_district,String,true,, ,9,,Unsorted,1,2,,0,,0,,,,,,,,,,,10,3,1,19, ,1,1
-pwd_district,String,true,, ,1C,,Unsorted,1,3,,0,,0,,,,,,,,,,,14,1B,1,16, ,1,1
-city_council_district,String,true,, ,9,,Unsorted,1,1,,0,,0,,,,,,,,,,,10,1,1,22, ,1,1
-police_district,String,true,, ,E5,,Unsorted,1,3,,0,,0,,,,,,,,,,,13,A1,1,20, ,1,1
-neighborhood,String,true,, ,West Roxbury,,Unsorted,1,38,,0,,0,,,,,,,,,,,19,Dorchester,1,15," ,Brighton,Mission Hill",3,1
-neighborhood_services_district,String,true,, ,9,,Unsorted,1,2,,0,,0,,,,,,,,,,,16,3,1,15," ,12",2,1
-ward,String,true,, ,Ward 9,,Unsorted,1,7,,0,,0,,,,,,,,,,,42,Ward 3,1,10,"*PREVIEW:  ,01,02,04,06,07,1,10,16,18",23,1
-precinct,String,true,, ,2210,,Unsorted,0,4,,1,,0.01,,,,,,,,,,,76,0306,1,5,"*PREVIEW: NULL, ,0102,0105,0108,0109,0201,0204,0305,0307",61,1
-location_street_name,String,true,,103 N Beacon St,INTERSECTION Verdun St & Gallivan Blvd,,Unsorted,0,45,,1,,0.01,,,,,,,,,,,97,"20 Washington St,563 Columbus Ave,INTERSECTION Gallivan Blvd & Washington St",3,2,"*PREVIEW: NULL,103 N Beacon St,11 Aberdeen St,1148 Hyde Park Ave,119 L St,12 Derne St,126 Elm St,127...",94,1
-location_zipcode,String,true,,02109,02215,,Unsorted,0,5,,17,,0.17,,,,,,,,,,,24,,1,17,"02126,02134,02210,02215",4,1
-latitude,Float,,4233.6674,42.2553,42.3806,0.1253,Unsorted,6,7,42.3367,0,4,0,0.0163,42.2034,42.2619,42.3204,42.3432,42.3594,0.039,42.4179,42.4764,-0.1667,78,42.3594,1,20,"*PREVIEW: 42.2553,42.2601,42.2609,42.2645,42.2674,42.2789,42.2797,42.2804,42.2821,42.2878",74,1
-longitude,Float,,-7107.2688,-71.1626,-71.0298,0.1328,Unsorted,6,8,-71.0727,0,4,0,0.0121,-71.1741,-71.1294,-71.0848,-71.0609,-71.055,0.0298,-71.0104,-70.9658,-0.6101,77,-71.0587,1,19,"*PREVIEW: -71.0298,-71.0301,-71.0309,-71.0323,-71.0325,-71.0329,-71.0336,-71.0338,-71.034,-71.0355",72,1
-source,String,true,,Citizens Connect App,Self Service,,Unsorted,12,20,,0,,0,,,,,,,,,,,4,Citizens Connect App,1,56,Self Service,1,3
+field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,sum_length,avg_length,mean,nullcount,max_precision,sparsity,mad,lower_outer_fence,lower_inner_fence,q1,q2_median,q3,iqr,upper_inner_fence,upper_outer_fence,skewness,cardinality,mode,mode_count,mode_occurrences,antimode,antimode_count,antimode_occurrences
+case_enquiry_id,Integer,,10100411645180,101004113298,101004155594,42296,Unsorted,12,12,1200,12,101004116451.8,0,,0,673,101004109567,101004111646,101004113725,101004114353,101004115111,1386,101004117190,101004119269,0.0938,100,,0,0,*ALL,0,1
+open_dt,String,true,,2022-01-01 00:16:00,2022-01-31 11:46:00,,Unsorted,19,19,1900,19,,0,,0,,,,,,,,,,,100,,0,0,*ALL,0,1
+target_dt,String,true,,2022-01-03 10:32:34,2022-05-20 13:03:21,,Unsorted,0,19,1691,16.91,,11,,0.11,,,,,,,,,,,42,2022-01-04 08:30:00,1,25,"*PREVIEW: 2022-01-03 10:32:34,2022-01-03 11:58:12,2022-01-04 09:58:36,2022-01-04 10:41:29,2022-01-04...",34,1
+closed_dt,String,true,,2022-01-01 12:56:14,2022-04-25 14:30:31,,Unsorted,0,19,1615,16.15,,15,,0.15,,,,,,,,,,,86,,1,15,"*PREVIEW: 2022-01-01 12:56:14,2022-01-01 14:17:15,2022-01-01 14:59:41,2022-01-01 15:10:16,2022-01-01...",85,1
+ontime,String,true,,ONTIME,OVERDUE,,Unsorted,6,7,617,6.17,,0,,0,,,,,,,,,,,2,ONTIME,1,83,OVERDUE,1,17
+case_status,String,true,,Closed,Open,,Unsorted,4,6,570,5.7,,0,,0,,,,,,,,,,,2,Closed,1,85,Open,1,15
+closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,Unsorted,1,284,8314,83.14,,0,,0,,,,,,,,,,,86, ,1,15,"*PREVIEW: Case Closed Case Resolved  NEW CART#21026466 DELV ON 1/11/22  ,Case Closed Case Resolved  ...",85,1
+case_title,String,true,,Abandoned Vehicles,Traffic Signal Inspection,,Unsorted,10,57,2386,23.86,,0,,0,,,,,,,,,,,42,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,BTDT: Complaint,City/State Snow Issues,DISPATCHED Short Term Rental...",24,1
+subject,String,true,,Animal Control,Transportation - Traffic Division,,Unsorted,14,33,2570,25.7,,0,,0,,,,,,,,,,,9,Public Works Department,1,51,"Animal Control,Boston Police Department,Boston Water & Sewer Commission",3,1
+reason,String,true,,Administrative & General Requests,Street Lights,,Unsorted,7,33,1892,18.92,,0,,0,,,,,,,,,,,20,Enforcement & Abandoned Vehicles,1,23,"Administrative & General Requests,Animal Issues,Building,Employee & General Comments,Noise Disturban...",7,1
+type,String,true,,Abandoned Vehicles,Unsatisfactory Utilities - Electrical  Plumbing,,Unsorted,10,47,2266,22.66,,0,,0,,,,,,,,,,,36,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,City/State Snow Issues,Electrical,General Comments For a Program or...",15,1
+queue,String,true,,BTDT_AVRS Interface Queue,PWDx_Street Light_General Lighting Request,,Unsorted,13,55,2802,28.02,,0,,0,,,,,,,,,,,35,BTDT_Parking Enforcement,1,21,"*PREVIEW: BTDT_BostonBikes,BTDT_Engineering_New Sign and Pavement Marking Requests,BTDT_Sign Shop_Si...",15,1
+department,String,true,,BTDT,PWDx,,Unsorted,3,4,392,3.92,,0,,0,,,,,,,,,,,7,PWDx,1,49,GEN_,1,2
+submittedphoto,String,true,,https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,https://311.boston.gov/media/boston/report/photos/61d75bba05bbcf180c2d41de/report.jpg,,Unsorted,0,100,3633,36.33,,58,,0.58,,,,,,,,,,,43,,1,58,"*PREVIEW: https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,http...",42,1
+closedphoto,NULL,,,,,,,0,0,,,,100,,1,,,,,,,,,,,1,,1,100,,0,0
+location,String,true,, ,INTERSECTION of Verdun St & Gallivan Blvd  Dorchester  MA  ,,Unsorted,1,63,3938,39.38,,0,,0,,,,,,,,,,,98,"563 Columbus Ave  Roxbury  MA  02118,INTERSECTION of Gallivan Blvd & Washington St  Dorchester  MA  ",2,2,"*PREVIEW:  ,103 N Beacon St  Brighton  MA  02135,11 Aberdeen St  Boston  MA  02215,1148 Hyde Park Av...",96,1
+fire_district,String,true,, ,9,,Unsorted,1,2,113,1.13,,0,,0,,,,,,,,,,,10,3,1,19, ,1,1
+pwd_district,String,true,, ,1C,,Unsorted,1,3,209,2.09,,0,,0,,,,,,,,,,,14,1B,1,16, ,1,1
+city_council_district,String,true,, ,9,,Unsorted,1,1,100,1,,0,,0,,,,,,,,,,,10,1,1,22, ,1,1
+police_district,String,true,, ,E5,,Unsorted,1,3,223,2.23,,0,,0,,,,,,,,,,,13,A1,1,20, ,1,1
+neighborhood,String,true,, ,West Roxbury,,Unsorted,1,38,1486,14.86,,0,,0,,,,,,,,,,,19,Dorchester,1,15," ,Brighton,Mission Hill",3,1
+neighborhood_services_district,String,true,, ,9,,Unsorted,1,2,139,1.39,,0,,0,,,,,,,,,,,16,3,1,15," ,12",2,1
+ward,String,true,, ,Ward 9,,Unsorted,1,7,499,4.99,,0,,0,,,,,,,,,,,42,Ward 3,1,10,"*PREVIEW:  ,01,02,04,06,07,1,10,16,18",23,1
+precinct,String,true,, ,2210,,Unsorted,0,4,393,3.93,,1,,0.01,,,,,,,,,,,76,0306,1,5,"*PREVIEW: NULL, ,0102,0105,0108,0109,0201,0204,0305,0307",61,1
+location_street_name,String,true,,103 N Beacon St,INTERSECTION Verdun St & Gallivan Blvd,,Unsorted,0,45,1800,18,,1,,0.01,,,,,,,,,,,97,"20 Washington St,563 Columbus Ave,INTERSECTION Gallivan Blvd & Washington St",3,2,"*PREVIEW: NULL,103 N Beacon St,11 Aberdeen St,1148 Hyde Park Ave,119 L St,12 Derne St,126 Elm St,127...",94,1
+location_zipcode,String,true,,02109,02215,,Unsorted,0,5,415,4.15,,17,,0.17,,,,,,,,,,,24,,1,17,"02126,02134,02210,02215",4,1
+latitude,Float,,4233.6674,42.2553,42.3806,0.1253,Unsorted,6,7,694,6.94,42.3367,0,4,0,0.0163,42.2034,42.2619,42.3204,42.3432,42.3594,0.039,42.4179,42.4764,-0.1667,78,42.3594,1,20,"*PREVIEW: 42.2553,42.2601,42.2609,42.2645,42.2674,42.2789,42.2797,42.2804,42.2821,42.2878",74,1
+longitude,Float,,-7107.2688,-71.1626,-71.0298,0.1328,Unsorted,6,8,791,7.91,-71.0727,0,4,0,0.0121,-71.1741,-71.1294,-71.0848,-71.0609,-71.055,0.0298,-71.0104,-70.9658,-0.6101,77,-71.0587,1,19,"*PREVIEW: -71.0298,-71.0301,-71.0309,-71.0323,-71.0325,-71.0329,-71.0336,-71.0338,-71.034,-71.0355",72,1
+source,String,true,,Citizens Connect App,Self Service,,Unsorted,12,20,1801,18.01,,0,,0,,,,,,,,,,,4,Citizens Connect App,1,56,Self Service,1,3
diff --git a/resources/test/boston311-100-stats.csv b/resources/test/boston311-100-stats.csv
index 9f93a4dd7..9fd1af79d 100644
--- a/resources/test/boston311-100-stats.csv
+++ b/resources/test/boston311-100-stats.csv
@@ -1,30 +1,30 @@
-field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,mean,nullcount,max_precision,sparsity
-case_enquiry_id,Integer,,10100411645180,101004113298,101004155594,42296,Unsorted,12,12,101004116451.8,0,,0
-open_dt,DateTime,,,2022-01-01T00:16:00+00:00,2022-01-31T11:46:00+00:00,30.47917,Unsorted,,,2022-01-04T07:07:45.050+00:00,0,,0
-target_dt,DateTime,,,2022-01-03T10:32:34+00:00,2022-05-20T13:03:21+00:00,137.10471,Unsorted,,,2022-01-17T03:14:16.404+00:00,11,,0.11
-closed_dt,DateTime,,,2022-01-01T12:56:14+00:00,2022-04-25T14:30:31+00:00,114.06547,Unsorted,,,2022-01-08T01:10:44.411+00:00,15,,0.15
-ontime,String,true,,ONTIME,OVERDUE,,Unsorted,6,7,,0,,0
-case_status,String,true,,Closed,Open,,Unsorted,4,6,,0,,0
-closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,Unsorted,1,284,,0,,0
-case_title,String,true,,Abandoned Vehicles,Traffic Signal Inspection,,Unsorted,10,57,,0,,0
-subject,String,true,,Animal Control,Transportation - Traffic Division,,Unsorted,14,33,,0,,0
-reason,String,true,,Administrative & General Requests,Street Lights,,Unsorted,7,33,,0,,0
-type,String,true,,Abandoned Vehicles,Unsatisfactory Utilities - Electrical  Plumbing,,Unsorted,10,47,,0,,0
-queue,String,true,,BTDT_AVRS Interface Queue,PWDx_Street Light_General Lighting Request,,Unsorted,13,55,,0,,0
-department,String,true,,BTDT,PWDx,,Unsorted,3,4,,0,,0
-submittedphoto,String,true,,https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,https://311.boston.gov/media/boston/report/photos/61d75bba05bbcf180c2d41de/report.jpg,,Unsorted,0,100,,58,,0.58
-closedphoto,NULL,,,,,,,0,0,,100,,1
-location,String,true,, ,INTERSECTION of Verdun St & Gallivan Blvd  Dorchester  MA  ,,Unsorted,1,63,,0,,0
-fire_district,String,true,, ,9,,Unsorted,1,2,,0,,0
-pwd_district,String,true,, ,1C,,Unsorted,1,3,,0,,0
-city_council_district,String,true,, ,9,,Unsorted,1,1,,0,,0
-police_district,String,true,, ,E5,,Unsorted,1,3,,0,,0
-neighborhood,String,true,, ,West Roxbury,,Unsorted,1,38,,0,,0
-neighborhood_services_district,String,true,, ,9,,Unsorted,1,2,,0,,0
-ward,String,true,, ,Ward 9,,Unsorted,1,7,,0,,0
-precinct,String,true,, ,2210,,Unsorted,0,4,,1,,0.01
-location_street_name,String,true,,103 N Beacon St,INTERSECTION Verdun St & Gallivan Blvd,,Unsorted,0,45,,1,,0.01
-location_zipcode,String,true,,02109,02215,,Unsorted,0,5,,17,,0.17
-latitude,Float,,4233.6674,42.2553,42.3806,0.1253,Unsorted,6,7,42.3367,0,4,0
-longitude,Float,,-7107.2688,-71.1626,-71.0298,0.1328,Unsorted,6,8,-71.0727,0,4,0
-source,String,true,,Citizens Connect App,Self Service,,Unsorted,12,20,,0,,0
+field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,sum_length,avg_length,mean,nullcount,max_precision,sparsity
+case_enquiry_id,Integer,,10100411645180,101004113298,101004155594,42296,Unsorted,12,12,1200,12,101004116451.8,0,,0
+open_dt,DateTime,,,2022-01-01T00:16:00+00:00,2022-01-31T11:46:00+00:00,30.47917,Unsorted,,,,,2022-01-04T07:07:45.050+00:00,0,,0
+target_dt,DateTime,,,2022-01-03T10:32:34+00:00,2022-05-20T13:03:21+00:00,137.10471,Unsorted,,,,,2022-01-17T03:14:16.404+00:00,11,,0.11
+closed_dt,DateTime,,,2022-01-01T12:56:14+00:00,2022-04-25T14:30:31+00:00,114.06547,Unsorted,,,,,2022-01-08T01:10:44.411+00:00,15,,0.15
+ontime,String,true,,ONTIME,OVERDUE,,Unsorted,6,7,617,6.17,,0,,0
+case_status,String,true,,Closed,Open,,Unsorted,4,6,570,5.7,,0,,0
+closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,Unsorted,1,284,8314,83.14,,0,,0
+case_title,String,true,,Abandoned Vehicles,Traffic Signal Inspection,,Unsorted,10,57,2386,23.86,,0,,0
+subject,String,true,,Animal Control,Transportation - Traffic Division,,Unsorted,14,33,2570,25.7,,0,,0
+reason,String,true,,Administrative & General Requests,Street Lights,,Unsorted,7,33,1892,18.92,,0,,0
+type,String,true,,Abandoned Vehicles,Unsatisfactory Utilities - Electrical  Plumbing,,Unsorted,10,47,2266,22.66,,0,,0
+queue,String,true,,BTDT_AVRS Interface Queue,PWDx_Street Light_General Lighting Request,,Unsorted,13,55,2802,28.02,,0,,0
+department,String,true,,BTDT,PWDx,,Unsorted,3,4,392,3.92,,0,,0
+submittedphoto,String,true,,https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,https://311.boston.gov/media/boston/report/photos/61d75bba05bbcf180c2d41de/report.jpg,,Unsorted,0,100,3633,36.33,,58,,0.58
+closedphoto,NULL,,,,,,,0,0,,,,100,,1
+location,String,true,, ,INTERSECTION of Verdun St & Gallivan Blvd  Dorchester  MA  ,,Unsorted,1,63,3938,39.38,,0,,0
+fire_district,String,true,, ,9,,Unsorted,1,2,113,1.13,,0,,0
+pwd_district,String,true,, ,1C,,Unsorted,1,3,209,2.09,,0,,0
+city_council_district,String,true,, ,9,,Unsorted,1,1,100,1,,0,,0
+police_district,String,true,, ,E5,,Unsorted,1,3,223,2.23,,0,,0
+neighborhood,String,true,, ,West Roxbury,,Unsorted,1,38,1486,14.86,,0,,0
+neighborhood_services_district,String,true,, ,9,,Unsorted,1,2,139,1.39,,0,,0
+ward,String,true,, ,Ward 9,,Unsorted,1,7,499,4.99,,0,,0
+precinct,String,true,, ,2210,,Unsorted,0,4,393,3.93,,1,,0.01
+location_street_name,String,true,,103 N Beacon St,INTERSECTION Verdun St & Gallivan Blvd,,Unsorted,0,45,1800,18,,1,,0.01
+location_zipcode,String,true,,02109,02215,,Unsorted,0,5,415,4.15,,17,,0.17
+latitude,Float,,4233.6674,42.2553,42.3806,0.1253,Unsorted,6,7,694,6.94,42.3367,0,4,0
+longitude,Float,,-7107.2688,-71.1626,-71.0298,0.1328,Unsorted,6,8,791,7.91,-71.0727,0,4,0
+source,String,true,,Citizens Connect App,Self Service,,Unsorted,12,20,1801,18.01,,0,,0
diff --git a/resources/test/boston311-100-with-nonascii-stats.csv b/resources/test/boston311-100-with-nonascii-stats.csv
index 9afcba848..0fbd9baf6 100644
--- a/resources/test/boston311-100-with-nonascii-stats.csv
+++ b/resources/test/boston311-100-with-nonascii-stats.csv
@@ -1,30 +1,30 @@
-field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,mean,nullcount,max_precision,sparsity
-case_enquiry_id,Integer,,10100411645180,101004113298,101004155594,42296,Unsorted,12,12,101004116451.8,0,,0
-open_dt,String,true,,2022-01-01 00:16:00,2022-01-31 11:46:00,,Unsorted,19,19,,0,,0
-target_dt,String,true,,2022-01-03 10:32:34,2022-05-20 13:03:21,,Unsorted,0,19,,11,,0.11
-closed_dt,String,true,,2022-01-01 12:56:14,2022-04-25 14:30:31,,Unsorted,0,19,,15,,0.15
-ontime,String,true,,ONTIME,OVERDUE,,Unsorted,6,7,,0,,0
-case_status,String,true,,Closed,Open,,Unsorted,4,6,,0,,0
-closure_reason,String,false,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,Unsorted,1,284,,0,,0
-case_title,String,true,,Abandoned Vehicles,Traffic Signal Inspection,,Unsorted,10,57,,0,,0
-subject,String,true,,Animal Control,Transportation - Traffic Division,,Unsorted,14,33,,0,,0
-reason,String,true,,Administrative & General Requests,Street Lights,,Unsorted,7,33,,0,,0
-type,String,true,,Abandoned Vehicles,Unsatisfactory Utilities - Electrical  Plumbing,,Unsorted,10,47,,0,,0
-queue,String,true,,BTDT_AVRS Interface Queue,PWDx_Street Light_General Lighting Request,,Unsorted,13,55,,0,,0
-department,String,true,,BTDT,PWDx,,Unsorted,3,4,,0,,0
-submittedphoto,String,true,,https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,https://311.boston.gov/media/boston/report/photos/61d75bba05bbcf180c2d41de/report.jpg,,Unsorted,0,100,,58,,0.58
-closedphoto,NULL,,,,,,,0,0,,100,,1
-location,String,false,, ,INTERSECTION of Verdun St & Gallivan Blvd  Dorchester  MA  ,,Unsorted,1,63,,0,,0
-fire_district,String,true,, ,9,,Unsorted,1,2,,0,,0
-pwd_district,String,true,, ,1C,,Unsorted,1,3,,0,,0
-city_council_district,String,true,, ,9,,Unsorted,1,1,,0,,0
-police_district,String,true,, ,E5,,Unsorted,1,3,,0,,0
-neighborhood,String,true,, ,West Roxbury,,Unsorted,1,38,,0,,0
-neighborhood_services_district,String,true,, ,9,,Unsorted,1,2,,0,,0
-ward,String,true,, ,Ward 9,,Unsorted,1,7,,0,,0
-precinct,String,true,, ,2210,,Unsorted,0,4,,1,,0.01
-location_street_name,String,true,,103 N Beacon St,INTERSECTION Verdun St & Gallivan Blvd,,Unsorted,0,45,,1,,0.01
-location_zipcode,String,true,,02109,02215,,Unsorted,0,5,,17,,0.17
-latitude,Float,,4233.6674,42.2553,42.3806,0.1253,Unsorted,6,7,42.3367,0,4,0
-longitude,Float,,-7107.2688,-71.1626,-71.0298,0.1328,Unsorted,6,8,-71.0727,0,4,0
-source,String,true,,Citizens Connect App,Self Service,,Unsorted,12,20,,0,,0
+field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,sum_length,avg_length,mean,nullcount,max_precision,sparsity
+case_enquiry_id,Integer,,10100411645180,101004113298,101004155594,42296,Unsorted,12,12,1200,12,101004116451.8,0,,0
+open_dt,String,true,,2022-01-01 00:16:00,2022-01-31 11:46:00,,Unsorted,19,19,1900,19,,0,,0
+target_dt,String,true,,2022-01-03 10:32:34,2022-05-20 13:03:21,,Unsorted,0,19,1691,16.91,,11,,0.11
+closed_dt,String,true,,2022-01-01 12:56:14,2022-04-25 14:30:31,,Unsorted,0,19,1615,16.15,,15,,0.15
+ontime,String,true,,ONTIME,OVERDUE,,Unsorted,6,7,617,6.17,,0,,0
+case_status,String,true,,Closed,Open,,Unsorted,4,6,570,5.7,,0,,0
+closure_reason,String,false,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,Unsorted,1,284,8315,83.15,,0,,0
+case_title,String,true,,Abandoned Vehicles,Traffic Signal Inspection,,Unsorted,10,57,2386,23.86,,0,,0
+subject,String,true,,Animal Control,Transportation - Traffic Division,,Unsorted,14,33,2570,25.7,,0,,0
+reason,String,true,,Administrative & General Requests,Street Lights,,Unsorted,7,33,1892,18.92,,0,,0
+type,String,true,,Abandoned Vehicles,Unsatisfactory Utilities - Electrical  Plumbing,,Unsorted,10,47,2266,22.66,,0,,0
+queue,String,true,,BTDT_AVRS Interface Queue,PWDx_Street Light_General Lighting Request,,Unsorted,13,55,2802,28.02,,0,,0
+department,String,true,,BTDT,PWDx,,Unsorted,3,4,392,3.92,,0,,0
+submittedphoto,String,true,,https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,https://311.boston.gov/media/boston/report/photos/61d75bba05bbcf180c2d41de/report.jpg,,Unsorted,0,100,3633,36.33,,58,,0.58
+closedphoto,NULL,,,,,,,0,0,,,,100,,1
+location,String,false,, ,INTERSECTION of Verdun St & Gallivan Blvd  Dorchester  MA  ,,Unsorted,1,63,3939,39.39,,0,,0
+fire_district,String,true,, ,9,,Unsorted,1,2,113,1.13,,0,,0
+pwd_district,String,true,, ,1C,,Unsorted,1,3,209,2.09,,0,,0
+city_council_district,String,true,, ,9,,Unsorted,1,1,100,1,,0,,0
+police_district,String,true,, ,E5,,Unsorted,1,3,223,2.23,,0,,0
+neighborhood,String,true,, ,West Roxbury,,Unsorted,1,38,1486,14.86,,0,,0
+neighborhood_services_district,String,true,, ,9,,Unsorted,1,2,139,1.39,,0,,0
+ward,String,true,, ,Ward 9,,Unsorted,1,7,499,4.99,,0,,0
+precinct,String,true,, ,2210,,Unsorted,0,4,393,3.93,,1,,0.01
+location_street_name,String,true,,103 N Beacon St,INTERSECTION Verdun St & Gallivan Blvd,,Unsorted,0,45,1800,18,,1,,0.01
+location_zipcode,String,true,,02109,02215,,Unsorted,0,5,415,4.15,,17,,0.17
+latitude,Float,,4233.6674,42.2553,42.3806,0.1253,Unsorted,6,7,694,6.94,42.3367,0,4,0
+longitude,Float,,-7107.2688,-71.1626,-71.0298,0.1328,Unsorted,6,8,791,7.91,-71.0727,0,4,0
+source,String,true,,Citizens Connect App,Self Service,,Unsorted,12,20,1801,18.01,,0,,0
diff --git a/tests/test_index.rs b/tests/test_index.rs
index 1b62a63db..ab70f35eb 100644
--- a/tests/test_index.rs
+++ b/tests/test_index.rs
@@ -75,6 +75,8 @@ fn index_outdated_stats() {
             "sort_order",
             "min_length",
             "max_length",
+            "sum_length",
+            "avg_length",
             "mean",
             "sem",
             "stddev",
@@ -95,6 +97,8 @@ fn index_outdated_stats() {
             "Ascending",
             "1",
             "1",
+            "3",
+            "1",
             "",
             "",
             "",
@@ -115,6 +119,8 @@ fn index_outdated_stats() {
             "Descending",
             "1",
             "1",
+            "3",
+            "1",
             "2",
             "0.4714",
             "0.8165",
diff --git a/tests/test_stats.rs b/tests/test_stats.rs
index 802a2ed21..6790152ab 100644
--- a/tests/test_stats.rs
+++ b/tests/test_stats.rs
@@ -1197,6 +1197,8 @@ fn stats_zero_cv() {
             "sort_order",
             "min_length",
             "max_length",
+            "sum_length",
+            "avg_length",
             "mean",
             "sem",
             "stddev",
@@ -1217,6 +1219,8 @@ fn stats_zero_cv() {
             "Ascending",
             "1",
             "1",
+            "5",
+            "1",
             "3",
             "0.6325",
             "1.4142",
@@ -1237,6 +1241,8 @@ fn stats_zero_cv() {
             "Ascending",
             "1",
             "3",
+            "9",
+            "1.8",
             "0",
             "3.1623",
             "7.0711",
@@ -1257,6 +1263,8 @@ fn stats_zero_cv() {
             "Ascending",
             "3",
             "6",
+            "25",
+            "5",
             "0",
             "28.8472",
             "64.5043",
@@ -1267,8 +1275,8 @@ fn stats_zero_cv() {
             "0"
         ],
         svec![
-            "col4", "Integer", "", "935", "-900", "1000", "1900", "Unsorted", "1", "4", "187",
-            "304.3603", "680.5703", "463176", "363.9414", "0", "", "0"
+            "col4", "Integer", "", "935", "-900", "1000", "1900", "Unsorted", "1", "4", "14",
+            "2.8", "187", "304.3603", "680.5703", "463176", "363.9414", "0", "", "0"
         ],
     ];
     assert_eq!(got, expected);
@@ -1298,10 +1306,10 @@ fn stats_output_tab_delimited() {
     wrk.assert_success(&mut cmd);
 
     let got = std::fs::read_to_string(out_file).unwrap();
-    let expected = r#"field	type	is_ascii	sum	min	max	range	sort_order	min_length	max_length	mean	sem	stddev	variance	cv	nullcount	max_precision	sparsity
-col1	Integer		15	1	5	4	Ascending	1	1	3	0.6325	1.4142	2	47.1405	0		0
-col2	Integer		10644	0	4321	4321	Descending	1	4	2128.8	685.6979	1533.267	2350907.76	72.0249	0		0
-col3	String	true		01	10		Ascending	2	2						0		0
+    let expected = r#"field	type	is_ascii	sum	min	max	range	sort_order	min_length	max_length	sum_length	avg_length	mean	sem	stddev	variance	cv	nullcount	max_precision	sparsity
+col1	Integer		15	1	5	4	Ascending	1	1	5	1	3	0.6325	1.4142	2	47.1405	0		0
+col2	Integer		10644	0	4321	4321	Descending	1	4	17	3.4	2128.8	685.6979	1533.267	2350907.76	72.0249	0		0
+col3	String	true		01	10		Ascending	2	2	10	2						0		0
 "#;
     assert_eq!(got, expected);
 }
@@ -1330,11 +1338,12 @@ fn stats_output_ssv_delimited() {
     wrk.assert_success(&mut cmd);
 
     let got = std::fs::read_to_string(out_file).unwrap();
-    let expected = r#"field;type;is_ascii;sum;min;max;range;sort_order;min_length;max_length;mean;sem;stddev;variance;cv;nullcount;max_precision;sparsity
-col1;Integer;;15;1;5;4;Ascending;1;1;3;0.6325;1.4142;2;47.1405;0;;0
-col2;Integer;;10644;0;4321;4321;Descending;1;4;2128.8;685.6979;1533.267;2350907.76;72.0249;0;;0
-col3;String;true;;01;10;;Ascending;2;2;;;;;;0;;0
-"#;
+    let expected = "field;type;is_ascii;sum;min;max;range;sort_order;min_length;max_length;\
+                    sum_length;avg_length;mean;sem;stddev;variance;cv;nullcount;max_precision;\
+                    sparsity\ncol1;Integer;;15;1;5;4;Ascending;1;1;5;1;3;0.6325;1.4142;2;47.1405;\
+                    0;;0\ncol2;Integer;;10644;0;4321;4321;Descending;1;4;17;3.4;2128.8;685.6979;\
+                    1533.267;2350907.76;72.0249;0;;0\ncol3;String;true;;01;10;;Ascending;2;2;10;2;\
+                    ;;;;;0;;0\n";
     assert_eq!(got, expected);
 }
 
@@ -1365,11 +1374,12 @@ fn stats_output_csvsz_delimited() {
     cmd.arg("decompress").arg(out_file.clone());
 
     let got: String = wrk.stdout(&mut cmd);
-    let expected = "field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,mean,\
-                    sem,stddev,variance,cv,nullcount,max_precision,sparsity\ncol1,Integer,,15,1,5,\
-                    4,Ascending,1,1,3,0.6325,1.4142,2,47.1405,0,,0\ncol2,Integer,,10644,0,4321,\
-                    4321,Descending,1,4,2128.8,685.6979,1533.267,2350907.76,72.0249,0,,0\ncol3,\
-                    String,true,,01,10,,Ascending,2,2,,,,,,0,,0";
+    let expected = "field,type,is_ascii,sum,min,max,range,sort_order,min_length,max_length,\
+                    sum_length,avg_length,mean,sem,stddev,variance,cv,nullcount,max_precision,\
+                    sparsity\ncol1,Integer,,15,1,5,4,Ascending,1,1,5,1,3,0.6325,1.4142,2,47.1405,\
+                    0,,0\ncol2,Integer,,10644,0,4321,4321,Descending,1,4,17,3.4,2128.8,685.6979,\
+                    1533.267,2350907.76,72.0249,0,,0\ncol3,String,true,,01,10,,Ascending,2,2,10,2,\
+                    ,,,,,0,,0";
     assert_eq!(got, expected);
 }