Todos os produtos
Search
Central de documentação

MaxCompute:Uso do PyODPS no DataWorks

Última atualização: Jul 10, 2026

O PyODPS, SDK Python para MaxCompute, permite desenvolver e executar tarefas PyODPS no DataWorks. Esta página aborda limitações, fluxo de trabalho principal e exemplos simples de uso.

Limitações

  • Limites de uso

    Se você receber o erro Got killed, significa que o processo foi encerrado por exceder o limite de memória. Não baixe dados em um nó PyODPS para processamento local no DataWorks. Em vez disso, envie tarefas de processamento de dados ao MaxCompute para execução distribuída. Para mais detalhes, consulte Precauções: Não baixe todos os dados localmente para executar o PyODPS.

  • Limites de suporte a pacotes

    • Os nós PyODPS no DataWorks não incluem alguns pacotes, como matplotlib. Isso restringe os seguintes recursos:

      • A função plot do DataFrame.

      • As funções definidas pelo usuário (UDFs) do DataFrame devem ser enviadas ao MaxCompute para execução. O sandbox Python suporta apenas bibliotecas Python puras e NumPy como bibliotecas de terceiros; portanto, não é possível usar Pandas diretamente.

      • Em códigos executados no DataWorks sem UDFs, utilize os pacotes NumPy e Pandas pré-instalados. Outros pacotes de terceiros com código binário não são suportados.

    • Os nós PyODPS no DataWorks não suportam o pacote Python atexit. Utilize um bloco try-finally para implementar funcionalidade semelhante.

  • Limite na quantidade de registros de dados para leitura

    Por padrão, options.tunnel.use_instance_tunnel está definido como False para nós PyODPS no DataWorks, o que limita as leituras a 10.000 registros. Para ler mais registros, ative globalmente o instance tunnel definindo options.tunnel.use_instance_tunnel como True.

Procedimento

  1. Crie um nó PyODPS.

    Acesse a página Data Development no DataWorks para criar um nó PyODPS. Existem dois tipos de nós PyODPS:

    • PyODPS 2, baseado em Python 2.

    • PyODPS 3, baseado em Python 3.

    Crie um nó PyODPS com base na versão do Python utilizada. Para etapas detalhadas, consulte Desenvolver uma tarefa PyODPS 2 e Desenvolver uma tarefa PyODPS 3.

  2. Desenvolva o código da tarefa PyODPS.

    Após criar o nó, siga os exemplos nas seções abaixo para conhecer as principais capacidades do PyODPS.

    Para mais informações sobre o uso do PyODPS, consulte Visão geral das operações básicas e DataFrame (não recomendado). Você também pode seguir o exemplo em Usar um nó PyODPS para segmentação de palavras chinesas Jieba para realizar uma operação simples de ponta a ponta.

  3. Configure as propriedades de agendamento e, em seguida, salve, envie e implante o nó para permitir sua execução periódica.

Ponto de entrada do MaxCompute

Em um nó PyODPS, o DataWorks fornece uma variável global, odps ou o, como ponto de entrada do MaxCompute. Não é necessário defini-la manualmente.

# Check whether the pyodps_iris table exists.
print(o.exist_table('pyodps_iris'))

O código retorna True, indicando que a tabela pyodps_iris existe.

Nota

As credenciais do objeto de ponto de entrada o permitem acesso apenas ao MaxCompute, e não a outros serviços cloud. O DataWorks fornece apenas essas credenciais durante a execução de um nó PyODPS. Você não pode obter credenciais adicionais chamando métodos neste objeto, como o.from_global.

Executar SQL

Capacidades gerais

  • Execute instruções SQL em um nó PyODPS usando métodos como execute_sql() ou run_sql(). Esses métodos suportam principalmente instruções de Linguagem de Definição de Dados (DDL) e Linguagem de Manipulação de Dados (DML).

    Nota

    Os métodos execute_sql() e run_sql() não suportam todas as instruções SQL. Para instruções que não sejam DDL ou DML, utilize outros métodos. Por exemplo, use o método run_security_query para executar instruções GRANT ou REVOKE, e use o método run_xflow ou execute_xflow para executar comandos de API.

  • Para ler resultados de execução SQL em um nó PyODPS, utilize open_reader().

Para mais informações sobre operações relacionadas a SQL em um nó PyODPS, consulte SQL.

