Bagikan melalui


StructureColumn (DMX)

Berlaku untuk: SQL Server Analysis Services

Mengembalikan nilai kolom struktur yang sesuai dengan kasus yang ditentukan, atau nilai tabel untuk tabel berlapis dalam kasus yang ditentukan.

Sintaks

  
StructureColumn('structure column name')  

Argumen

structure-column-name.
Nama kolom struktur penambangan kasus atau tabel berlapis.

Tipe Hasil

Jenis yang dikembalikan bergantung pada jenis kolom yang direferensikan dalam <parameter nama> kolom struktur. Misalnya, jika kolom struktur penambangan yang dirujuk berisi nilai skalar, fungsi mengembalikan nilai skalar.

Jika kolom struktur penambangan yang direferensikan adalah tabel berlapis, fungsi mengembalikan nilai tabel. Nilai tabel yang dikembalikan dapat digunakan dalam klausul FROM dari pernyataan sub-SELECT.

Keterangan

Fungsi ini polimorfik dan dapat digunakan di mana saja dalam pernyataan yang memungkinkan ekspresi, termasuk daftar ekspresi SELECT, ekspresi kondisi WHERE, dan ekspresi ORDER BY.

Nama kolom dalam struktur penambangan adalah nilai string dan dengan demikian harus diapit dalam tanda kutip tunggal: misalnya, StructureColumn('kolom 1'). Jika ada beberapa kolom yang memiliki nama yang sama, nama diselesaikan dalam konteks pernyataan SELECT yang menyertakan.

Hasil yang dikembalikan dari kueri menggunakan fungsi StructureColumn dipengaruhi oleh adanya filter apa pun pada model. Artinya, filter model mengontrol kasus yang disertakan dalam model penambangan. Oleh karena itu, kueri pada kolom struktur hanya dapat mengembalikan kasus yang digunakan dalam model penambangan. Lihat bagian Contoh topik ini untuk sampel kode yang memperlihatkan efek filter model penambangan pada tabel kasus dan tabel berlapis.

Untuk informasi selengkapnya tentang cara menggunakan fungsi ini dalam pernyataan DMX SELECT, lihat MODEL> SELECT FROM<. STRUKTUR CASES (DMX) atau SELECT FROM><. KASUS.

Pesan kesalahan

Kesalahan keamanan berikut dimunculkan jika pengguna tidak memiliki izin penelusuran pada struktur penambangan induk:

Pengguna '%{user/}' tidak memiliki izin untuk menelusuri ke struktur penambangan induk dari model penambangan '%{model/}'.

Pesan kesalahan berikut dimunculkan jika nama kolom struktur yang tidak valid ditentukan:

Kolom struktur penambangan '%{structure-column-name/}' tidak ditemukan di struktur penambangan induk '%{structure/}' dalam konteks saat ini (baris %{line/}, kolom %{column/}).

Contoh

Kami akan menggunakan struktur penambangan berikut untuk contoh-contoh ini. Perhatikan bahwa struktur penambangan berisi dua kolom tabel berlapis, Products dan Hobbies. Tabel berlapis dalam Hobbies kolom memiliki satu kolom yang digunakan sebagai kunci untuk tabel berlapis. Tabel berlapis dalam Products kolom adalah tabel berlapis kompleks yang memiliki kolom kunci dan kolom lain yang digunakan untuk input. Contoh berikut menggambarkan bagaimana struktur penambangan data dapat dirancang untuk menyertakan banyak kolom yang berbeda, meskipun model mungkin tidak menggunakan setiap kolom. Beberapa kolom ini mungkin tidak berguna di tingkat model untuk menggeneralisasi pola, tetapi mungkin sangat berguna untuk penelusuran.

CREATE MINING STRUCTURE [MyStructure]   
(  
CustomerName TEXT KEY,  
Occupation TEXT DISCRETE,  
Age LONG CONTINUOUS,  
MaritalStatus TEXT DISCRETE,  
Income LONG CONTINUOUS,  
Products  TABLE  
 (  
    ProductNameTEXT KEY,  
    Quantity LONG CONTINUOUS,  
    OnSale BOOLEAN  DISCRETE  
)  
 Hobbies  TABLE  
 (  
    Hobby KEY  
 ))  

Selanjutnya, buat model penambangan berdasarkan struktur yang baru saja Anda buat, menggunakan contoh kode berikut:

