Todos os produtos
Search
Central de documentação

MaxCompute:Consultar uma partição de nível 1 com PyODPS

Última atualização: Jun 26, 2026

Este tópico explica como consultar uma partição de nível 1 usando PyODPS.

Pré-requisitos

São necessários os seguintes itens:

Procedimento

Nota

Este exemplo utiliza o basic mode do DataWorks. Ao criar um workspace, a opção Participate in Public Preview of DataStudio vem desmarcada por padrão. Este exemplo não se aplica a workspaces em preview público.

  1. Prepare os dados de teste.

    1. Crie uma tabela e carregue os dados. Para mais informações, consulte Criar uma tabela e carregar dados.

      Veja a seguir os schemas das tabelas e os dados de source.

      • A instrução de criação da tabela particionada user_detail é a seguinte:

        CREATE TABLE IF NOT EXISTS user_detail
        (
        userid    BIGINT COMMENT 'User ID',
        job       STRING COMMENT 'Job type',
        education STRING COMMENT 'Education'
        ) COMMENT 'User information table'
        PARTITIONED BY (dt STRING COMMENT 'Date',region STRING COMMENT 'Region');
      • A instrução para criar a tabela de source user_detail_ods é a seguinte:

        CREATE TABLE IF NOT EXISTS user_detail_ods
        (
          userid    BIGINT COMMENT 'User ID',
          job       STRING COMMENT 'Job type',
          education STRING COMMENT 'Education',
          dt STRING COMMENT 'Date',
          region STRING COMMENT 'Region'
        );
      • Salve os dados de teste no arquivo user_detail.txt e carregue esse arquivo na tabela user_detail_ods.

        0001,Internet,Bachelor,20190715,beijing
        0002,Education,Associate Degree,20190716,beijing
        0003,Finance,Master,20190715,shandong
        0004,Internet,Master,20190715,beijing
    2. Grave os dados da tabela de source user_detail_ods na tabela particionada user_detail.

      1. Faça login no console do DataWorks.

      2. No painel de navegação à esquerda, clique em Workspace.

      3. Localize o workspace desejado e, na coluna Actions, clique em Shortcuts > Data Development.

      4. Clique com o botão direito no workflow e escolha Create Node > ODPS SQL.

      5. Insira um nome para o nó e clique em OK.

      6. No nó ODPS SQL, insira o código a seguir:

        INSERT OVERWRITE TABLE user_detail PARTITION (dt, region) 
        SELECT userid, job, education, dt, region FROM user_detail_ods;
      7. Clique em Run para gravar os dados.

  2. Consulte a partição de nível 1 usando PyODPS.

    1. Faça login no console do DataWorks.

    2. No painel de navegação à esquerda, clique em Workspace.

    3. Localize o workspace desejado e, na coluna Actions, clique em Shortcuts > Data Development.

    4. Na página Data Development, clique com o botão direito no workflow criado e escolha Create Node > PyODPS 2.

    5. Insira um nome para o nó e clique em OK.

    6. Insira o código a seguir para consultar a partição de nível 1 de três formas: assíncrona, síncrona e usando DataFrame.

      import sys
      reload(sys)
      # Set the default system encoding to utf8.
      sys.setdefaultencoding('utf8')
      # Read the level-1 partition asynchronously.
      instance = o.run_sql('select * from user_detail WHERE dt=\'20190715\'')
      instance.wait_for_success()
      for record in instance.open_reader():
          print record["userid"],record["job"],record["education"]
      # Read the level-1 partition synchronously.
      with o.execute_sql('select * from user_detail WHERE dt=\'20190715\'').open_reader() as reader4:
          print reader4.raw
          for record in reader4:
              print record["userid"],record["job"],record["education"]
      # Use a PyODPS DataFrame to read the level-1 partition.
      pt_df = DataFrame(o.get_table('user_detail').get_partition('dt=20190715'))
      print pt_df.head(10)
    7. Clique em Run.

    8. Visualize os resultados no Runtime Log.

      4  Internet  master
      1  Internet  bachelor
      3  finance  master
      "userid","job","education","dt","region"
      4,"Internet","master","20190715","beijing"
      1,"Internet","bachelor","20190715","beijing"
      3,"finance","master","20190715","shandong"
      4  Internet  master
      1  Internet  bachelor
      3  finance  master
      Try to fetch data from tunnel
         userid      job education
      0       4  Internet    master
      1       1  Internet  bachelor
      2       3   finance    master