作为分析师在隐私域中工作¶
隐私域 定义列中的可能值,类似于数学域。Snowflake 使用隐私域来确定在结果中引入多少噪声。
要在完成本节任务前全面了解隐私域,请参阅 隐私域简介。
如果数据提供商遵循最佳实践,隐私保护表中的大多数数字和分类列都有隐私域。如果数据提供者没有在您想要汇总或在某个 GROUP BY 子句中使用的列上设置隐私域,您需要调整查询,使其包含一些隐式指定该列隐私域的技术。数据提供者在表上设置的隐私域也可能根据对表执行的操作而丢失。例如,如果在子查询中用 GROUP BY 汇总一个字段,系统可能会因隐私约束而无法得出隐私域。
您也可以编写查询,缩小数据提供商设置的隐私域范围。这种替换有助于改善汇总结果。
备注
为了满足 将<label-diff_privacy_joins_data_types> 与受隐私保护的表连接的要求,分析师可能需要为自己表中的列定义隐私域,即使该列不受隐私保护。这些隐私域是在表级别定义的,并适用于对该表的所有查询。如果您是分析师的管理员,需要为某个表的列指定隐私域,请参阅 设置隐私域。
查看隐私域¶
在查询受隐私保护的表之前,查看该表的隐私域非常有用。检查每一列的隐私域可以提供以下帮助:
确定数据提供者是否为列设置了隐私域。
确定列中可能出现的值,这有助于改进分析。例如,如果隐私域是在列中找到的可能值的范围,则可以确定范围的最小值和最大值。
调查为什么结果中出现了比预期更多的 噪音。您可以确定是否存在对分析不重要的异常值,并将这些值从聚合中删除,以 改善结果。
要查看列是否有隐私域,如果有,则确定域的类型和可能值,请参阅 查看隐私域。
指定隐私域¶
本节将介绍分析师在查询过程中设置隐私域可使用的技术。它总结了查询结构如何指定列的隐私域。
为字符串列指定隐私域¶
使用 WHERE 子句对字符串列进行过滤,可为其指定一个隐私域。隐私域由与筛选器匹配的值组成。例如,如果查询包含以下子句,就会为 product
列指定隐私域:
WHERE product = 'hackeysack' OR product = 'frisbee'WHERE product IN ('hackeysack', 'frisbee')
隐私域是一个枚举列表,由 hackeysack
和 frisbee
组成。
如果数据提供商已在 product
列上设置了隐私域,Snowflake 会在查询期间使用两个隐私域的交集。有关信息,请参阅 管理员指定的隐私域与分析师指定的隐私域之间的交互。
字符串列的隐私域之外的值会被 作为 NULL 处理。
为数字、日期和时间列指定隐私域¶
您可以使用过滤子句或列变换为数字、日期或时间列指定隐私域。这些查询技术指定了一个作为可能值范围的隐私域。
您可以使用以下技术为数字、日期或时间列指定隐私域:
- WHERE 子句
例如:
WHERE a < 10 AND a >= 0
a
列的指定隐私域介于 0 和 10 之间。如果数据提供商已在
a
列上设置了隐私域,Snowflake 会在查询期间使用两个隐私域的交集。有关信息,请参阅 管理员指定的隐私域与分析师指定的隐私域之间的交互。使用筛选器会删除隐私域之外的值,这意味着在计算汇总时会忽略这些值。有关更多信息,请参阅 数值、日期和时间。
- GREATEST 和 LEAST 列转换
例如:
GREATEST(LEAST(a, 100), 0) AS clamped_a
隐私域的指定范围介于 0 到 100 之间。
如果数据提供商已在
a
列上设置了隐私域,Snowflake 会在查询期间使用两个隐私域的交集。有关信息,请参阅 管理员指定的隐私域与分析师指定的隐私域之间的交互。如果要缩小数据提供商设置的隐私域,可以只使用 GREATEST 或 LEAST 转换中的一种来减少最大值或增加最小值,同时保持范围的另一端与数据提供商定义的隐私域相同。
列中超出隐私域的值会被 限制,即它们会被当作域中最接近的值(最小值或最大值)来处理。
缩小隐私域以改善结果¶
Snowflake 必须引入足够多的 噪音 来隐藏隐私域内的精确值。如果隐私域包括与列中大部分数据不同的异常值,Snowflake 必须增加噪音,以掩盖这些值的存在。替换隐私域以缩小其范围可以减少噪音,因为 Snowflake 不再需要掩盖分析不重要的值的存在。
缩小隐私域范围的技术会影响汇总的计算方式。您的选择取决于什么对您的分析很重要。
如果使用筛选器(WHERE 子句)来缩小隐私域的范围,则在计算聚合时会忽略域外的值。
当您认为隐私域的离群值是由于数据质量问题造成的,或者这些值与查询无关时,使用筛选器是首选技术。从隐私域中排除离群值可以保持分析的完整性,同时大大减少结果中引入的噪音。
如果使用 列变换,列中超出域的值会被 限制,即它们会被当作域中最接近的值(最小值或最大值)来处理。
即使您认为离群值不是数据质量问题,使用列转换也能改进分析。例如,如果您正在计算数值的平均值,那么使用列变换来限制离群值可能会改善您的分析。
备注
如果查询包括高度选择性的筛选器,目标是数据集中有限数量的记录,那么相对的噪音量实际上会增加,因为 Snowflake 必须确保您无法利用结果识别出某个个体。