SQL Dönüşümü Uygulama

Verileri dönüştürmek için giriş veri kümelerinde bir SQLite sorgusu çalıştırır

Kategori: veri dönüştürme/işleme

Not

Için geçerlidir: Machine Learning Studio (klasik)

Bu içerik yalnızca Studio (klasik) ile ilgili. Benzer sürükle ve bırak modülleri bir tasarımcıya Azure Machine Learning eklendi. İki sürümü karşılaştıran bu makalede daha fazla bilgi bulabilirsiniz.

Modüle genel bakış

Bu makalede, giriş veri kümesi veya veri kümelerinde bir SQL sorgusu belirtmek için Azure Machine Learning Studio (klasik) ' de SQL dönüştürme modülünün nasıl kullanılacağı açıklanır.

SQL, verilerinizi karmaşık yollarla değiştirmeniz veya verileri diğer ortamlarda kullanmak üzere kalıcı hale getirmeniz gerektiğinde kullanışlıdır. Örneğin, SQL dönüştürme modülünü Uygula ' yı kullanarak şunları yapabilirsiniz:

  • Sonuçlar için tablo oluşturma ve veri kümelerini taşınabilir bir veritabanına kaydetme.

  • Veri türlerinde özel dönüşümler gerçekleştirin veya toplamalar oluşturun.

  • Verileri filtrelemek veya değiştirmek ve sorgu sonuçlarını veri tablosu olarak döndürmek için SQL sorgu deyimlerini yürütün.

Önemli

Bu modülde kullanılan SQL altyapısı SQLite' dur. SQLite sözdizimi hakkında bilginiz yoksa, bu makalenin söz dizimi ve kullanım bölümüne örnekler için mutlaka okuyun.

SQLite nedir?

SQLite, C programlama kitaplığı 'nda yer alan ortak bir etki alanı ilişkisel veritabanı yönetim sistemidir. SQLite, Web tarayıcılarında yerel depolama için gömülü bir veritabanı olarak popüler bir seçenektir.

SQLite, ilk başta, sunucusuz işlemleri desteklemek için ABD Navü için 2000 ' de tasarlanmıştı. Bu, yönetim sistemine sahip olmayan ve bu nedenle yapılandırma veya yönetim gerektirmeyen bir bağımsız veritabanı altyapısıdır.

SQL dönüşümünü Uygula ' yı yapılandırma

Modülün giriş olarak üç veri kümesi olabilir. Her giriş bağlantı noktasına bağlı veri kümelerine başvurarak , ve t1 adlarını t2 t3 kullanabilirsiniz. Tablo numarası, giriş bağlantı noktasının dizinini gösterir.

Kalan parametre, SQLite söz dizimlerini kullanan bir SQL sorgusudur. Bu modül, SQLite söz dizimlerinin tüm standart deyimlerini destekler. Desteklenmeyen deyimlerin listesi için Teknik Notlar bölümüne bakın.

Genel söz dizimi ve kullanım

  • SQL Betiği metin kutusuna birden çok satır yazarken, her deyimi sonlandırmak için noktalı virgül kullanın. Aksi takdirde satır sonları boşluklara dönüştürülür.

    Örneğin, aşağıdaki deyimler eşdeğerdir:

    SELECT   
    *   
    from   
    t1;  
    
    SELECT * from t1;  
    
  • Açıklama eklemek için her satırın başına veya kullanarak metinleri -- içine /* */ ebilirsiniz.

    Örneğin, bu deyim geçerlidir:

    SELECT * from t1  
    /*WHERE ItemID BETWEEN 1 AND 100*/;  
    
  • Bir sütun adı ayrılmış anahtar sözcüğün adını çoğaltıyorsa, SQL Betiği metin kutusunun içindeki metne söz dizimi vurgulaması uygulanır. Karışıklığı önlemek için sütun adlarını köşeli ayraçlar (Transact-SQL kuralına uyması için) veya köşeli ayraçlar veya çift tırnak işaretleri (ANSI SQL kuralı) içine almanız gerekir.

    Örneğin, Kan Bağışı veri kümesinde yapılan aşağıdaki sorguda Time geçerli bir sütun adıdır ancak ayrılmış anahtar sözcük de olur.

    SELECT Recency, Frequency, Monetary, Time, Class  
    FROM t1  
    WHERE Time between 3 and 20;  
    

    Sorguyu olduğu gibi kullanırsanız sorgu doğru sonuçları döndürür ancak veri kümesine bağlı olarak bir hata döndürür. Sorundan kaçınmaya ilişkin bazı örnekler aşağıda verilmiştir:

    -- Transact-SQL  
    SELECT [Recency], [Frequency], [Monetary], [Time], [Class]  
    FROM t1  
    WHERE [Time] between 3 and 20;  
    -- ANSI SQL  
    SELECT "Recency", "Frequency", "Monetary", "Time", "Class"  
    FROM t1  
    WHERE `Time` between 3 and 20;  
    

    Not

    Söz dizimi vurgulaması, tırnak içine veya köşeli ayraç içine alınmış olsa bile anahtar sözcükte kalır.

  • SQLite büyük/küçük harfe duyarlı değildir, ancak farklı anlamlara sahip büyük/küçük harfe duyarlı çeşitlemeler (GLOB ve glob) olan birkaç komut dışındadır.

