Todos os produtos
Search
Central de documentação

MaxCompute:Armazenamento em camadas

Última atualização: Oct 22, 2026

O armazenamento em camadas do MaxCompute inclui armazenamento padrão, armazenamento de baixa frequência e armazenamento de longo prazo. Por padrão, o MaxCompute armazena os dados no armazenamento padrão. Com base na frequência de acesso aos dados, é possível alterar o tipo de armazenamento de tabelas ou partições específicas para armazenamento de baixa frequência ou de longo prazo. Essa prática, conhecida como separação de dados quentes e frios, ajuda a reduzir as taxas de armazenamento.

Tipos de armazenamento em camadas

Tipo

Descrição

armazenamento padrão

O tipo de armazenamento padrão. Adequado para dados acessados com frequência que exigem operações constantes de leitura e gravação.

armazenamento de baixa frequência

Adequado para dados acessados com pouca frequência. Ajuda a reduzir de forma eficaz as taxas de armazenamento.

Nota
  • Dados no armazenamento de baixa frequência e de longo prazo não podem ser acessados diretamente pelo Hologres. Além disso, quando o Hologres lê dados diretamente do MaxCompute, o horário do último acesso (last_access_time) da tabela ou partição do MaxCompute não é atualizado. Como resultado, se você usar regras de ciclo de vida baseadas na condição last_access_time, tabelas ou partições lidas apenas pelo Hologres podem sofrer transições inesperadas.

  • Se o volume ou a frequência de acesso aos dados for alto, os custos resultantes podem exceder as taxas do armazenamento padrão. Por exemplo:

    • Acessar todos os dados de uma tabela ou partição em armazenamento de baixa frequência uma vez por mês gera custos equivalentes às taxas do armazenamento padrão.

    • Acessar todos os dados de uma tabela ou partição em armazenamento de longo prazo uma vez a cada seis meses gera custos equivalentes às taxas do armazenamento padrão.

armazenamento de longo prazo

Faturamento

  • Para mais informações sobre o faturamento de armazenamento, consulte {{XREF_0}}.

  • Ao usar o armazenamento de baixa frequência ou de longo prazo, considere o volume e a frequência de acesso aos dados. O acesso em grande volume ou frequente pode custar mais do que o uso do armazenamento padrão.

    • O custo de executar uma varredura completa em uma tabela ou partição no armazenamento de baixa frequência uma vez por mês equivale ao custo de mantê-la no armazenamento padrão.

    • O custo de executar uma varredura completa em uma tabela ou partição no armazenamento de longo prazo uma vez a cada seis meses equivale ao custo de mantê-la no armazenamento padrão.

  • Faça login no Billing Management console. Na página Billing > Bill Details, é possível visualizar as taxas para diferentes tipos de armazenamento. Os itens faturáveis para armazenamento padrão, de baixa frequência e de longo prazo são denominados Storage, Tiered Storage-Low-Frequency e Long-Term Storage, respectivamente. Para instruções detalhadas, consulte {{XREF_1}}.

Notas de uso

  • Disponibilidade por região: China (Hangzhou), China (Shanghai), China (Beijing), China (Zhangjiakou), China (Ulanqab), China (Shenzhen), China (Chengdu), China (Hong Kong), China (Shanghai) Finance, China (Beijing) Finance, China (Shenzhen) Finance, Singapore, Malaysia (Kuala Lumpur), Indonesia (Jakarta), Japan (Tokyo), Germany (Frankfurt) e US (Silicon Valley).

  • Atualmente, os dados em armazenamento de baixa frequência e de longo prazo não podem ser acessados diretamente pelo Hologres. Além disso, quando o Hologres lê diretamente do MaxCompute, o last_access_time da tabela ou partição do MaxCompute não é atualizado. Portanto, ao definir uma regra de ciclo de vida de armazenamento em camadas que usa a condição last_access_time, algumas tabelas ou partições lidas continuamente apenas pelo Hologres também podem corresponder à regra.

Configurar tipos de armazenamento

