假设我有以下数据:
OrderNumber | CustomerName | CustomerAddress | CustomerCode
1 | Chris | 1234 Test Drive | 123
2 | Chris | 1234 Test Drive | 123
如何检测“CustomerName”,“CustomerAddress”和“CustomerCode”列是否完美相关?我认为Sql Server数据挖掘可能是这项工作的正确工具,但我没有太多的经验。
提前致谢。
更新:
通过“关联”,我的意思是在统计意义上,每当列a为x时,列b将为y。在上面的数据中,最后三列彼此相关,而第一列则不相关。
操作的输入将是表的名称,输出将类似于:
Column 1 | Column 2 | Certainty
CustomerName | CustomerAddress | 100%
CustomerAddress | CustomerCode | 100%
答案 0 :(得分:0)
你是什么意思相关?你只是想看看他们是否平等?您可以通过将表连接到自身来在T-SQL中执行此操作:
select distinct
case when a.OrderNumber < b.OrderNumber then a.OrderNumber
else b.OrderNumber
end as FirstOrderNumber,
case when a.OrderNumber < b.OrderNumber then b.OrderNumber
else a.OrderNumber
end as SecondOrderNumber
from
MyTable a
inner join MyTable b on
a.CustomerName = b.CustomerName
and a.CustomerAddress = b.CustomerAddress
and a.CustomerCode = b.CustomerCode
这会让你回头:
FirstOrderNumber | SecondOrderNumber
1 | 2
答案 1 :(得分:0)
相关性是在度量标准空间中定义的,而您的值不是度量标准。
这将为您提供customerAddress
唯一定义customerName
的客户的百分比:
SELECT AVG(perfect)
FROM (
SELECT
customerName,
CASE
WHEN COUNT(customerAddress) = COUNT(DISTINCT customerAddress)
THEN 0
ELSE 1
END AS perfect
FROM orders
GROUP BY
customerName
) q
将其他列代替customerAddress
和customerName
替换为此查询,以查找它们之间的差异。
答案 2 :(得分:0)
SQL Server数据概要分析(SQL Server 2008附带的SSIS组件)内置了一个“功能依赖”测试。在这篇博文中描述得很好:
我通过一些(记录不足的).NET API访问数据分析器输出,但似乎可行。但是,由于我的要求是处理列值的分配,所以我最终根据DBCC STATISTICS的输出更简单。我对Profiler组件和输出查看器的看法给我留下了深刻的印象。