

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 資料篩選限制
<a name="data-filtering-notes"></a>

當您授予資料目錄資料表的 Lake Formation 許可時，您可以包含資料篩選規格，以限制對與 Lake Formation 整合之查詢結果和引擎中特定資料的存取。Lake Formation 使用資料篩選來實現資料欄層級安全性、資料列層級安全性和儲存格層級安全性。如果您的來源資料包含巢狀結構，您可以在巢狀資料欄上定義和套用資料篩選條件。

## 資料欄層級篩選的備註和限制
<a name="column-filtering-notes"></a>

指定資料欄篩選有三種方式：
+ 使用資料篩選條件
+ 使用簡單的資料欄篩選或巢狀資料欄篩選。
+ 使用 TAGs

簡單資料欄篩選只會指定要包含或排除的資料欄清單。Lake Formation 主控台、API 和 都 AWS CLI 支援簡單的資料欄篩選。如需範例，請參閱 [Grant with Simple Column Filtering](granting-table-permissions.md#simple-column-filter-example)。

下列備註和限制適用於資料欄篩選：
+ AWS Glue 5.0 或更新版本僅支援 Apache Hive 和 Apache Iceberg 資料表透過 Lake Formation 進行精細存取控制。
+ 若要`SELECT`使用授予選項和資料欄篩選進行授予，您必須使用包含清單，而不是排除清單。如果沒有授予選項，您可以使用包含或排除清單。
+ 若要在具有資料欄篩選的資料表`SELECT`上授予 ，您必須已在具有授予選項且沒有任何資料列限制的資料表`SELECT`上授予 。您必須能夠存取所有資料列。
+ 如果您`SELECT`使用授予選項和資料欄篩選授予帳戶中的委託人，該委託人必須在授予其他委託人時，為相同的資料欄或授予的資料欄子集指定資料欄篩選。如果您`SELECT`使用授予選項和資料欄篩選授予外部帳戶，則外部帳戶中的資料湖管理員可以將所有資料欄`SELECT`上的 授予其帳戶中的另一個主體。不過，即使所有資料欄`SELECT`都使用 ，該委託人仍只能查看授予外部帳戶的資料欄。
+ 您無法在分割區索引鍵上套用資料欄篩選。
+ 在資料表中資料欄子集上具有 `SELECT`許可的主體，無法獲得該資料表上的 `ALTER`、`DELETE`、 `DROP`或 `INSERT`許可。對於對資料表具有 `ALTER`、`DELETE`、 `DROP`或 `INSERT`許可的委託人，如果您授予具有資料欄篩選的`SELECT`許可，則不會有任何影響。

下列備註和限制適用於巢狀資料欄篩選：
+  您可以在資料篩選條件中包含或排除五層巢狀欄位。  
**Example**  

  Col1.Col1\_1.Col1\_1\_1.Col1\_1\_1\_1\_1\_1.Col1\_1\_1\_1\_1
+  您無法對分割區資料欄內的巢狀欄位套用資料欄篩選。
+  如果您的資料表結構描述包含最上層資料欄名稱 ("customer"."address")，其資料篩選條件內的巢狀欄位表示法模式相同 （具有最上層資料欄名稱`customer`和巢狀欄位名稱的巢狀資料欄`address`在資料篩選條件`"customer"."address"`中指定為 )，則您無法明確指定對最上層資料欄或巢狀欄位的存取，因為兩者在包含/排除清單中都使用相同的模式表示。這是不明確的，而且如果您指定最上層資料欄或巢狀欄位，Lake Formation 無法解析。
+ 如果頂層資料欄或巢狀欄位在名稱中包含雙引號，當您在資料儲存格篩選條件的包含和排除清單中指定對巢狀欄位的存取時，您必須包含第二個雙引號。  
**Example**  

  具有雙引號的範例巢狀資料欄名稱 – `a.b.double"quote`  
**Example**  

  資料篩選條件中的巢狀資料欄表示範例 – ` "a"."b"."double""quote"`

## 儲存格層級篩選限制
<a name="cell-filtering-notes.title"></a>

請記住下列有關資料列層級和儲存格層級篩選的注意事項和限制。
+  巢狀資料欄、檢視和資源連結不支援儲存格層級安全性。
+ 巢狀資料欄也支援頂層資料欄上支援的所有表達式。不過，定義巢狀資料列層級表達式時，**不應**參考分割區資料欄下的巢狀欄位。
+  使用 Athena 引擎第 3 版或 Amazon Redshift Spectrum 時，所有區域都可使用儲存格層級安全性。對於其他 服務，儲存格層級安全性僅適用於 所述的區域[支援的區域](supported-regions.md)。
+  不支援 `SELECT INTO` 陳述式。
+ 資料列篩選條件表達式不支援 `array`、 和 `map`資料類型。支援 `struct`資料類型。
+ 資料表上可定義的資料篩選條件數量沒有限制，但資料表上單一主體的資料篩選條件有 100 個限制。
+ 若要使用資料列篩選條件表達式套用資料篩選條件，您必須在所有資料表資料欄上使用 `SELECT` 授予選項。當授予外部帳戶時，此限制不適用於外部帳戶中的管理員。
+ 如果委託人是群組的成員，並且委託人和群組都獲得一部分資料列的許可，則委託人的有效資料列許可是委託人許可和群組許可的聯集。
+ 下列資料欄名稱在資料表中受到資料列層級和儲存格層級篩選的限制：
  + ctid
  + oid
  + xmin
  + cmin
  + xmax
  + cmax
  + Tableoid
  + insertxid
  + deletexid
  + importoid
  + redcatuniqueid
+ 如果您在具有述詞的其他篩選條件表達式同時套用資料表上的全列篩選條件表達式，則全列運算式將優先於所有其他篩選條件表達式。
+ 當將資料列子集的許可授予外部 AWS 帳戶，且外部帳戶的資料湖管理員將這些許可授予該帳戶中的委託人時，委託人的有效篩選述詞是帳戶述詞和直接授予委託人的任何述詞的交集。

  例如，如果帳戶具有具有述詞的資料列許可，`dept='hr'`且委託人單獨獲得 的許可`country='us'`，則委託人只能存取具有 `dept='hr'`和 的資料列`country='us'`。

如需儲存格層級篩選的詳細資訊，請參閱 [Lake Formation 中的資料篩選和儲存格層級安全性](data-filtering.md)。

如需使用 Amazon Redshift Spectrum 搭配資料列層級安全政策查詢資料表時的考量和限制，請參閱《Amazon Redshift 資料庫開發人員指南》中的[使用 RLS 政策的考量和限制](https://docs.aws.amazon.com/redshift/latest/dg/t_rls_usage.html)。