É possível fazer a transição de dados entre diferentes tipos de armazenamento. Modificar o tipo de armazenamento não afeta o acesso aos dados.

A tabela a seguir descreve as transições de tipo de armazenamento.

Transição

Descrição

armazenamento padrão -> armazenamento de baixa frequência

Transições manuais e automáticas são suportadas. Nenhuma taxa de acesso de I/O é cobrada. O "Last Modified Time" e o "Last Access Time" da tabela ou partição não são atualizados.

armazenamento padrão -> armazenamento de longo prazo

armazenamento de baixa frequência -> armazenamento de longo prazo

Transições manuais e automáticas são suportadas. Transições manuais geram uma taxa de acesso de I/O, enquanto as automáticas não. O "Last Modified Time" e o "Last Access Time" da tabela ou partição não são atualizados.

armazenamento de baixa frequência -> armazenamento padrão

Apenas transições manuais são suportadas. Uma taxa de acesso de I/O é cobrada. O "Last Modified Time" e o "Last Access Time" da tabela ou partição são atualizados.

armazenamento de longo prazo -> armazenamento de baixa frequência

armazenamento de longo prazo -> armazenamento padrão

Configuração manual

Você pode definir manualmente o tipo de armazenamento de uma tabela não particionada ou de uma partição para armazenamento de baixa frequência ou de longo prazo. A alteração entra em vigor imediatamente.

Formato do comando

CREATE ROW ACCESS POLICY policy03 
ON storage_table 
TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.

Parâmetros

  • TABLE_NAME: Obrigatório. O nome da tabela cujo tipo de armazenamento você deseja modificar, ou o nome da tabela particionada que contém a partição de destino.

  • PARTITION_SPEC: Obrigatório se você estiver modificando o tipo de armazenamento de uma partição.

  • TBLPROPERTIES|PARTITIONPROPERTIES: Especifica se o tipo de armazenamento de uma tabela ou de uma partição será modificado.

    • TBLPROPERTIES: Modifica o tipo de armazenamento de uma tabela.

    • PARTITIONPROPERTIES: Modifica o tipo de armazenamento de uma partição.

  • storagetier: Obrigatório. O tipo de armazenamento em camadas. Valores válidos:

    • standard: armazenamento padrão. Apenas as taxas de armazenamento são cobradas.

    • lowfrequency: armazenamento de baixa frequência. São cobradas as taxas de armazenamento e as taxas de acesso a dados para armazenamento de baixa frequência.

    • longterm: armazenamento de longo prazo. São cobradas as taxas de armazenamento e as taxas de acesso a dados para armazenamento de longo prazo.

Nota

Você pode definir o tipo de armazenamento em camadas apenas para partições dentro de uma tabela particionada. Não é possível definir o tipo de armazenamento em camadas para uma tabela particionada inteira.

Exemplos

  • Exemplo 1: Definir o tipo de armazenamento de uma tabela não particionada para armazenamento de baixa frequência.

    CREATE ROW ACCESS POLICY policy03 
    ON storage_table 
    TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
    FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.

    Visualize as propriedades da tabela. Você pode verificar o campo StorageTier para confirmar o tipo de armazenamento atual.

    CREATE ROW ACCESS POLICY policy03 
    ON storage_table 
    TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
    FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.
  • Exemplo 2: Definir o tipo de armazenamento de uma partição na tabela particionada {{XREF_2}} para armazenamento de baixa frequência.

    CREATE ROW ACCESS POLICY policy03 
    ON storage_table 
    TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
    FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.

    Você pode verificar o campo StorageTier nas propriedades da partição para determinar o tipo de armazenamento atual.

    CREATE ROW ACCESS POLICY policy03 
    ON storage_table 
    TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
    FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.

Configuração automatizada

