Este tópico explica como consultar uma partição de nível 1 usando PyODPS.
Pré-requisitos
São necessários os seguintes itens:
O MaxCompute está ativado.
O DataWorks está ativado.
Um workflow foi criado no DataWorks. Para mais informações, consulte Criar um workflow.
Procedimento
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.
-
Prepare os dados de teste.
-
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
-
-
Grave os dados da tabela de source
user_detail_odsna tabela particionadauser_detail.Faça login no console do DataWorks.
No painel de navegação à esquerda, clique em Workspace.
Localize o workspace desejado e, na coluna Actions, clique em .
Clique com o botão direito no workflow e escolha .
Insira um nome para o nó e clique em OK.
-
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; Clique em Run para gravar os dados.
-
-
Consulte a partição de nível 1 usando PyODPS.
Faça login no console do DataWorks.
No painel de navegação à esquerda, clique em Workspace.
Localize o workspace desejado e, na coluna Actions, clique em .
Na página Data Development, clique com o botão direito no workflow criado e escolha .
Insira um nome para o nó e clique em OK.
-
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) Clique em Run.
-
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