本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
有关列级别筛选的注意事项和限制
指定列筛选的方法有三种:
-
通过使用数据筛选条件(如前所述)。
-
通过使用简单的列筛选或嵌套列筛选。
-
通过使用 TAG。
简单列筛选仅指定要包含或排除的列的列表。Lake Formation 控制台、API 和 Amazon CLI 均支持简单列筛选。有关示例,请参阅Grant with Simple Column Filtering。
以下注意事项和限制适用于列筛选:
-
Amazon Glue ETL 作业仅支持使用数据筛选条件进行列筛选(单元格级别安全性)。如果对作业引用的任何表应用简单列筛选,则作业将失败。如果您只想进行列筛选,请使用数据筛选条件授予对表的访问权限,然后在控制台中为行筛选表达式输入
true
,或者在 API 调用中使用AllRowsWildcard
。 -
要使用授权选项和列筛选来授予
SELECT
,必须使用包含列表,而不是排除列表。如果没有授权选项,则可以使用包含列表或排除列表。 -
要使用列筛选来授予对表的
SELECT
,您必须已通过授权选项获得了对该表的SELECT
,且没有任何行限制。您必须有权访问所有行。 -
如果您使用授权选项和列筛选向您账户中的主体授予
SELECT
,则该主体在向其他主体授予权限时,必须为相同列指定列筛选,或指定部分已授权列。如果您使用授权选项和列筛选向外部账户授予SELECT
,则外部账户中的数据湖管理员可以将对所有列的SELECT
授予其账户中的其他主体。但是,即使对所有列均具有SELECT
,该主体也只能查看授权外部账户查看的列。 -
您不能对分区键应用列筛选。
-
不能向对表中部分列拥有
SELECT
权限的主体授予对该表的ALTER
、DROP
、DELETE
或INSERT
权限。对于对表拥有ALTER
、DROP
、DELETE
或INSERT
权限的主体,如果您使用列筛选来授予SELECT
权限,则授予无效。
以下注意事项和限制适用于嵌套列筛选:
-
您可以在数据筛选条件中包含或排除五个级别的嵌套字段。
Col1.Col1_1.Col1_1_1.Col1_1_1_1.Col1_1_1_1_1
-
您不能对分区列中的嵌套字段应用列筛选。
-
如果您的表架构包含顶级列名称 ("customer"."address"),在数据筛选条件中具有相同的嵌套字段表示形式模式(具有顶级列名称
customer
和嵌套字段名称address
的嵌套列在数据筛选条件中指定为"customer"."address"
),则您无法明确指定对顶级列或嵌套字段的访问权限,因为两者在包含/排除列表中使用相同的模式表示形式。这是不明确的,如果您指定顶级列或嵌套字段,Lake Formation 将无法解析。 -
如果顶级列或嵌套字段的名称中包含双引号,则在数据单元格筛选条件的包含和排除列表中指定对嵌套字段的访问权限时,必须包含第二个双引号。
带双引号的嵌套列名称示例 –
a.b.double"quote
数据筛选条件中的嵌套列表示形式示例 –
"a"."b"."double""quote"