Você pode configurar regras de ciclo de vida para armazenamento em camadas no nível de projeto ou tabela particionada para automatizar as transições de tipo de armazenamento.

  • Configuração no nível do projeto:

    Uma regra no nível do projeto serve como padrão para todas as tabelas não particionadas e para partições em tabelas que não possuem regras específicas. Tabelas e partições correspondentes sofrem transição automaticamente.

  • Configuração no nível da tabela particionada:

    Uma regra definida para uma tabela particionada específica tem precedência sobre qualquer regra no nível do projeto. Quando qualquer partição nessa tabela atende aos critérios da regra, a partição é automaticamente transferida para o tipo de armazenamento correspondente.

Principais limitações

Não é possível configurar regras em um nível mais granular:

  • Não é possível definir uma regra independente para uma única tabela não particionada. Ela herda a regra no nível do projeto.

  • Não é possível definir uma regra independente para uma partição específica dentro de uma tabela particionada. Ela herda a regra de sua tabela particionada pai.

Execução da regra

  • Se uma tabela ou partição atender aos critérios de ciclo de vida para armazenamento de longo prazo (longterm) e de baixa frequência (lowfrequency), ela será convertida para longterm com prioridade.

  • Se uma tabela ou partição atender primeiro à regra de ciclo de vida lowfrequency, ela será convertida para lowfrequency. Se posteriormente atender à regra longterm, será convertida para longterm. Nesse caso, a conversão de lowfrequency para longterm não gera uma taxa de acesso de lowfrequency. Para detalhes de faturamento, consulte {{XREF_3}}.

  • A plataforma verifica a conformidade com as regras duas vezes por dia. Portanto, pode haver um atraso entre o momento em que uma tabela ou partição atende às condições e o momento em que a transição ocorre.

Formato do comando

  • Definir uma regra de ciclo de vida no nível do projeto

    CREATE ROW ACCESS POLICY policy03 
    ON storage_table 
    TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
    FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.

    Você também pode configurar isso no console do MaxCompute:

    1. Faça login no MaxCompute console e selecione uma região no canto superior esquerdo.

    2. No painel de navegação à esquerda, escolha Manage Configurations > Projects.

    3. Na página Projects, clique em Manage na coluna Actions do projeto de destino.

    4. Na página Project Settings, clique na aba Parameter Configuration.

    5. Na seção Lifecycle Configuration, clique em Edit.

    6. Configure os parâmetros Last Access Configuration Policy e Last Modified Configuration Policy.

      • Last Access Configuration Policy: Corresponde ao parâmetro DaysAfterLastAccessGreaterThan.

      • Last Modified Configuration Policy: Corresponde ao parâmetro DaysAfterLastModificationGreaterThan.

  • Definir uma regra de ciclo de vida para uma tabela particionada

    • Definir durante a criação da tabela:

      CREATE ROW ACCESS POLICY policy03 
      ON storage_table 
      TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
      FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.
    • Modificar uma tabela existente:

      CREATE ROW ACCESS POLICY policy03 
      ON storage_table 
      TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
      FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.
  • Visualizar a configuração de ciclo de vida de armazenamento em camadas de uma tabela particionada

    CREATE ROW ACCESS POLICY policy03 
    ON storage_table 
    TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
    FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.

Parâmetros

A tabela a seguir descreve os principais parâmetros. Para obter informações sobre outros parâmetros, consulte {{XREF_4}}.

lifecycle_config_json_string:

  • Ao definir uma regra de ciclo de vida no nível do projeto, a definição é a seguinte.

    CREATE ROW ACCESS POLICY policy03 
    ON storage_table 
    TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
    FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.
  • Ao definir uma regra de ciclo de vida para uma tabela particionada, a definição é a seguinte.

    CREATE ROW ACCESS POLICY policy03 
    ON storage_table 
    TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
    FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.
  • TierToLowFrequency: Identificador para armazenamento de baixa frequência.

  • TierToLongterm: Identificador para armazenamento de longo prazo.

  • DaysAfterLastModificationGreaterThan: O número de dias após o horário da última modificação (LastModifiedTime) antes que os dados sejam transferidos automaticamente.

  • DaysAfterLastAccessGreaterThan: O número de dias após o horário do último acesso (LastAccessTime) antes que os dados sejam transferidos automaticamente. Se o LastAccessTime de uma tabela ou partição estiver vazio, aplicam-se as seguintes regras:

    • Para tabelas ou partições criadas antes de 1º de outubro de 2023, o horário é calculado por padrão com base no fuso horário UTC+0, como 2023.10.01 00:00:00.

    • Para tabelas ou partições criadas em ou após 1º de outubro de 2023, se os dados nunca tiverem sido acessados, o cálculo é baseado no horário de criação (CreateTime).

