deequ的profile 带来了一个 string 类型的字段类型侦测,以deequ的例子来说明这个特性,数据定义为:
case class RawData(productName: String, totalNumber: String, status: String, valuable: String)
但输出的结果如下
Column ‘productName’:
completeness: 1.0
approximate number of distinct values: 5
datatype: String
Column ‘totalNumber’:
completeness: 1.0
approximate number of distinct values: 6
datatype: Fractional
这个侦测是通过class StatefulDataType 来实现的。
核心执行代码在object ColumnProfiler的profile 函数中,具体如下:
/**
* Profile a (potentially very large) dataset.
*
* @param data data dataset as dataframe
* @param restrictToColumns an contain a subset