SELECT deyimi

deyiminde, tanımlayıcılarda yasaklanmış boşluklar veya diğer karakterleri içeren sütun adları çift tırnak işaretleri, köşeli ayraçlar veya köşeli ayraç SELECT karakterleri (') içine alınmalıdır.

Örneğin, bu sorgu üzerinde Two-Class Iris veri kümesine başvurur t1 , ancak bir sütun adı yasaklanmış bir karakter içerir, bu nedenle sütun adı tırnak işaretleri içine alınır.

SELECT class, "sepal-length" FROM t1;  

WHEREVeri kümesindeki değerleri filtrelemek için bir yan tümce ekleyebilirsiniz.

SELECT class, "sepal-length" FROM t1 WHERE "sepal-length" >5.0;  

SQLite sözdizimi TOP Transact-SQL ' de kullanılan anahtar sözcüğünü desteklemez. Bunun yerine, LIMIT anahtar sözcüğünü veya bir FETCH ifadesini kullanabilirsiniz.

Örneğin, Bisiklet Kiralama veri kümesindeki bu sorguları karşılaştırın.

-- unsupported in SQLite  
SELECT  TOP 100 [dteday] FROM t1 ;  
ORDER BY [dteday] DESC;  
  
-- Returns top 100   
SELECT  [dteday] FROM t1 LIMIT 100 ;  
ORDER BY [dteday] DESC;  
  
-- Returns top 100. Note that FETCH is on a new line.  
SELECT  [dteday] FROM t1 - ;  
FETCH FIRST 100 rows ONLY;  
ORDER BY [dteday] DESC;  

Birleştirmeler

Aşağıdaki örneklerde, giriş bağlantı noktasındaki Restoran derecelendirme veri kümesi t1 ve buna karşılık gelen giriş bağlantı noktasındaki Restoran özellikleri veri kümesi kullanılmaktadır t2 .

Aşağıdaki ifade, her bir restoran için belirtilen Restoran özelliklerini ortalama derecelendirmelerde birleştiren bir veri kümesi oluşturmak için iki tabloyu birleştirir.

SELECT DISTINCT(t2.placeid),    
t2.name, t2.city, t2.state, t2.price, t2.alcohol,  
AVG(rating)  AS 'AvgRating'   
FROM t1   
JOIN t2  
ON t1.placeID = t2.placeID  
GROUP BY t2.placeid;  

Toplama işlevleri

Bu bölümde, SQLite kullanarak bazı yaygın SQL toplama işlevlerinin temel örnekleri verilmiştir.

Şu anda desteklenen toplama işlevleri şunlardır: AVG , COUNT ,, MAX MIN , SUM , TOTAL .

Aşağıdaki sorgu, restorana için Ortalama derecelendirmeden ve restoran KIMLIĞINI içeren bir veri kümesi döndürür.

SELECT DISTINCT placeid,  
AVG(rating) AS ‘AvgRating’,  
FROM t1  
GROUP BY placeid  

Dizelerle çalışma

SQLite dizeleri bitiştirme için Double Pipe işlecini destekler.

Aşağıdaki ifade iki metin sütununu birleştirerek yeni bir sütun oluşturur.

SELECT placeID, name,   
(city || '-' || state) AS 'Target Region',   
FROM t1  

Uyarı

Transact-SQL dize birleştirme işleci desteklenmez: + (dize birleştirme). Örneğin, ('city + '-' + state) AS 'Target Region' örnek sorgudaki ifade tüm değerler için 0 döndürür.

Ancak, işleç bu veri türü için desteklenmese de, Azure Machine Learning hiçbir hata oluşturulmaz. Sonuç veri kümesini bir deneyde kullanmadan önce SQL dönüştürme uygulama sonuçlarının doğrulanması gerektiğini unutmayın.

BIRLEŞIM ve durum

COALESCE birden çok bağımsız değişkeni sırasıyla değerlendirir ve NULL olarak değerlendirilmeyecek ilk ifadenin değerini döndürür.

Örneğin, çelik benzetilmiş çok sınıflı veri kümesindeki bu sorgu, birbirini dışlayan değerlerin bulunduğu kabul edilen bir sütun listesinden ilk null olmayan bayrağı döndürür. Hiçbir bayrak bulunmazsa, "none" dizesi döndürülür.

SELECT classes, family, [product-type],  
COALESCE(bt,bc,bf,[bw/me],bl, "none") AS TemperType  
FROM t1;  

deyimi, CASE değerleri test etmek ve değerlendirilen sonuçlara göre yeni bir değer dönmek için kullanışlıdır. SQLite deyimleri için aşağıdaki söz CASE dizimlerini destekler:

  • CASE WHEN [condition] THEN [expression] ELSE [expression] END

  • CASE [expression] WHEN [value] THEN [expression] ELSE [expression] END

Örneğin, true-false değerlerini içeren bir dizi özellik sütunu oluşturmak için daha önce Gösterge Değerlerine Dönüştür modülünü kullandığınızı varsayalım. Aşağıdaki sorgu, birden çok özellik sütunundaki değerleri tek bir çok değerli sütuna daraltıyor.

SELECT userID, [smoker-0], [smoker-1],  
CASE  
WHEN [smoker-0]= '1' THEN 'smoker'   
WHEN [smoker-1]= '1' THEN 'nonsmoker'   
ELSE 'unknown'  
END AS newLabel  
FROM t1;  

Örnekler

Bu modülün makine öğrenmesi denemelerinde nasıl kullanıla bir örneği için aşağıdaki örnektekiAzure Yapay Zeka Galerisi:

  • SQL Dönüşümü Uygulama:Basit birleştirmeleri, seçme deyimlerini ve toplama işlevlerini göstermek için Restaurant Derecelendirmeleri, Restoran Özellikleri ve Restoran Müşterileri veri kümelerini kullanır.

Teknik notlar

Bu bölümde uygulama ayrıntıları, ipuçları ve sık sorulan soruların yanıtları yer almaktadır.

    1. bağlantı noktası üzerinde her zaman bir giriş gereklidir.
  • Giriş veri kümesinde sütun adları varsa, çıkış veri kümesinde sütunlar giriş veri kümesinden sütun adlarını kullanır.

    Giriş veri kümesinde sütun adları yoksa, tablodaki sütun adları şu adlandırma kuralı kullanılarak otomatik olarak oluşturulur: T1COL1, T1COL2, T1COL3 ve bu şekilde devam eder; burada sayılar giriş veri kümesinde her sütunun dizinini gösterir.

  • Boşluk veya diğer özel karakterler içeren sütun tanımlayıcıları için, veya yan tümceleri içindeki sütuna başvururken sütun tanımlayıcısını her zaman köşeli ayraç veya çift tırnak içine SELECT WHERE alın.

Desteklenmeyen deyimler

SQLite, ANSI SQL standardını büyük bir şekilde desteklese de, ticari ilişkisel veritabanı sistemleri tarafından desteklenen birçok özelliği içermemektedir. Daha fazla bilgi için bkz. SQL as Understood by SQLite. Ayrıca, SQL deyimleri oluştururken aşağıdaki kısıtlamalara dikkatin:

  • SQLite, en ilişkisel veritabanı sistemlerinde olduğu gibi bir sütuna bir tür atamak yerine, değerler için dinamik yazma kullanır. Kesin olarak yazılmış ve örtük tür dönüştürmeye izin veren.

  • LEFT OUTER JOIN uygulandı, ancak değil RIGHT OUTER JOIN FULL OUTER JOIN .

  • RENAME TABLEKomutuyla ve deyimlerini kullanabilirsiniz ADD COLUMN ALTER TABLE , ancak, ve dahil diğer yan tümceler desteklenmez DROP COLUMN ALTER COLUMN ADD CONSTRAINT .

  • SQLite içinde bir görünüm oluşturabilirsiniz, ancak bundan sonra görünümler salt okunurdur. DELETE INSERT Bir görünümde, veya ifadesini yürütemezsiniz UPDATE . Ancak, bir görünümde,, veya bir deneyin üzerinde başlatılan bir tetikleyici oluşturabilir DELETE INSERT UPDATE ve Tetikleyicinin gövdesinde başka işlemler gerçekleştirebilirsiniz.

Resmi SQLite sitesinde sağlanan desteklenmeyen işlevlerin listesine ek olarak, aşağıdaki wiki desteklenmeyen diğer özelliklerin bir listesini sağlar: SQLite-desteklenmeyen SQL

Beklenen girişler

Ad Tür Description
Table1 Veri tablosu Giriş DataSet1
Table2 Veri tablosu Giriş Dataset2
Table3 Veri tablosu Giriş dataset3

Modül parametreleri

Name Aralık Tür Varsayılan Description
SQL sorgu betiği herhangi biri StreamReader SQL sorgu deyimi

Çıkışlar

Ad Tür Description
Sonuç veri kümesi Veri Tablosu Çıktı veri kümesi

Özel durumlar

Özel durum Description
Hata 0001 Veri kümesinde belirtilen bir veya daha fazla sütun bulunamasa özel durum oluşur.
Hata 0003 Giriş veri kümelerinden biri veya daha fazlası null veya boşsa özel durum oluşur.
Hata 0069 SQL mantığı hatası veya veritabanı eksik

Studio (klasik) modüllerine özgü hataların listesi için bkz. Machine Learning kodları.

API özel durumlarının listesi için bkz. Machine Learning REST API Kodları.

Ayrıca bkz.

Manipülasyon
Veri Dönüştürme
A-Z Modül Listesi