1

次のデータがあるとします。

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 になることを意味します。上記のデータでは、最後の 3 つの列は互いに相関しており、最初の列は相関していません。

操作の入力はテーブルの名前になり、出力は次のようになります。

         Column 1     |    Column 2          | Certainty
      CustomerName    |  CustomerAddress     | 100%
      CustomerAddress |  CustomerCode        | 100%
4

3 に答える 3

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して、それらの間の不一致を見つけます。

于 2009-06-04T16:23:55.357 に答える
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
于 2009-06-04T16:16:05.653 に答える
0

SQL Server データ プロファイリング コンポーネント (SQL Server 2008 に同梱されている SSIS コンポーネント) には、「機能依存性」テストが組み込まれています。このブログ投稿でかなりよく説明されています。

http://blogs.conchango.com/jamiethomson/archive/2008/03/03/ssis-data-profiling-task-part-7-functional-dependency.aspx

私はいくつかの (十分に文書化されていない) .NET API を介してデータ プロファイラーの出力にアクセスして少し遊んでみましたが、それは実行可能のようです。ただし、私の要件は列値の分散を扱っていたため、DBCC STATISTICS の出力に基づいて、より単純なものを使用することになりました。プロファイラー コンポーネントと出力ビューアーを見て、非常に感銘を受けました。

于 2009-06-05T01:17:18.020 に答える