ALTER MINING STRUCTURE [MyStructure] ADD MINING MODEL [MyModel] (  
CustomerName,  
Age,  
MaritalStatus,  
Income PREDICT,  
Products   
(  
ProductName  
) WITH FILTER(NOT OnSale)  
) USING Microsoft_Decision_Trees   
WITH FILTER(EXISTS (Products))  

Kueri Sampel 1: Mengembalikan Kolom dari Struktur Penambangan

Kueri sampel berikut mengembalikan kolom CustomerName dan Age, yang didefinisikan sebagai bagian dari model penambangan. Namun, kueri juga mengembalikan kolom Age, yang merupakan bagian dari struktur tetapi bukan bagian dari model penambangan.

SELECT CustomerName, Age, StructureColumn('Occupation') FROM MyModel.CASES   
WHERE Age > 30  

Perhatikan bahwa pemfilteran baris untuk membatasi kasus kepada pelanggan di atas usia 30 tahun terjadi pada tingkat model. Oleh karena itu, ekspresi ini tidak akan mengembalikan kasus yang disertakan dalam data struktur tetapi tidak digunakan oleh model. Karena kondisi filter yang digunakan untuk membuat model (EXISTS (Products)) membatasi kasus hanya untuk pelanggan yang membeli produk, mungkin ada kasus dalam struktur yang tidak dikembalikan oleh kueri ini.

Kueri Sampel 2: Menerapkan Filter ke Kolom Struktur

Kueri sampel berikut tidak hanya mengembalikan kolom CustomerName model dan Age, dan tabel Productsberlapis , tetapi juga mengembalikan nilai kolom Quantity dalam tabel berlapis, yang bukan bagian dari model.

SELECT CustomerName, Age,  
(SELECT ProductName, StructureColumn('Quantity') FROM Products) FROM MA.CASES   
WHERE StructureColumn('Occupation') = 'Architect'  

Perhatikan bahwa, dalam contoh ini, filter diterapkan ke kolom struktur untuk membatasi kasus kepada pelanggan yang pekerjaannya adalah 'Arsitek' (WHERE StructureColumn('Occupation') = 'Architect'). Karena kondisi filter model selalu diterapkan pada kasus saat model dibuat, hanya kasus yang berisi setidaknya satu baris yang memenuhi syarat dalam Products tabel yang disertakan dalam kasus model. Oleh karena itu, filter pada tabel Products berlapis dan filter pada kasus ('Occupation')diterapkan.

Kueri Sampel 3: Memilih Kolom dari Tabel Berlapis

Kueri sampel berikut mengembalikan nama pelanggan yang digunakan sebagai kasus pelatihan dari model. Untuk setiap pelanggan, kueri juga mengembalikan tabel berlapis yang berisi detail pembelian. Meskipun model menyertakan ProductName kolom, model tidak menggunakan nilai ProductName kolom. Model hanya memeriksa apakah produk dibeli dengan harga reguler (NOT``OnSale). Kueri ini tidak hanya mengembalikan nama produk, tetapi juga mengembalikan kuantitas yang dibeli, yang tidak termasuk dalam model.

SELECT CustomerName,    
(SELECT ProductName, StructureColumn('Quantity')FROM Products)   
FROM MyModel.CASES  

Perhatikan bahwa Anda tidak dapat mengembalikan ProductName kolom atau Quantity kolom kecuali penelusuran diaktifkan pada model penambangan.

Kueri Sampel 4: Memfilter dan Mengembalikan Kolom Tabel Berlapis

Kueri sampel berikut mengembalikan kolom kasus dan tabel berlapis yang disertakan dalam struktur penambangan tetapi tidak dalam model. Model sudah difilter pada keberadaan OnSale produk, tetapi kueri ini menambahkan filter pada kolom struktur penambangan, Quantity:

SELECT CustomerName, Age, StructureColumn('Occupation'),   
(SELECT ProductName, StructureColumn('Quantity') FROM Products)   
FROM MyModel.CASES   
WHERE EXISTS (SELECT * FROM Products WHERE StructureColumn('Quantity')>1)  

Lihat Juga

Referensi Fungsi Ekstensi Penggalian Data (DMX)
Functions (DMX)
Fungsi Prediksi Umum (DMX)