Tüm Ürünler
Search
Belge Merkezi

MaxCompute:PyODPS ile birinci düzey bölümü sorgulama

Son Güncelleme:Oct 04, 2026

Bu konuda, PyODPS kullanarak birinci düzey bir bölümün nasıl sorgulanacağı açıklanmaktadır.

Önkoşullar

Aşağıdakiler gereklidir:

Yordam

Not

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.

  1. Test verilerini hazırlayın.

    1. 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
    2. Kaynak veri tablosundan user_detail_ods bölümlenmiş tabloya user_detail veri yazın.

      1. DataWorks konsolu üzerinde oturum açın.

      2. Sol gezinme bölmesinde Workspace öğesini tıklayın.

      3. Hedef çalışma alanını bulun ve Actions sütununda Shortcuts > Data Development seçeneğini tıklayın.

      4. İş akışına sağ tıklayın ve Create Node > ODPS SQL seçeneğini belirleyin.

      5. Bir düğüm adı girin ve OK öğesini tıklayın.

      6. 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;
      7. Verileri yazmak için Run öğesini tıklayın.

  2. PyODPS kullanarak birinci düzey bölümü sorgulayın.

    1. DataWorks konsolu üzerinde oturum açın.

    2. Sol gezinme bölmesinde Workspace öğesini tıklayın.

    3. Hedef çalışma alanını bulun ve Actions sütununda Shortcuts > Data Development seçeneğini tıklayın.

    4. Data Development sayfasında oluşturduğunuz iş akışına sağ tıklayın ve Create Node > PyODPS 2 seçeneğini belirleyin.

    5. Bir düğüm adı girin ve OK öğesini tıklayın.

    6. 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)
    7. Run öğesini tıklayın.

    8. 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