日期偏移

日期是一种非常常见且有用的数据类型。但在某些情况下,需要对日期进行泛化、混淆处理或遮盖。执行此操作的一种方法是泛化或分桶。另一种方法是日期偏移。但是,分桶可能会消除日期的效用,具体取决于用例和配置。例如,如果将所有日期泛化为仅有年份,则可能会丢失事件发生的顺序。可以解决此问题的对日期进行模糊处理的另一种方法是日期偏移。

日期偏移技术会随机偏移一组日期,但保留一段时间内的顺序和持续时间。通常在个人或实体的上下文中完成偏移日期。也就是说,您需要按同一偏移差分偏移特定个人的所有日期,但针对其他每个人使用单独的偏移差分。

日期偏移示例

请思考以下数据:

user_id 日期 行动
1 2009-06-09 跑步
1 2009-06-03 散步
1 2009-05-23 自由泳
2 2010-11-03 自由泳
2 2010-11-22 散步
... ... ...

如果我们将这些日期泛化为年份,会得到以下内容:

user_id date_year 行动
1 2009 跑步
1 2009 散步
1 2009 自由泳
2 2010 自由泳
2 2010 散步
... ... ...

现在,我们已经对每个用户的序列失去了概念。

我们改为使用日期偏移:

user_id 日期 行动
1 2009-07-17 跑步
1 2009-07-11 散步
1 2009-06-30 自由泳
2 2011-01-26 自由泳
2 2011-02-14 散步
... ... ...

请注意日期是不同的,但保留了序列和持续时间。在 user_id 1 和 2 之间,日期偏移的幅度是不同的。

Cloud DLP 中的日期偏移

使用 Cloud DLP API 执行此操作的配置如下所示:

deidentify_config {
  record_transformations {
    field_transformations {
      fields {
        name: "date"
      }
      primitive_transformation {
        date_shift_config {
          upper_bound_days: 100
          lower_bound_days: -100
          entity_field_id {
            name: "id"
          }
          crypto_key {
            unwrapped {
              key: "123456789012345678901234567890ab"
            }
          }
        }
      }
    }
  }
}

偏移的上限和下限分别由 upper_bound_dayslower_bound_days 值指定。将应用该偏移的上下文或范围基于 entity_id_field 值,在本例中为 "user_id"

此外,请注意 crypto_key 的使用。这与其在假名化中的使用方式类似。通过使用密钥,可在多个请求或数据运行中保证这些日期偏移的完整性

资源

要详细了解如何使用 Cloud DLP 中的日期偏移和其他方法对数据进行去标识化,请参阅:

如需了解 Cloud DLP API 中初始转换的 API 参考信息,请参阅: