Aracılığıyla paylaş


UYGULAMAK

✅ Azure Stream Analytics ✅ Fabric Olay Akışı

APPLY işleci, sorgunun dış tablo ifadesi tarafından döndürülen her satır için bir tablo-değerli işlevi çağırmanıza olanak tanır. Tablo değerli işlev, sağ giriş, dış tablo ifadesi ise sol giriş işlevi görür. Sağ giriş, sol girişten her satır için değerlendirilir ve üretilen satırlar son çıkış için birleştirilir. APPLY işleci tarafından üretilen sütunların listesi, sol girişteki sütun kümesidir ve ardından sağ giriş tarafından döndürülen sütunların listesidir.

APPLY'in iki biçimi vardır: CROSS APPLY ve OUTER APPLY.

CROSS APPLY yalnızca dış tablodaki tablo değerli işlevden bir sonuç kümesi oluşturan satırları döndürür. CROSS APPLY sonucu TIMESTAMP BY hedef değeri olarak kullanılamaz. Ancak, CROSS APPLY işlemini gerçekleştiren bir Azure Stream Analytics işi kullanabilir ve TIMESTAMP BY işlemini gerçekleştirmek için ikinci bir iş kullanabilirsiniz.

OUTER APPLY, hem sonuç kümesi oluşturan satırları hem de tablo değerli işlevi tarafından üretilen sütunlarda NULL değerlerle sonuç kümesi oluşturmayan satırları döndürür.

Azure Stream Analytics'te Dizi ve Kayıt türü alanlarıyla çalışmayı kolaylaştıran iki tablo değerli işlev vardır. Bunlar GetArrayElements ve GetRecordProperties'dir.

Sözdizimi

  
<input> {CROSS | OUTER} APPLY <elements_selector>  
  
<input> ::= input_name |  input_alias  
  
<elements_selector> ::=   
{GetArrayElements | GetRecordProperties} (<column_name>) AS element_name  
  

Tartışmalar

input_name | input_alias

Giriş akışının adı veya diğer adı.

column_name

Giriş akışının sütununun adı.

element_name

Tablo değerli işlevin sonucunu içeren yeni sütunun adı.

Dönüş Türleri

Çıkış, ilk yükü içeren bir kayıt ve tablo değerli işlevin sonucunu içeren 'element_name' kaydıdır.

GetArrayElements işlevi için sonuç iki alanı olan bir kayıt olacaktır:

  • ArrayIndex: dizideki öğenin dizini

  • ArrayValue: dizideki öğesinin değeri.

GetRecordProperties işlevi için sonuç iki alanı olan bir kayıt olacaktır:

  • PropertyName: Kayıttaki özelliğin adı.

  • PropertyValue: kayıttaki özelliğin değeri.

Örnekler

Bu örnekte, gişe senaryosunun kapsamını genişleterek, otomobillerin birden fazla plakası olabileceğini varsayarız (örneğin, römork çekme işleminin iki tane olması gerekir). Çapraz/dış uygulama, bu diziyi düzleştirmek için kullanılabilir, yani lisans plakası başına bir satır alır.

CREATE TABLE input(TollId nvarchar(max), EntryTime datetime, Licenses array)  
  
SELECT e.TollId, e.EntryTime, flat.ArrayValue AS licensePlate   
   FROM input AS e   
   CROSS APPLY GetArrayElements(e.Licenses) AS flat  
  

Sorgu, herhangi bir plakası olmayan arabaları izlemek için dış uygulama özelliğini kullanacak şekilde değiştirilebilir.

SELECT e.TollId, e.EntryTime,   
flat.ArrayValue AS licensePlate, flat.ArrayIndex AS licensePlateIndex  
   FROM input AS e   
   OUTER APPLY GetArrayElements(e.Licenses) AS flat  
  

İç içe dizileri (dizi dizisi) kullanan başka bir örnek.

WITH firstQuery AS (  
   SELECT input.TollId, input.EntryTime,   
   flat.ArrayIndex AS i1, flat.ArrayValue AS licenses   
      FROM input   
      CROSS APPLY GetArrayElements(input.ArrayOfArray) AS flat)  
  
SELECT firstQuery.TollId, firstQuery.EntryTime, firstQuery.i1,   
flat2.ArrayIndex AS i2, flat2.ArrayValue AS license  
   FROM firstQuery  
   CROSS APPLY GetArrayElements(firstQuery.licenses) AS flat2