Bu konuda, PyODPS kullanarak birinci düzey bir bölümün nasıl sorgulanacağı açıklanmaktadır.
Önkoşullar
Aşağıdakiler gereklidir:
MaxCompute etkinleştirilmiştir.
DataWorks etkinleştirilmiştir.
DataWorks'te bir iş akışı oluşturulmuştur. Daha fazla bilgi için bkz. İş akışı oluşturma.
Yordam
Bu örnekte DataWorks'ün basic mode modu kullanılmaktadır. Bir çalışma alanı oluşturduğunuzda, Participate in Public Preview of DataStudio seçeneği varsayılan olarak işaretlenmemiş durumdadır. Bu örnek, genel önizlemedeki çalışma alanları için geçerli değildir.
-
Test verilerini hazırlayın.
-
Bir tablo oluşturun ve veri yükleyin. Daha fazla bilgi için bkz. Tablo oluşturma ve veri yükleme.
Aşağıda tablo şemaları ve kaynak veriler gösterilmektedir.
-
Bölümlenmiş tablo user_detail için tablo oluşturma ifadesi aşağıdaki gibidir.
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'); -
Kaynak tablo user_detail_ods için oluşturma ifadesi aşağıdaki gibidir.
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' ); -
Test verilerini user_detail.txt dosyasına kaydedin. Bu dosyayı user_detail_ods tablosuna yükleyin.
0001,Internet,Bachelor,20190715,beijing 0002,Education,Associate Degree,20190716,beijing 0003,Finance,Master,20190715,shandong 0004,Internet,Master,20190715,beijing
-
-
Kaynak veri tablosundan
user_detail_odsbölümlenmiş tabloyauser_detailveri yazın.DataWorks konsolu üzerinde oturum açın.
Sol gezinme bölmesinde Workspace öğesini tıklayın.
Hedef çalışma alanını bulun ve Actions sütununda seçeneğini tıklayın.
İş akışına sağ tıklayın ve seçeneğini belirleyin.
Bir düğüm adı girin ve OK öğesini tıklayın.
-
ODPS SQL düğümünde aşağıdaki kodu girin.
INSERT OVERWRITE TABLE user_detail PARTITION (dt, region) SELECT userid, job, education, dt, region FROM user_detail_ods; Verileri yazmak için Run öğesini tıklayın.
-
-
PyODPS kullanarak birinci düzey bölümü sorgulayın.
DataWorks konsolu üzerinde oturum açın.
Sol gezinme bölmesinde Workspace öğesini tıklayın.
Hedef çalışma alanını bulun ve Actions sütununda seçeneğini tıklayın.
Data Development sayfasında oluşturduğunuz iş akışına sağ tıklayın ve seçeneğini belirleyin.
Bir düğüm adı girin ve OK öğesini tıklayın.
-
Birinci düzey bölümü eşzamansız, eşzamanlı ve DataFrame kullanarak olmak üzere üç farklı şekilde sorgulamak için aşağıdaki kodu girin.
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) Run öğesini tıklayın.
-
Sonuçları Runtime Log bölümünde görüntüleyin.
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