These three statements are true according to the Snowflake documentation and the web search
results. A row access policy is a feature that allows filtering rows based on user-defined conditions. A
row access policy can be applied to an external table, which is a table that reads data from external
files in a stage. However, there are some limitations and considerations for using row access policies
with external tables.
An external table can be created with a row access policy by using the WITH ROW ACCESS POLICY
clause in the CREATE EXTERNAL TABLE statement. The policy can be applied to the VALUE column,
which is the column that contains the raw data from the external files in a VARIANT data type1.
A row access policy can also be applied to the VALUE column of an existing external table by using
the ALTER TABLE statement with the SET ROW ACCESS POLICY clause2.
A row access policy cannot be directly added to a virtual column of an external table. A virtual
column is a column that is derived from the VALUE column using an expression. To apply a row
access policy to a virtual column, the policy must be applied to the VALUE column and the expression
must be repeated in the policy definition3.
External tables are not supported as mapping tables in a row access policy. A mapping table is a table
that is used to determine the access rights of users or roles based on some criteria. Snowflake does
not support using an external table as a mapping table because it may cause performance issues or
errors4.
While cloning a database, Snowflake clones the row access policy, but not the external table.
Therefore, the policy in the cloned database refers to a table that is not present in the cloned
database. To avoid this issue, the external table must be manually cloned or recreated in the cloned
database4.
A row access policy can be applied to a view created on top of an external table. The policy can be
applied to the view itself or to the underlying external table. However, if the policy is applied to the
view, the view must be a secure view, which is a view that hides the underlying data and the view
definition from unauthorized users5.
Reference:
CREATE EXTERNAL TABLE | Snowflake Documentation
ALTER EXTERNAL TABLE | Snowflake Documentation
Understanding Row Access Policies | Snowflake Documentation
Snowflake Data Governance: Row Access Policy Overview
Secure Views | Snowflake Documentation