Exemplos

  • Exemplo 1: Definir uma regra de ciclo de vida no nível do projeto.

    CREATE ROW ACCESS POLICY policy03 
    ON storage_table 
    TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
    FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.
  • Exemplo 2: Remover uma configuração de ciclo de vida no nível do projeto.

    CREATE ROW ACCESS POLICY policy03 
    ON storage_table 
    TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
    FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.
  • Exemplo 3: Definir uma regra de ciclo de vida para uma tabela particionada.

    CREATE ROW ACCESS POLICY policy03 
    ON storage_table 
    TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
    FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.
  • Exemplo 4: Remover a configuração de ciclo de vida de armazenamento em camadas de uma tabela particionada.

    CREATE ROW ACCESS POLICY policy03 
    ON storage_table 
    TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
    FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.

Controle de acesso no nível da tabela

Depois que uma tabela ou partição é movida para o armazenamento de baixa frequência ou de longo prazo, o acesso aos seus dados gera uma taxa de acesso a dados.

Por padrão, qualquer usuário com permissão SELECT em uma tabela pode acessar seus dados, independentemente do tipo de armazenamento. O MaxCompute fornece controles de acesso no nível da tabela separados para armazenamento de baixa frequência e de longo prazo. Quando esse recurso está ativado, a permissão SELECT concede acesso apenas aos dados do armazenamento padrão. O acesso a dados em armazenamento de baixa frequência ou de longo prazo requer permissões adicionais e explícitas para esses tipos de armazenamento. Isso ajuda a evitar o acesso não intencional a dados frios e previne estouro de custos inesperado.

Em comparação com a filtragem de dados de partição com controle de acesso no nível de linha, que filtra silenciosamente as partições não autorizadas, este método faz com que uma consulta falhe imediatamente se tentar acessar uma partição fria sem permissão. Isso evita que os resultados do cálculo sejam inesperadamente imprecisos devido à falta de dados.

Modelo de permissão

  • Chave global: Este recurso pode ser ativado ou desativado no nível do locatário (tenant) e fica desativado por padrão. Quando desativado, o comportamento corresponde ao modelo existente, em que a permissão SELECT é suficiente para acessar dados em todos os tipos de armazenamento.

  • Granularidade da permissão: As permissões são controladas no nível da tabela. Ao conceder permissões em uma tabela particionada, elas se aplicam a todas as partições dentro dessa tabela.

  • Política de autorização: Após a ativação da chave, o acesso a dados em armazenamento de baixa frequência ou de longo prazo requer tanto a permissão SELECT na tabela quanto a permissão de acesso correspondente para o tipo de armazenamento. O acesso aos dados do armazenamento padrão não é afetado.

Objeto

Ações

Descrição

Método de autorização

Tabela

ReadLowFrequencyStorage

Permite a leitura de dados de uma tabela ou partição em armazenamento de baixa frequência (lowfrequency).

ACL, Policy

Tabela

ReadLongtermStorage

Permite a leitura de dados de uma tabela ou partição em armazenamento de longo prazo (longterm).

ACL, Policy

Combinações de permissões

A tabela a seguir mostra os resultados de acesso para um usuário com permissão SELECT em uma tabela após a ativação da chave de controle de acesso.

Permissões existentes

Armazenamento padrão

Armazenamento de baixa frequência

Armazenamento de longo prazo

SELECT

Permitido

Negado

Negado

SELECT + ReadLowFrequencyStorage

Permitido

Permitido

Negado

SELECT + ReadLongtermStorage