Precauções: formato de dados e limites de registros

Por motivos de compatibilidade histórica, o Instance Tunnel não vem ativado por padrão no DataWorks. Como resultado, instance.open_reader usa a interface Result por padrão, limitada a 10.000 registros e com problemas conhecidos em tipos de dados complexos. Se seu projeto não possuir um mecanismo de proteção de dados e você precisar iterar sobre todos os dados ou ler tipos complexos como Array, ative o Instance Tunnel e desative o limit.

  • Desativar o limit em tempo de execução

    Utilize a seguinte instrução para ativar o Instance Tunnel globalmente e remover a restrição do limit.

    options.tunnel.use_instance_tunnel = True
    options.tunnel.limit_instance_tunnel = False  # Disable the limit to read all data.
    with instance.open_reader() as reader:
        # You can read all data through Instance Tunnel.
        # You can use reader.count to get the record count.
  • Desativar o limit apenas para o Reader atual

    Adicione tunnel=True ao open_reader para ativar o instance tunnel apenas na chamada atual do open_reader. Adicione limit=False para desativar a restrição do limit nessa chamada específica.

    with instance.open_reader(tunnel=True, limit=False) as reader:
        # This open_reader call uses the Instance Tunnel interface and can read all data.

Para mais informações sobre o Instance Tunnel e limites de leitura de dados, consulte Ler resultados de execução SQL.

DataFrame

  • Execução

    No DataWorks, as operações de DataFrame exigem uma chamada explícita a um método de execução imediata, como execute ou persist.

    # Call an immediate execution method to process each record and print all data from the pyodps_iris table where iris.sepalwidth is less than 3.
    from odps.df import DataFrame
    iris = DataFrame(o.get_table('pyodps_iris'))
    for record in iris[iris.sepalwidth < 3].execute():  
        print(record)
  • Saída detalhada

    Por padrão, options.verbose vem ativado no DataWorks, imprimindo informações detalhadas, como a URL do Logview, durante a execução do nó. Configure essa opção para controlar a exibição desses detalhes.

Para mais exemplos de operações com DataFrame, consulte DataFrame (não recomendado).

Parâmetros de agendamento

Em um nó PyODPS, os parâmetros de agendamento permitem obter valores como a data de negócios de uma execução de tarefa. Embora a definição e o uso dos parâmetros de agendamento sejam iguais aos dos nós SQL, a forma de referenciá-los no código é diferente.

  • Os nós SQL utilizam uma string como ${param_name} diretamente no código.

  • Em vez de substituir strings para ${param_name}, o DataWorks adiciona um dicionário global chamado args antes da execução do nó. Obtenha o valor de um parâmetro de agendamento acessando esse dicionário, por exemplo, args[param_name].

Por exemplo, se você definir o parâmetro de agendamento ds=${yyyymmdd} no painel Basic properties > Parameters, recupere esse parâmetro no código da seguinte forma:

  • Obtenha o valor do parâmetro ds.

    print('ds=' + args['ds'])
    # Returns the time of ds, for example, ds=20161116
  • Obtenha dados de uma tabela em uma partição chamada ds=${yyyymmdd}.

    o.get_table('table_name').get_partition('ds=' + args['ds'])
    # Obtain data from the ds partition of the table_name table.

Para mais informações sobre parâmetros de agendamento, consulte Configurar e usar parâmetros de agendamento.

Dicas de parâmetros de tempo de execução

Para definir parâmetros de tempo de execução para uma tarefa, utilize o parâmetro hints, que aceita um dict.

o.execute_sql('select * from pyodps_iris', hints={'odps.sql.mapper.split.size': 16})

Também é possível definir sql.settings globalmente. Uma vez configuradas, essas definições são aplicadas automaticamente a cada execução.

from odps import options
options.sql.settings = {'odps.sql.mapper.split.size': 16}
o.execute_sql('select * from pyodps_iris')  # Hints are added based on the global configuration.

Pacotes de terceiros

Os nós do DataWorks vêm pré-instalados com os seguintes pacotes de terceiros.

Nome do pacote

Versão Python 2

Versão Python 3

requests

2.11.1

2.26.0

numpy

1.16.6

1.18.1

pandas

0.24.2

1.0.5

scipy

0.19.0

1.3.0

scikit_learn

0.18.1

0.22.1

pyarrow

0.16.0

2.0.0

lz4

