SQL Dönüşümü Uygulama

Önemli

Machine Learning Stüdyosu (klasik) desteği 31 Ağustos 2024'te sona erecektir. Bu tarihe kadar Azure Machine Learning'e geçmenizi öneririz.

1 Aralık 2021'den başlayarak artık yeni Machine Learning Stüdyosu (klasik) kaynakları oluşturamayacaksınız. 31 Ağustos 2024'e kadar mevcut Machine Learning Stüdyosu (klasik) kaynaklarını kullanmaya devam edebilirsiniz.

ML Stüdyosu (klasik) belgeleri kullanımdan kaldırılacak ve gelecekte güncelleştirilmeyecektir.

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

uygulama hedefi: yalnızca Machine Learning Studio (klasik)

benzer sürükle ve bırak modülleri Azure Machine Learning tasarımcısındakullanılabilir.

Modüle genel bakış

bu makalede, bir giriş veri kümesi veya veri kümelerinde bir SQL sorgusu belirtmek için Machine Learning Studio 'da (klasik) uygulama 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 diğer ortamlarda kullanılmak üzere verileri kalıcı hale getirmeniz gerektiğinde kullanışlıdır. örneğin, uygula SQL dönüştürme modülünü 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' dür. 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.

uygulama SQL dönüştürmeyi yapılandırma

Modülün giriş olarak üç veri kümesi olabilir. Her giriş bağlantı noktasına bağlı veri kümelerine başvurduğunuzda, ve t3 adlarını t1t2 kullanmanız gerekir. Tablo numarası, giriş bağlantı noktasının dizinini gösterir.

kalan parametre, SQLite sözdizimini kullanan bir SQL sorgusudur. Bu modül, SQLite sözdiziminin tüm standart deyimlerini destekler. Desteklenmeyen deyimlerin bir listesi için Teknik notlar bölümüne bakın.

Genel sözdizimi ve kullanımı

  • SQL betiği metin kutusuna birden çok satır yazarken, her ifadeyi 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;  
    
  • Her satırın başlangıcında veya kullanarak /* */ metin ekleyerek yorum -- ekleyebilirsiniz.

    Örneğin, bu ifade geçerlidir:

    SELECT * from t1  
    /*WHERE ItemID BETWEEN 1 AND 100*/;  
    
  • bir sütun adı ayrılmış bir anahtar sözcüğünün adını çoğaltmaysa, sözdizimi vurgulama SQL betik metin kutusu içindeki metne uygulanır. karışıklığı önlemek için, sütun adlarını köşeli ayraçlara (Transact-SQL kuralını izlemek için) veya geri işaretleri veya çift tırnak işaretleri (ansı SQL kuralı) ile birlikte almalısınız.

    Örneğin, kan bağış veri kümesindeki aşağıdaki sorguda, zaman geçerli bir sütun adıdır, ancak aynı zamanda ayrılmış bir anahtar sözcüktür.

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

    Sorguyu olduğu gibi çalıştırırsanız sorgu doğru sonuçları döndürebilir, ancak veri kümesine bağlı olarak bir hata döndürebilir. Bu sorunun nasıl önleneceğini gösteren bazı örnekler şunlardır:

    -- 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özdizimi vurgulama, tırnak işaretleri veya köşeli ayraç içine alındıktan sonra bile anahtar sözcüğü üzerinde kalır.

  • Farklı anlamlara (GLOB vs. glob) sahip büyük/küçük harfe duyarlı çeşitleri olan birkaç komut hariç, SQLite büyük/küçük harfeduyarlıdır.

SELECT deyimleri

SELECTİfadesinde, boşluk veya tanımlayıcılardan yasaklanmış diğer karakterleri içeren sütun adları, çift tırnak işaretleri, köşeli parantezler veya geri nokta karakterleri (') içine alınmalıdır.

Örneğin, bu sorgu üzerinde t1 Two-Class Iris veri kümesine başvurur, 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;  

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

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

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

Ö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 t2 giriş bağlantı noktasındaki Restoran özellikleri veri kümesi kullanılmaktadır.

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şlevlerine yönelik temel örnekler sağlanmaktadır.

Şu anda desteklenen toplama işlevleri şunlardır: AVG , COUNT , MINMAX ,, 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, örnek sorgudaki ifade ('city + '-' + state) AS 'Target Region' tüm değerler için 0 döndürür.

Ancak, işleç bu veri türü için desteklenmese de, Machine Learning hiçbir hata oluşturulmaz. elde edilen veri kümesini bir deneyde kullanmadan önce SQL dönüşümünü uygula sonuçlarının doğrulanması emin olun.

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;  

CASEİfade, değerleri test etmek ve değerlendirilen sonuçlara göre yeni bir değer döndürmek için yararlıdır. SQLite, deyimler için CASE aşağıdaki sözdizimini destekler:

  • DURUM [koşul] THEN [ifade] ELSE [ifade] END

  • CASE [ifade] THEN [değer] sonra [ifade] ELSE [ifade] END

Örneğin, daha önce true-false değerleri içeren bir küme özelliği sütunları oluşturmak için gösterge değerlerini 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ır.

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 Machine Learning denemeleri 'de nasıl kullanılabileceği hakkında bir örnek için Azure yapay zeka GalerisiŞu örneğe bakın:

  • SQL dönüştürmeyi uygula: basit birleştirmeleri, select deyimlerini ve toplama işlevlerini göstermek için restoran derecelendirmeleri, restoran özellikleri ve restoran müşterileri veri kümesini kullanır.

Teknik notlar

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

  • Bağlantı noktası 1 üzerinde her zaman bir giriş gereklidir.

  • Giriş veri kümesinde sütun adları varsa, çıkış veri kümesindeki sütunlar giriş veri kümesindeki 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, vb., burada sayıların giriş veri kümesindeki her bir sütunun dizinini gösterir.

  • Boşluk veya diğer özel karakterler içeren sütun tanımlayıcıları için, veya WHERE yan tümcelerinde SELECT sütuna başvuru yaparken her zaman köşeli ayraç veya çift tırnak işareti içinde sütun tanımlayıcısını çevreler.

Desteklenmeyen deyimler

SQLite, ansı SQL standardının çoğunu desteklese de, ticari ilişkisel veritabanı sistemleri tarafından desteklenen birçok özellik içermez. daha fazla bilgi için bkz. SQLite tarafından anlaşıldığı gibi SQL. ayrıca, SQL deyimleri oluştururken aşağıdaki kısıtlamalara dikkat edin:

  • 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 JOINFULL OUTER JOIN .

  • komutuyla RENAME TABLE ve ADD COLUMN deyimlerini kullanabilirsinizALTER TABLE, ancak , ve gibi diğer yan tümceler DROP COLUMNALTER COLUMNdesteklenmiyorADD CONSTRAINT.

  • SQLite içinde bir VIEW oluşturabilirsiniz, ancak bundan sonra görünümler salt okunur olur. Bir görünümde DELETE, INSERTveya deyimini UPDATE yürütesiniz. Ancak, bir görünümde DELETE, INSERTUPDATE veya denemesinde tetiklenen ve tetikleyicinin gövdesinde başka işlemler gerçekleştiren bir tetikleyici oluşturabilirsiniz.

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ş veri kümesi1
Tablo2 Veri Tablosu Giriş veri kümesi2
Tablo3 Veri Tablosu Giriş veri kümesi3

Modül parametreleri

Name Aralık Tür Varsayılan Description
SQL Sorgu Betiği herhangi biri Streamreader SQL deyimini kullanma

Çı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 hatası veya eksik veritabanı

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