Permitido

Negado

Permitido

SELECT + ReadLowFrequencyStorage + ReadLongtermStorage

Permitido

Permitido

Permitido

Limitações

  • A chave é de nível de locatário (tenant). Uma vez ativada, ela afeta todos os projetos e todas as tabelas e partições que já estão em armazenamento de baixa frequência ou de longo prazo dentro do locatário. Antes de ativar a chave, revise e conceda as permissões necessárias para os jobs existentes para evitar interrupções no serviço.

  • Table Owners, Project Owners, Schema Owners e usuários com a função Super_Administrator ou Admin têm as permissões necessárias por padrão e não precisam receber permissões adicionais. Eles também podem conceder essas permissões a outros usuários ou funções.

  • Essas permissões controlam apenas a leitura de dados frios. Para transferir uma tabela ou partição do armazenamento de baixa frequência ou de longo prazo de volta para o armazenamento padrão, o usuário ainda precisa da permissão ALTER na tabela.

  • Para projetos que têm a sintaxe Schema ativada (modelo de três níveis), você deve ativar a sintaxe de três níveis no nível da sessão antes de executar operações de autorização e consulta: SET odps.namespace.schema=true;.

Procedimento

Pré-requisitos

A chave de controle de acesso no nível do locatário para armazenamento em camadas está ativada. Para fazer isso, siga estas etapas:

  1. Faça login no MaxCompute console e selecione uma região no canto superior esquerdo.

  2. No painel de navegação à esquerda, escolha Manage Configurations > Tenants .

  3. Na aba Tenant Property, ative a chave Tenant-level Schema Syntax.

Note: Após ativar a chave, os usuários com apenas a permissão SELECT não poderão mais acessar dados em armazenamento de baixa frequência ou de longo prazo. Conceda as permissões necessárias com antecedência para evitar a falha de jobs existentes.

Etapa 1: Verificar o tipo de armazenamento

O campo StorageTier nas propriedades da tabela ou partição especifica o tipo de armazenamento atual. Apenas os dados armazenados nas camadas de baixa frequência (lowfrequency) ou de longo prazo (longterm) estão sujeitos a restrições de permissão.

CREATE ROW ACCESS POLICY policy03 
ON storage_table 
TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.

Etapa 2: Conceder permissões de acesso

Método 1: Autorização ACL

Use este método para autorização precisa em uma única tabela. Você pode conceder permissões a um usuário ou a uma função.

  • Formato do comando

    CREATE ROW ACCESS POLICY policy03 
    ON storage_table 
    TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
    FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.
  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    table_name

    Sim

    O nome da tabela a ser autorizada. Para uma tabela particionada, a concessão de permissão no nível da tabela se aplica a todas as suas partições.

    user_name

    Escolha um

    O usuário autorizado é um usuário de função RAM no formato RAM$<AccountName>:role/<RamRoleName>, que deve estar entre aspas simples ou backticks.

    role_name

    Escolha um

    A função à qual as permissões são concedidas. A função deve ser criada e atribuída ao usuário de destino antecipadamente.

  • Exemplos

    CREATE ROW ACCESS POLICY policy03 
    ON storage_table 
    TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
    FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.

Método 2: Autorização por política

Use este método para autorização em massa. Ele suporta a correspondência de várias tabelas usando curingas ou expressões regulares e só pode conceder permissões a funções.

  • Configurar pelo console

    1. Faça login no MaxCompute console e selecione uma região no canto superior esquerdo.

    2. No painel de navegação à esquerda, escolha Manage Configurations > Projects.

    3. Na página Projects, clique em Manage na coluna Actions do projeto de destino.

    4. Na página Project Settings, clique na aba Role Permissions e modifique a autorização para a função de destino.

    5. Defina Authorization Model como Policy, insira o conteúdo da política no campo Document e envie.

      Exemplo de política: Concede a uma função a permissão para ler os dados de armazenamento de baixa frequência de todas as tabelas que começam com storage_table_lowfreq.

      CREATE ROW ACCESS POLICY policy03 
      ON storage_table 
      TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
      FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.
  • Configurar usando comandos SQL

    CREATE ROW ACCESS POLICY policy03 
    ON storage_table 
    TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
    FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.

