Bagikan melalui


Contoh Ekspresi SSIS Tingkat Lanjut

Berlaku untuk: SQL Server SSIS Integration Runtime di Azure Data Factory

Bagian ini menyediakan contoh ekspresi tingkat lanjut yang menggabungkan beberapa operator dan fungsi. Jika ekspresi digunakan dalam batasan prioritas atau transformasi Pemisahan Bersyarat, ekspresi harus dievaluasi ke Boolean. Pembatasan itu, bagaimanapun, tidak berlaku untuk ekspresi yang digunakan dalam ekspresi properti, variabel, transformasi Kolom Turunan, atau kontainer For Loop.

Contoh berikut menggunakan AdventureWorks dan AdventureWorksDW2022 database Microsoft SQL Server. Setiap contoh mengidentifikasi tabel yang digunakannya.

Ekspresi Boolean

  • Contoh ini menggunakan tabel Produk . Ekspresi mengevaluasi entri bulan di kolom SellStartDate dan mengembalikan TRUE jika bulan tersebut adalah Juni atau yang lebih baru.

    DATEPART("mm",SellStartDate) > 6  
    
  • Contoh ini menggunakan tabel Produk . Ekspresi mengevaluasi hasil bulat dari pembagian kolom ListPrice dengan kolom StandardCost , dan mengembalikan TRUE jika hasilnya lebih besar dari 1,5.

    ROUND(ListPrice / StandardCost,2) > 1.50  
    
  • Contoh ini menggunakan tabel Produk . Ekspresi mengembalikan TRUE jika ketiga operasi dievaluasi ke TRUE. Jika kolom Ukuran dan variabel BikeSize memiliki jenis data yang tidak kompatibel, ekspresi memerlukan transmisi eksplisit seperti yang ditunjukkan contoh kedua. Cast ke DT_WSTR mencakup panjang string.

    MakeFlag ==  TRUE && FinishedGoodsFlag == TRUE && Size != @BikeSize  
    MakeFlag ==  TRUE && FinishedGoodsFlag == TRUE  && Size != (DT_WSTR,10)@BikeSize  
    
  • Contoh ini menggunakan tabel CurrencyRate . Ekspresi membandingkan nilai dalam tabel dan variabel. Ini mengembalikan TRUE jika entri dalam kolom FromCurrencyCode atau ToCurrencyCode sama dengan nilai variabel dan jika nilai dalam AverageRate lebih besar dari nilai di EndOfDayRate.

    (FromCurrencyCode == @FromCur || ToCurrencyCode == @ToCur) && AverageRate > EndOfDayRate  
    
  • Contoh ini menggunakan tabel Mata Uang. Ekspresi mengembalikan TRUE jika karakter pertama di kolom Nama bukan a atau A.

    SUBSTRING(UPPER(Name),1,1) != "A"  
    

    Ekspresi berikut memberikan hasil yang sama, tetapi lebih efisien karena hanya satu karakter yang dikonversi ke huruf besar.

    UPPER(SUBSTRING(Name,1,1)) != "A"  
    

Ekspresi Non-Boolean

Ekspresi non-Boolean digunakan dalam transformasi Kolom Turunan, ekspresi properti, dan kontainer For Loop.

  • Contoh ini menggunakan tabel Kontak . Ekspresi menghapus spasi di depan dan di belakang dari kolom FirstName, MiddleName, dan LastName . Ini mengekstrak huruf pertama kolom MiddleName jika tidak null, menggabungkan awal tengah dan nilai di FirstName dan LastName, dan menyisipkan spasi yang sesuai di antara nilai.

    TRIM(FirstName) + " " + (!ISNULL(MiddleName) ? SUBSTRING(MiddleName,1,1) + " " : "") + TRIM(LastName)  
    
  • Contoh ini menggunakan tabel Kontak . Ekspresi memvalidasi entri di kolom Salam . Ini mengembalikan entri Salam atau string kosong.

    (Salutation == "Sr." || Salutation == "Ms." || Salutation == "Sra." || Salutation == "Mr.") ? Salutation : ""  
    
  • Contoh ini menggunakan tabel Produk . Ekspresi mengonversi karakter pertama di kolom Warna menjadi huruf besar dan mengonversi karakter yang tersisa menjadi huruf kecil.

    UPPER(SUBSTRING(Color,1,1)) + LOWER(SUBSTRING(Color,2,15))  
    
  • Contoh ini menggunakan tabel Produk . Ekspresi menghitung jumlah bulan produk telah dijual dan mengembalikan string "Tidak Diketahui" jika kolom SellStartDate atau SellEndDate berisi NULL.

    !(ISNULL(SellStartDate)) && !(ISNULL(SellEndDate)) ? (DT_WSTR,2)DATEDIFF("mm",SellStartDate,SellEndDate) : "Unknown"  
    
  • Contoh ini menggunakan tabel Produk . Ekspresi menghitung markup pada kolom StandardCost dan membulatkan hasil ke presisi dua. Hasilnya disajikan sebagai persentase.

    ROUND(ListPrice / StandardCost,2) * 100  
    

Menggunakan Ekspresi dalam Komponen Aliran Data

Artikel teknis, SSIS Expression Cheat Sheet, di pragmaticworks.com