2.1.4

3.1.10

zstandard

0.14.1

0.17.0

Caso precise de um pacote não pré-instalado, utilize o método load_resource_package para carregar um pacote de terceiros a partir de um recurso do MaxCompute. Primeiro, crie um arquivo de pacote com pyodps-pack e, em seguida, use load_resource_package para carregá-lo antes de importar seu conteúdo. Para mais informações sobre pyodps-pack, consulte Criar um pacote de terceiros para PyODPS e Usar um pacote de terceiros no PyODPS.

Nota

Ao criar um pacote para um nó Python 2, adicione o parâmetro --dwpy27 ao comando pyodps-pack.

Exemplo:

  1. Utilize o seguinte comando para empacotar o ipaddress.

    pyodps-pack -o ipaddress-bundle.tar.gz ipaddress
  2. Após fazer upload e enviar ipaddress-bundle.tar.gz como recurso, utilize o pacote ipaddress em um nó PyODPS 3 da seguinte maneira:

    load_resource_package("ipaddress-bundle.tar.gz")
    import ipaddress

O DataWorks limita o tamanho total dos pacotes baixados a 100 MB. Para excluir pacotes pré-instalados do seu bundle, utilize o parâmetro --exclude do pyodps-pack. Por exemplo, o comando abaixo exclui numpy e pandas.

pyodps-pack -o bundle.tar.gz --exclude numpy --exclude pandas <YOUR_PACKAGE>

Outras contas

Para acessar o MaxCompute com uma conta diferente, utilize o método as_account no objeto de ponto de entrada do MaxCompute. Isso cria um novo objeto de ponto de entrada independente da instância padrão o.

Importante

O método as_account requer PyODPS 0.11.3 ou posterior. Não é possível usar este método se o seu ambiente DataWorks executar uma versão anterior.

Procedimento

  1. Conceda ao outro usuário as permissões necessárias no projeto. Para mais informações, consulte Apêndice: Conceder permissões a outra conta.

  2. No nó PyODPS, utilize o método as_account para trocar de conta e criar um novo objeto de ponto de entrada.

    import os
    # Make sure the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set to your AccessKey ID,
    # and the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set to your AccessKey Secret.
    # We recommend that you do not use the AccessKey ID and AccessKey Secret strings directly.
    new_odps = o.as_account(
        os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
        os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET')
    )
  3. Verifique se a conta foi trocada.

    Consulte as informações do usuário atual adicionando a seguinte instrução. Se a saída mostrar o UID do outro usuário, a troca de conta foi bem-sucedida.

    print(new_odps.get_project().current_user)
    Nota

    new_odps representa o objeto de ponto de entrada para a nova conta.

