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.
- makine öğrenimi projelerini ML Studio (klasik) konumundan Azure Machine Learning taşımaya yönelik bilgilerebakın.
- Azure Machine Learninghakkında daha fazla bilgi edinin.
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ı t1
t2
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
, MIN
MAX
,, 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ümcelerindeSELECT
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ğilRIGHT OUTER JOIN
FULL OUTER JOIN
.komutuyla
RENAME TABLE
veADD COLUMN
deyimlerini kullanabilirsinizALTER TABLE
, ancak , ve gibi diğer yan tümcelerDROP COLUMN
ALTER COLUMN
desteklenmiyorADD CONSTRAINT
.SQLite içinde bir VIEW oluşturabilirsiniz, ancak bundan sonra görünümler salt okunur olur. Bir görünümde
DELETE
,INSERT
veya deyiminiUPDATE
yürütesiniz. Ancak, bir görünümdeDELETE
,INSERT
UPDATE
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ı.