Etapa 3: Verificar permissões

Use a conta autorizada para executar os seguintes comandos e verificar se as permissões entraram em vigor e, em seguida, acesse os dados de destino para confirmar.

CREATE ROW ACCESS POLICY policy03 
ON storage_table 
TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.

Se a autorização estiver efetiva, a consulta retornará resultados. Caso contrário, um erro será relatado com a seguinte mensagem:

CREATE ROW ACCESS POLICY policy03 
ON storage_table 
TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.

FAQ

Restaurar o comportamento de acesso anterior

Para restaurar o comportamento original, basta desativar a chave de controle de acesso ao armazenamento em camadas no nível do locatário. Após desativá-la, os usuários com permissão SELECT poderão acessar dados em todos os tipos de armazenamento. Quaisquer permissões já concedidas não serão afetadas.

Filtragem de dados de partição

O acesso a dados configurados para armazenamento de baixa frequência ou de longo prazo gera uma taxa de acesso. Você pode usar o recurso {{XREF_5}} junto com a função GET_PARTITION_META para controlar as permissões de dados em armazenamento de baixa frequência ou de longo prazo e gerenciar o acesso a esses dados.

GET_PARTITION_META

Nota

GET_PARTITION_META é uma função especial que só pode ser usada com controle de acesso no nível de linha. Ela não pode ser usada em consultas SQL padrão.

Sintaxe

CREATE ROW ACCESS POLICY policy03 
ON storage_table 
TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.

Parâmetros

Parâmetro

Descrição

tableName

O nome da tabela, que deve ser uma tabela particionada. O valor é do tipo String e suporta o formato project.table ou project.schema.table.

pt_col

Cada parâmetro de pt_col1 a pt_col_n corresponde a um nível de partição da tabela particionada. Cada parâmetro deve ser uma referência de coluna.

Valor de retorno

Retorna uma Struct do tipo struct<storagetier:string>. A struct contém um único campo String que descreve o tipo de armazenamento da partição correspondente.

Notas de uso

  • Ao adicionar uma política no nível de linha a uma tabela, considere o comportamento de acesso de usuários diferentes daqueles que estão sendo controlados. Se a tabela já estiver sendo acessada por outros usuários, você deve definir políticas explícitas para eles para evitar problemas de filtragem de dados causados por negação de acesso não intencional. Para mais informações, consulte {{XREF_6}}.

  • Por padrão, as tabelas do MaxCompute podem ser acessadas não apenas por SQL, mas também por engines externos como Spark e Flink. No entanto, atualmente apenas a engine SQL do MaxCompute suporta a função GET_PARTITION_META. Portanto, se você usar GET_PARTITION_META em uma política de controle de acesso no nível de linha, apenas a engine SQL do MaxCompute poderá ler a tabela. Outras engines não conseguirão acessar a tabela.

  • Além de atender aos requisitos de permissão no nível de linha, um usuário também deve ter a permissão SELECT nos dados para acessá-los.

  • As condições de filtro dentro do GET_PARTITION_META podem levar a diferentes efeitos de poda de partição (partition pruning) em diferentes cenários.

    • As condições de filtro se aplicam apenas aos campos de partição de uma tabela particionada. Por exemplo, você pode permitir o acesso ao armazenamento padrão e exigir que o valor da partição de primeiro nível seja 2024.

      CREATE ROW ACCESS POLICY policy03 
      ON storage_table 
      TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
      FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.

      Ao usar SQL para acessar storage_table e a cláusula WHERE não contiver uma condição de partição, o sistema suporta nativamente a poda de partição. Esse processo evita uma varredura completa na tabela, realizando acesso de somente leitura apenas nas partições necessárias em storage_table.

    • A condição de filtro inclui um valor de um campo não particionado, e uma operação AND é usada para conectar as duas condições de filtro. Por exemplo, uma condição para permitir o acesso ao armazenamento padrão é combinada com a>100 em um valor não particionado usando uma operação AND.

      CREATE ROW ACCESS POLICY policy03 
      ON storage_table 
      TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
      FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.

      Ao usar SQL para acessar storage_table sem uma condição de partição na cláusula WHERE, a poda de partição ainda é suportada, acessando apenas as partições armazenadas como standard.

    • Os critérios de filtro incluem um valor para um campo não particionado, e os dois critérios são conectados por uma operação OR. Por exemplo, uma condição que permite o acesso ao armazenamento padrão é combinada com o valor não particionado a>100 em uma operação OR.

      CREATE ROW ACCESS POLICY policy03 
      ON storage_table 
      TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
      FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.

      Ao usar SQL para acessar storage_table, há dois cenários:

      • Se a cláusula WHERE não contiver uma condição de partição, todas as partições serão varridas em busca de dados que satisfaçam a>100.

      • Se uma condição de partição for especificada na cláusula WHERE, apenas os dados que satisfazem condições como standard ou a>100 nas partições correspondentes serão varridos.