Exemplo

  1. Crie uma tabela e importe dados.

    1. Baixe o conjunto de dados Iris iris.data e renomeie-o para iris.csv.

    2. Crie uma tabela chamada pyodps_iris e faça upload do conjunto de dados iris.csv. Para instruções, consulte Criar uma tabela e fazer upload de dados.

      Abaixo está a instrução de criação da tabela.

      CREATE TABLE if not exists pyodps_iris
      (
      sepallength  DOUBLE comment 'sepal length (cm)',
      sepalwidth   DOUBLE comment 'sepal width (cm)',
      petallength  DOUBLE comment 'petal length (cm)',
      petalwidth   DOUBLE comment 'petal width (cm)',
      name         STRING comment 'species'
      );
  2. Crie um nó ODPS SQL para conceder as permissões necessárias. Para mais informações, consulte Apêndice: Conceder permissões a outra conta.

  3. Crie um nó PyODPS para trocar de conta. O código abaixo serve como exemplo. Para mais informações, consulte Desenvolver uma tarefa PyODPS 3.

    from odps import ODPS
    import os
    import sys
    # Make sure the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set to the user's AccessKey ID,
    # and the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set to the user's AccessKey Secret.
    # We recommend that you do not use the AccessKey ID and AccessKey Secret strings directly.
    os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] = '<AccessKey ID>'
    os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] = '<AccessKey Secret>'
    od = o.as_account(os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), 
             os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET')
            )
    iris = DataFrame(od.get_table('pyodps_iris'))
    # Print the output by using a conditional statement.
    with od.execute_sql('select * from pyodps_iris WHERE sepallength > 5 ').open_reader() as reader4:
        print(reader4.raw)
        for record in reader4:
            print(record["sepallength"],record["sepalwidth"],record["petallength"],record["petalwidth"],record["name"])
    # Print the UID of the current user.
    print(od.get_project().current_user)
  4. Execute o código e visualize o resultado.

    Executing user script with PyODPS 0.11.4.post0
    "sepallength","sepalwidth","petallength","petalwidth","name"
    5.4,3.9,1.7,0.4,"Iris-setosa"
    5.4,3.7,1.5,0.2,"Iris-setosa"
    5.8,4.0,1.2,0.2,"Iris-setosa"
    5.7,4.4,1.5,0.4,"Iris-setosa"
    5.4,3.9,1.3,0.4,"Iris-setosa"
    5.1,3.5,1.4,0.3,"Iris-setosa"
    5.7,3.8,1.7,0.3,"Iris-setosa"
    5.1,3.8,1.5,0.3,"Iris-setosa"
    5.4,3.4,1.7,0.2,"Iris-setosa"
    5.1,3.7,1.5,0.4,"Iris-setosa"
    5.1,3.3,1.7,0.5,"Iris-setosa"
    5.2,3.5,1.5,0.2,"Iris-setosa"
    5.2,3.4,1.4,0.2,"Iris-setosa"
    5.4,3.4,1.5,0.4,"Iris-setosa"
    5.2,4.1,1.5,0.1,"Iris-setosa"
    5.5,4.2,1.4,0.2,"Iris-setosa"
    5.5,3.5,1.3,0.2,"Iris-setosa"
    5.1,3.4,1.5,0.2,"Iris-setosa"
    5.1,3.8,1.9,0.4,"Iris-setosa"
    5.1,3.8,1.6,0.2,"Iris-setosa"
    5.3,3.7,1.5,0.2,"Iris-setosa"
    7.0,3.2,4.7,1.4,"Iris-versicolor"
    6.4,3.2,4.5,1.5,"Iris-versicolor"
    6.9,3.1,4.9,1.5,"Iris-versicolor"
    5.5,2.3,4.0,1.3,"Iris-versicolor"
    6.5,2.8,4.6,1.5,"Iris-versicolor"
    5.7,2.8,4.5,1.3,"Iris-versicolor"
    6.3,3.3,4.7,1.6,"Iris-versicolor"
    6.6,2.9,4.6,1.3,"Iris-versicolor"
    5.2,2.7,3.9,1.4,"Iris-versicolor"
    5.9,3.0,4.2,1.5,"Iris-versicolor"
    6.0,2.2,4.0,1.0,"Iris-versicolor"
    6.1,2.9,4.7,1.4,"Iris-versicolor"
    5.6,2.9,3.6,1.3,"Iris-versicolor"
    6.7,3.1,4.4,1.4,"Iris-versicolor"
    5.6,3.0,4.5,1.5,"Iris-versicolor"
    5.8,2.7,4.1,1.0,"Iris-versicolor"
    6.2,2.2,4.5,1.5,"Iris-versicolor"
    5.6,2.5,3.9,1.1,"Iris-versicolor"
    5.9,3.2,4.8,1.8,"Iris-versicolor"
    6.1,2.8,4.0,1.3,"Iris-versicolor"
    6.3,2.5,4.9,1.5,"Iris-versicolor"
    6.1,2.8,4.7,1.2,"Iris-versicolor"
    6.4,2.9,4.3,1.3,"Iris-versicolor"
    6.6,3.0,4.4,1.4,"Iris-versicolor"
    6.8,2.8,4.8,1.4,"Iris-versicolor"
    6.7,3.0,5.0,1.7,"Iris-versicolor"
    6.0,2.9,4.5,1.5,"Iris-versicolor"
    5.7,2.6,3.5,1.0,"Iris-versicolor"
    5.5,2.4,3.8,1.1,"Iris-versicolor"
    5.5,2.4,3.7,1.0,"Iris-versicolor"
    5.8,2.7,3.9,1.2,"Iris-versicolor"
    6.0,2.7,5.1,1.6,"Iris-versicolor"
    5.4,3.0,4.5,1.5,"Iris-versicolor"
    6.0,3.4,4.5,1.6,"Iris-versicolor"
    6.7,3.1,4.7,1.5,"Iris-versicolor"
    6.3,2.3,4.4,1.3,"Iris-versicolor"
    5.6,3.0,4.1,1.3,"Iris-versicolor"
    5.5,2.5,4.0,1.3,"Iris-versicolor"
    5.5,2.6,4.4,1.2,"Iris-versicolor"
    6.1,3.0,4.6,1.4,"Iris-versicolor"
    5.8,2.6,4.0,1.2,"Iris-versicolor"
    5.6,2.7,4.2,1.3,"Iris-versicolor"
    5.7,3.0,4.2,1.2,"Iris-versicolor"
    5.7,2.9,4.2,1.3,"Iris-versicolor"
    6.2,2.9,4.3,1.3,"Iris-versicolor"
    5.1,2.5,3.0,1.1,"Iris-versicolor"
    5.7,2.8,4.1,1.3,"Iris-versicolor"
    6.3,3.3,6.0,2.5,"Iris-virginica"
    5.8,2.7,5.1,1.9,"Iris-virginica"
    7.1,3.0,5.9,2.1,"Iris-virginica"
    6.3,2.9,5.6,1.8,"Iris-virginica"
    6.5,3.0,5.8,2.2,"Iris-virginica"
    7.6,3.0,6.6,2.1,"Iris-virginica"
    7.3,2.9,6.3,1.8,"Iris-virginica"
    6.7,2.5,5.8,1.8,"Iris-virginica"
    7.2,3.6,6.1,2.5,"Iris-virginica"
    6.5,3.2,5.1,2.0,"Iris-virginica"
    6.4,2.7,5.3,1.9,"Iris-virginica"
    6.8,3.0,5.5,2.1,"Iris-virginica"
    5.7,2.5,5.0,2.0,"Iris-virginica"
    5.8,2.8,5.1,2.4,"Iris-virginica"
    6.4,3.2,5.3,2.3,"Iris-virginica"
    6.5,3.0,5.5,1.8,"Iris-virginica"
    7.7,3.8,6.7,2.2,"Iris-virginica"
    7.7,2.6,6.9,2.3,"Iris-virginica"
    6.0,2.2,5.0,1.5,"Iris-virginica"
    6.9,3.2,5.7,2.3,"Iris-virginica"
    5.6,2.8,4.9,2.0,"Iris-virginica"
    7.7,2.8,6.7,2.0,"Iris-virginica"
    6.3,2.7,4.9,1.8,"Iris-virginica"
    6.7,3.3,5.7,2.1,"Iris-virginica"
    7.2,3.2,6.0,1.8,"Iris-virginica"
    6.2,2.8,4.8,1.8,"Iris-virginica"
    6.1,3.0,4.9,1.8,"Iris-virginica"
    6.4,2.8,5.6,2.1,"Iris-virginica"
    7.2,3.0,5.8,1.6,"Iris-virginica"
    7.4,2.8,6.1,1.9,"Iris-virginica"
    7.9,3.8,6.4,2.0,"Iris-virginica"
    6.4,2.8,5.6,2.2,"Iris-virginica"
    6.3,2.8,5.1,1.5,"Iris-virginica"
    6.1,2.6,5.6,1.4,"Iris-virginica"
    7.7,3.0,6.1,2.3,"Iris-virginica"
    6.3,3.4,5.6,2.4,"Iris-virginica"
    6.4,3.1,5.5,1.8,"Iris-virginica"
    6.0,3.0,4.8,1.8,"Iris-virginica"
    6.9,3.1,5.4,2.1,"Iris-virginica"
    6.7,3.1,5.6,2.4,"Iris-virginica"
    6.9,3.1,5.1,2.3,"Iris-virginica"
    5.8,2.7,5.1,1.9,"Iris-virginica"
    6.8,3.2,5.9,2.3,"Iris-virginica"
    6.7,3.3,5.7,2.5,"Iris-virginica"
    6.7,3.0,5.2,2.3,"Iris-virginica"
    6.3,2.5,5.0,1.9,"Iris-virginica"
    6.5,3.0,5.2,2.0,"Iris-virginica"
    6.2,3.4,5.4,2.3,"Iris-virginica"
    5.9,3.0,5.1,1.8,"Iris-virginica"
    <User 139xxxxxxxxxxxxx>

