• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:個人情報の入った顧客データを匿名データにつくりかえる方法(アクセス、エ)

個人情報の入った顧客データを匿名データにつくりかえる方法

このQ&Aのポイント
  • 個人情報を含む顧客データを匿名化する方法を解説します。
  • 匿名化された顧客データには個人IDと氏名の列が削除され、新しい匿名IDが割り当てられます。
  • 匿名データから元のデータに戻る可能性を限りなく消すため、新しい匿名IDには通し番号の要素が含まれません。

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

名前は全部*にするんでしょうね。 IDはGetTickCountかQueryPerformanceCounterの 返してきた値を使うでしょうか。これは昇順になる ことが分かっているものですし、実行する度に違う 値が返ります。

その他の回答 (2)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

選択クエリを実行し、レコードごとに時分秒を取得すればそこそこランダム値になる。一瞬では同じになるのでわざと時間かけるかして偏りが無くなるまで繰り返す。IDを桁分解して使う等。

uzo
質問者

お礼

nda23さん、k_kotaさん、layyさん ご回答ありがとうございました。 しかしながら、 私にとっては扱いなれない手法であったので 今回は、採用いたしませんでした。 (1)違うIDには必ず違う番号がつく  (同じになる確率は、厳密にゼロでなくてはならない) (2)実IDと匿名IDの結びつき方に規則性があってはならない  (匿名IDから実名IDに戻る関数が存在しない=当初の変換テーブルがない限り、実IDと匿名IDを結びつける理論的手段がない) という条件が必須です。 そうした意味で、可能性のあるのは nda23さん の手法かと、存じましたので、この回答をベストアンサーにさせていただきます。 さて、私が実際にやった手法は次のようなものでした。 (0)テーブルをエクセルにコピーする(50,000行は可能でした)。 (1)個人IDの一覧表をつくる(ピボットテーブルを使う)。 (2)エクセルに移し =rand()関数で、各IDにひとつ乱数を割り振る。 (3)乱数を固定して(形式貼り付け-値貼り付けで、同じところに貼り直す)、乱数の値で昇順にならべかえる(仮に同じ乱数があっても、強制的に順序がつくので、上記(1)が満たされる)。 (4)この結果に上から、1、2、3、・・・と番号をふる。  -これが先述した「当初の変換テーブル」になる。 (5)vlookup関数を使って、もともとのレコードのIDを検索値にして、変換テーブルをもとに匿名IDを各レコードに返す。

  • k_kota
  • ベストアンサー率19% (434/2186)
回答No.2

個人IDと名前を含めた文字列を数値データとして、適当なハッシュ関数に掛けるといいかなと思います。 まあ、ルールはなんでもいいのでとにかくいじくればいいかなと思いますけど。

関連するQ&A