Tüm Ürünler
Search
Belge Merkezi

MaxCompute:LATERAL VIEW

Son Güncelleme:Oct 04, 2026

MaxCompute'te tek bir veri satırını birden fazla satıra bölmek için kullanıcı tanımlı tablo değerli işlev (UDTF) ile birlikte LATERAL VIEW yan tümcesini kullanabilirsiniz. Bu konuda LATERAL VIEW'ın nasıl kullanılacağı açıklanmaktadır.

Giriş

LATERAL VIEW, MaxCompute'te Array ve Map gibi karmaşık veri türlerini işlemek amacıyla yaygın olarak kullanılır. Standart bir SELECT ifadesi her girdi satırı için bir çıktı satırı döndürür. Ancak UDTF'ye genel bakış sayfasında belirtildiği üzere UDTF'nin girdisi ile çıktısı arasında bire-çok ilişkisi bulunur. Bu nedenle UDTF'yi doğrudan SELECT listesinde kullanamazsınız. Bu kısıtlamayı aşmak ve elde edilen verileri toplamak için UDTF ile birlikte LATERAL VIEW kullanarak tek bir veri satırını birden fazla satıra bölebilirsiniz.

LATERAL VIEW ifadesi OUTER anahtar sözcüğünü içeriyorsa (örneğin LATERAL VIEW OUTER ...) ve UDTF herhangi bir satır döndürmezse orijinal girdi satırı sonuç kümesinde korunur. UDTF tarafından oluşturulması beklenen tüm sütunlar NULL değerini alır.

Söz dizimi

LATERALVIEW: LATERAL VIEW [OUTER] <udtf_name>(<expression>) <table_alias> AS <columnAlias> (',' <columnAlias>) 
fromClause: FROM <baseTable> (LATERALVIEW) [(LATERALVIEW) ...]

Parametreler

  • udtf_name: Gereklidir. Tek bir veri satırını birden fazla satıra bölmek için kullanılan UDTF'dir. Daha fazla bilgi için bkz. Diğer işlevlere genel bakış.

  • expression: Gereklidir. Bölünecek verileri içeren sütunun adıdır.

  • table_alias: Gereklidir. UDTF sonuç kümesi için takma addır.

  • columnAlias: Gereklidir. Satır bölme işlemiyle oluşturulan sütunlar için takma addır.

  • baseTable: Gereklidir. Kaynak tablodur.

Not

FROM yan tümcesinden sonra birden fazla LATERAL VIEW ifadesi kullanabilirsiniz. Sonraki bir LATERAL VIEW ifadesi kendisinden önce gelen tüm tabloları ve sütun adlarını referans alabilir. Bu sayede farklı sütunlardaki verileri bölebilirsiniz.

Örnek veriler

pageAds tablosu şu üç sütunu içerir: pageid STRING, col1 ARRAY<INT> ve col2 ARRAY<STRING>. Veriler aşağıdaki gibidir.


pageid


col1


col2


front_page


[1, 2, 3]


["a", "b", "c"]


contact_page


[3, 4, 5]


["d", "e", "f"]

Aşağıdaki ifadeler tabloyu oluşturur ve doldurur:

CREATE TABLE pageAds (pageid  STRING,col1 ARRAY<INT>,col2 ARRAY<STRING>);
INSERT INTO pageAds VALUES ('front_page',ARRAY(1,2,3),ARRAY("a","b","c"));
INSERT INTO pageAds VALUES ('contact_page',ARRAY(3,4,5),ARRAY("d","e","f"));

Örnekler

  • Tek bir LATERAL VIEW ifadesi

    • Örnek 1: col1 sütununu bölün. Komut aşağıdaki gibidir:

      SELECT pageid, col1_new, col2 FROM pageAds LATERAL VIEW EXPLODE(col1) adTable AS col1_new;

      Dönen sonuç aşağıdaki gibidir:

      +--------------+------------+---------------+
      | pageid       | col1_new   | col2          | 
      +--------------+------------+---------------+
      | front_page   | 1          | ["a","b","c"] | 
      | front_page   | 2          | ["a","b","c"] | 
      | front_page   | 3          | ["a","b","c"] | 
      | contact_page | 3          | ["d","e","f"] | 
      | contact_page | 4          | ["d","e","f"] | 
      | contact_page | 5          | ["d","e","f"] | 
      +--------------+------------+---------------+
    • Örnek 2: col1 sütununu bölün ve toplama işlemi yapın. Komut aşağıdaki gibidir:

      SELECT col1_new, COUNT(1) AS COUNT FROM pageAds  LATERAL VIEW EXPLODE(col1) adTable AS col1_new GROUP BY col1_new;

      Dönen sonuç aşağıdaki gibidir:

      +------------+------------+
      | col1_new   | count      |
      +------------+------------+
      | 1          | 1          |
      | 2          | 1          |
      | 3          | 2          |
      | 4          | 1          |
      | 5          | 1          |
      +------------+------------+
  • Birden fazla LATERAL VIEW ifadesi

    col1 ve col2 sütunlarını bölün. Komut aşağıdaki gibidir:

    SELECT pageid,mycol1, mycol2 FROM pageAds 
      LATERAL VIEW EXPLODE(col1) myTable1 AS mycol1 
      LATERAL VIEW EXPLODE(col2) myTable2 AS mycol2;

    Dönen sonuç aşağıdaki gibidir:

    +--------------+------------+------------+
    | pageid       | mycol1     | mycol2     |
    +--------------+------------+------------+
    | front_page   | 1          | a          |
    | front_page   | 1          | b          |
    | front_page   | 1          | c          |
    | front_page   | 2          | a          |
    | front_page   | 2          | b          |
    | front_page   | 2          | c          |
    | front_page   | 3          | a          |
    | front_page   | 3          | b          |
    | front_page   | 3          | c          |
    | contact_page | 3          | d          |
    | contact_page | 3          | e          |
    | contact_page | 3          | f          |
    | contact_page | 4          | d          |
    | contact_page | 4          | e          |
    | contact_page | 4          | f          |
    | contact_page | 5          | d          |
    | contact_page | 5          | e          |
    | contact_page | 5          | f          |
    +--------------+------------+------------+

İlgili konular

Verileri satırlar ve sütunlar arasında dönüştürmek için LATERAL VIEW ifadesini kullanabilirsiniz. Daha fazla bilgi için bkz. Satırları ve sütunları dönüştürmeye yönelik en iyi uygulamalar.