Solução de problemas

Se o código parar de responder durante a execução e não produzir saída, adicione o seguinte comentário no início do código. O DataWorks imprimirá o rastreamento de pilha de todas as threads a cada 30 segundos.

# -*- dump_traceback: true -*-
Nota

Este método aplica-se a nós PyODPS 3, versão 0.11.4.1 ou posterior.

Versão do PyODPS

Verifique a versão atual do PyODPS executando um código Python ou visualizando o log de tempo de execução de uma tarefa PyODPS.

  • Execute o seguinte código em um nó PyODPS:

    # Enter the following code:
    import odps; print(odps.__version__)
    # Sample result
    0.11.2.3
  • Verifique o log de tempo de execução de uma tarefa PyODPS. A versão aparece na saída do log, conforme este exemplo:

    2023-07-26 15:39:53  INFO SKYNET_DAGTYPE=100:
    2023-07-26 15:39:53  INFO SKYNET_SYSTEM_ENV=dev:
    2023-07-26 15:39:53  INFO SKYNET_GMTDATE=20230726:
    2023-07-26 15:39:53  INFO SKYNET_BIZDATE=20230726:
    2023-07-26 15:39:53  INFO SKYNET_ENVTYPE=1:
    2023-07-26 15:39:53  INFO SKYNET_PROJECTID=342277:
    2023-07-26 15:39:53  INFO SKYNET_BUSINESS_ID=10756717:
    2023-07-26 15:39:53  INFO SKYNET_ARGS_ENABLE=true:
    2023-07-26 15:39:53  INFO SKYNET_ACCOUNT_ID=xxx
    2023-07-26 15:39:53  INFO TASK_SOURCE=dataworks_datastudio:
    2023-07-26 15:39:53  INFO SKYNET_REGION=xxx:
    2023-07-26 15:39:53  INFO LINK_FILE_ID=503440413:
    2023-07-26 15:39:53  INFO TASK_PLUGIN_NAME=pyodps:
    2023-07-26 15:39:53  INFO ALISA_UNIQUEKEY=xxx
    2023-07-26 15:39:53  INFO ALISA_TASK_ID=T3_xxx
    2023-07-26 15:39:53  INFO ALISA_TASK_EXEC_TARGET=group_599314507759873_dev:
    2023-07-26 15:39:53  INFO ALISA_TASK_PRIORITY=0:
    2023-07-26 15:39:53  INFO --- Invoking Shell command line now ---
    2023-07-26 15:39:53  INFO ============================================================
    Executing user script with PyODPS 0.11.4.post0
    "sepallength","sepalwidth","petallength","petalwidth","name"
    5.4,3.9,1.7,0.4,"Iris-setosa"
    5.4,3.7,1.5,0.2,"Iris-setosa"
    5.8,4.0,1.2,0.2,"Iris-setosa"

