我有两个观点。 V1和V2。我有columnNames及其各自的数据类型。 有没有办法可以找出哪些列(数据类型)可以是V1和V2之间的连接条件。
示例:
V1 - >
ID:整数
名称:varchar
DOB:日期
V2->
ID:BIGINT
薪水:真实
性别:BOOLEAN
因此,如果我想要执行连接,我需要返回给用户:
V1 - > ID(整数)可以与V2连接 - > ID,薪水。 (性别不能存在,因为不能使用布尔数据类型执行连接)
类似地V1 - >名称(varchar)可以与(ID,Salary)
连接所以最后我需要一个JSON: {ID:ID,Salary} {姓名:身份证,工资}
我是否有某种方法可以确定两种数据类型是否可以连接?
感谢。
答案 0 :(得分:0)
好的,所以你实际上没有有一个数据模型来定义这两个表如何组合在一起。这听起来像是用户端报告工具之一"其中一个应该能够以表格形式任意加入数据。
这一切都很好,但这意味着没有关于如何提出潜在加入标准的严格规定。在这种情况下,您将需要经验法则,即启发式算法'。
这种启发式方法已在许多工具中实施,通常不遵循任何标准"但大多数(至少,我所见过的)试图用常识去做。 其中一条规则肯定是:
"当我看到一只像鸭子一样走路的小鸟,像鸭子一样游泳时 像鸭子一样嘎嘎叫,我把那只鸟称为鸭子" quote reference
我的意思是:您尝试匹配一起的数据类型,至少在域级别上。因此,时间日期列可以与其他时间日期列一起使用,资金列可以与其他资金列一起使用,地址列集与其他地址列集一起使用。
这种匹配不会帮助找到有意义的连接,但是它们可以帮助清除那些根本没有任何意义的连接。 不幸的是,这种方法比仅仅查看用于存储数据的技术数据类型要多得多。例如,日期可以很容易地存储在任何类型的数据类型中。存储在文本列中的日期非常常见 - 因此您需要尝试找出何时出现这种情况。
提示可能是列名('日期',' dt','日'等等?)或实际内容(格式匹配' YYYY-MM-DD'或' DDMMYY'或' ....')。
其他列类型可能存在类似的提示,并且成功预测正确的数据域是数据探索工具的主要任务之一。由于数据通常很混乱,因此这不是一项简单的任务。
回到原来的问题:没有HANA功能可以为您做到这一点,只看技术数据类型之间几乎没有什么(可能太简单/愚蠢,无法涵盖天真的测试用例之外的任何内容) )和一组广泛的启发式方法,用于猜测列条目的正确语义域。