Lake Formation 中的数据过滤器 - Amazon Lake Formation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Lake Formation 中的数据过滤器

您可以通过创建来实现列级、行级和单元格级安全性数据筛选. 在授予SELECT对桌子的 Lake Formation 许可。

每个数据筛选器都属于数据目录中的特定表。数据筛选器包含以下信息:

  • 筛选器名称

  • 与筛选器关联的表格的目录 ID

  • 表名称

  • 包含该表的数据库的名称

  • 列规范 — 查询结果中要包括或排除的列的列表。

  • 行筛选器表达式 — 一个表达式,它指定要包括在查询结果中的行。有一些限制,表达式的语法为WHERE在 PartiQL 语言中使用子句。要指定所有行,请输入true在控制台中使用AllRowsWildcard在 API 调用中。

    有关行筛选条件表达式中支持的内容的更多信息,请参阅行过滤器表达式中的 PartiQL 支持.

获得的筛选级别取决于填充数据筛选器的方式。

  • 当您指定 “所有列” 通配符并提供行过滤器表达式时,您将仅建立行级安全性(行筛选)。

  • 当您包括或排除特定列并使用所有行通配符指定 “所有行” 时,您将仅建立列级安全性(列筛选)。

  • 当您包括或排除特定列并提供行筛选器表达式时,您将建立单元格级安全性(单元格筛选)。

Lake Formation 控制台的以下屏幕截图显示了执行单元格级筛选的数据筛选器。对于针对orders表格,它限制了对customer_name行中的列,其中product_type列中包含 “药品”。在受限行中,查询结果返回NULL(对于 )customer_namecolumn.


        数据筛选器窗口包含以下垂直排列的字段:数据筛选器名称;目标数据库;目标表;选项按钮组,其中包含 “访问所有列”、“包括列” 和 “排除列” 选项;“选择列”(下拉列表);“行筛选器表达式”(多行文本框)。选择了 “排除列” 选项,选择了 ustomer_name 列进行排除,并且 “行筛选器” 表达式字段包含'product_type='pharma'.

注意使用单引号将字符串字面值括起来,'pharma'.

您可以使用 Lake Formation 控制台创建此数据筛选器,也可以将以下请求对象提供给CreateDataCellsFilterAPI 操作。

{ "Name": "restrict-pharma", "DatabaseName": "sales", "TableName": "orders", "TableCatalogId": "111122223333", "RowFilter": {"FilterExpression": "product_type='pharma'"}, "ColumnWildcard": { "ExcludedColumnNames": ["customer_name"] } }

您可以根据需要为表创建任意数量的数据筛选器。要执行此操作,您需要SELECT在表上使用授予选项的权限。默认情况下,数据湖管理员有权创建数据筛选在该账户中的所有表格上。在向委托人授予对表的权限时,通常只使用可能的数据筛选器的子集。例如,您可以创建第二个数据筛选器orders表那是 row-security-only 数据筛选器。参考前面的屏幕截图,你可以选择访问所有列选项并包含一个行筛选器表达式product_type<>pharma. 此数据过滤器的名称可能是no-pharma. 它限制了对所有具有product_type列设置为 “药品”。

的请求对象CreateDataCellsFilter此数据过滤器的 API 操作如下。

{ "Name": "no-pharma", "DatabaseName": "sales", "TableName": "orders", "TableCatalogId": "111122223333", "RowFilter": {"FilterExpression": "product_type<>'pharma'"}, "ColumnNames": ["customer_id", "customer_name", "order_num" "product_id", "purchase_date", "product_type", "product_manufacturer", "quantity", "price"] }

然后你可以授予SELECTorders带有restrict-pharma向管理员用户筛选数据,以及SELECTorders带有no-pharma对非管理员用户进行数据筛选。对于医疗保健行业的用户,您可以拨款SELECTorders表具有对所有行和列的完全访问权限(无数据筛选器),或者可能使用另一个限制访问定价信息的数据筛选器。