Apêndice: Conceder permissões ao usuário

Para permitir que outro usuário Alibaba Cloud (não um usuário RAM) acesse projetos e tabelas no seu workspace do DataWorks, crie um nó ODPS SQL e execute os seguintes comandos de autorização. Para mais informações sobre como criar um nó ODPS SQL, consulte Criar um nó ODPS SQL. Para mais informações sobre permissões, consulte Usuários e permissões.

-- Add another Alibaba Cloud account user at the project level.
add user ALIYUN$<account_name>;
-- Grant the CreateInstance permission on the project.
grant CreateInstance on project <project_name> to USER ALIYUN$<account_name>;
-- Grant the Describe and Select permissions on the table.
grant Describe, Select on table <table_name> to USER ALIYUN$<account_name>;
-- View the authorization results.
show grants for ALIYUN$<account_name>;

Abaixo está um exemplo de resultado de autorização ao executar show grants for ALIYUN$<account_name>;:

Authorization Type: ACL
[user/ALIYUN$:xxx.com]
A    projects/mc_xxx : CreateInstance
A    projects/mc_xxx/tables/pyodps_xxx : Describe | Select

Apêndice: Dados de amostra

Para acompanhar os exemplos deste tópico, crie a tabela pyodps_iris e preencha-a com dados seguindo as instruções em Etapa 1: Criar uma tabela e importar dados. Essa tabela é utilizada em todos os exemplos.

Tópicos relacionados

Utilize o recurso Operating history para visualizar o histórico de todas as tarefas executadas no DataStudio nos últimos três dias. Nessa visualização, é possível interromper tarefas em execução e salvar instruções SQL dos registros de tarefas como arquivos temporários. Para mais informações, consulte Histórico de operações.