Exemplos

Defina a tabela particionada storage_table.

CREATE ROW ACCESS POLICY policy03 
ON storage_table 
TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.
  • Exemplo 1:

    Conceda a permissão policy01 ao usuário padrão para acessar dados de armazenamento padrão em storage_table. Todos os usuários (incluindo o Project Owner) não podem acessar dados de armazenamento de baixa frequência ou de longo prazo, e um valor vazio é retornado.

    CREATE ROW ACCESS POLICY policy03 
    ON storage_table 
    TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
    FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.

    O Logview Summary exibe a seguinte mensagem quando uma política de acesso no nível de linha é acionada:

    A mensagem WARNING:[1,15] row access policy is enabled on table yyy_hp_storagetier.storage_table01 indica que uma política de acesso de linha foi acionada quando você consultou a tabela.

  • Exemplo 2:

    Conceda ao usuário user_x a permissão policy02 para acessar dados de armazenamento de baixa frequência e de longo prazo em storage_table.

    CREATE ROW ACCESS POLICY policy03 
    ON storage_table 
    TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
    FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.

    Dois cenários podem ocorrer:

    • Se a permissão policy01 estiver definida para uma tabela, todos os usuários, exceto user_x, podem acessar os dados de armazenamento padrão de storage_table, mas recebem um valor nulo para seus dados de armazenamento de baixa frequência ou de longo prazo, enquanto user_x pode acessar os dados de armazenamento de baixa frequência e de longo prazo de storage_table, mas recebe um valor nulo para seus dados de armazenamento padrão.

    • Se a permissão policy01 não estiver configurada para a tabela, todos os usuários, exceto user_x, terão o acesso negado a quaisquer dados em storage_table e receberão um valor nulo. O user_x pode acessar dados em armazenamento de baixa frequência e de longo prazo, mas recebe um valor nulo ao tentar acessar dados no armazenamento padrão.

  • Exemplo 3:

    A política policy03 concede ao usuário user_y permissão de acesso a todos os dados em storage_table.

    CREATE ROW ACCESS POLICY policy03 
    ON storage_table 
    TO USER (user_y)  --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
    FILTER USING (true);  -- The constant 'true' means the user can access all data in the table.

    Dois cenários podem ocorrer:

    • Se a permissão policy01 estiver definida para a tabela, todos os usuários (exceto user_y) podem acessar os dados de armazenamento padrão de storage_table, mas não podem acessar seus dados de armazenamento de baixa frequência ou de longo prazo, e um valor vazio é retornado. O usuário user_y pode acessar dados de todos os tipos de armazenamento em storage_table.

    • Se a permissão policy01 não estiver definida para a tabela, todos os usuários (exceto user_y) não poderão acessar nenhum dado armazenado em storage_table, e um valor nulo será retornado. Apenas o usuário user_y pode acessar todos os dados armazenados em storage_table.