Tüm Ürünler
Search
Belge Merkezi

DataWorks:MongoDB veri kaynağı

Son Güncelleme:Oct 05, 2026

DataWorks, MongoDB ile çift yönlü veri eşitleme sağlar. Bu konuda, DataWorks'ün MongoDB için sunduğu veri eşitleme özellikleri açıklanmaktadır.

Desteklenen sürümler

Yalnızca MongoDB 4.x, 5.x, 6.x, 7.x ve 8,0 sürümleri desteklenir.

Kullanım notları

  • MongoDB veritabanına, o veritabanı için oluşturulmuş bir hesap kullanarak bağlanın. ApsaraDB for MongoDB veri kaynağı kullanıyorsanız varsayılan olarak bir kök hesap oluşturulur. Güvenlik nedeniyle MongoDB veri kaynağı eklerken kök hesabı kullanmamanızı öneririz.

  • MongoDB parçalı küme (sharded cluster) kullanıyorsanız veri kaynağı için bir mongos düğümünün adresini yapılandırmanız gerekir. Bir mongod/shard düğümünün adresini yapılandırmayın. Aksi takdirde eşitleme görevi tüm veri kümesi yerine yalnızca belirtilen parçadan veri sorgulayabilir. mongos ve mongod hakkında daha fazla bilgi için mongos ve mongod belgelerine bakın.

  • Eşzamanlılık 1'den büyükse eşitleme görevi için yapılandırılan koleksiyondaki tüm _id alanları aynı veri türüne sahip olmalıdır. Örneğin tüm _id alanları string veya ObjectId türünde olmalıdır. Aksi takdirde bazı veriler eşitlenmeyebilir.

    Not
    • Eşzamanlılık 1'den büyük olduğunda görev _id alanına göre bölünür. Bu nedenle bu senaryoda _id alanı için karışık veri türleri desteklenmez. _id alanı birden çok veri türü içeriyorsa veri eşitleme için eşzamanlılığı 1 olarak ayarlayın. Bunu yapmak için splitFactor parametresini yapılandırmayın veya splitFactor parametresini 1 olarak ayarlayın.

  • Veri Entegrasyonu dizi türünü desteklemez. Ancak MongoDB dizi türünü destekler ve güçlü bir dizinleme özelliği sunar. Dizeleri MongoDB dizilerine dönüştürmek için belirli parametreleri yapılandırabilirsiniz. Dönüşümden sonra verileri MongoDB'ye paralel olarak yazabilirsiniz.

  • Kendi yönettiğiniz MongoDB veritabanları genel ağ erişimini desteklemez. Bunlara yalnızca Alibaba Cloud iç ağı üzerinden erişilebilir.

  • Docker kullanılarak dağıtılan MongoDB kümeleri desteklenmez.

  • Belirli sütunlardan veri okumak için query parametresini kullanamazsınız.

  • Toplu eşitleme görevinde Veri Entegrasyonu alan yapısını MongoDB'den alamazsa varsayılan olarak altı alan için alan eşlemeleri oluşturur. Alan adları col1, col2, col3, col4, col5 ve col6 şeklindedir.

  • Görev yürütme sırasında görevi parçalamak için varsayılan olarak splitVector komutu kullanılır. Bazı MongoDB sürümleri splitVector komutunu desteklemez; bu durum no such cmd splitVector hatasına neden olabilir. Bu hatayı önlemek için görev yapılandırmasındaki image simgesine tıklayın kod düzenleyicisine geçin ve splitVector kullanımını önlemek için MongoDB parametre yapılandırmasına aşağıdaki parametreyi ekleyin.

    "useSplitVector" : false

Desteklenen alan türleri

MongoDB Reader tarafından desteklenen MongoDB veri türleri

Veri Entegrasyonu çoğu MongoDB veri türünü destekler ancak hepsini desteklemez. Veri türlerinizin desteklendiğinden emin olun.

Veri Entegrasyonu desteklenen veri türlerini okurken aşağıdaki işlemleri gerçekleştirir:

  • İlkel veri türleri için Veri Entegrasyonu column parametresinde yapılandırılan alan adına göre ilgili yoldan verileri otomatik olarak okur. Daha fazla bilgi için bkz. Ek: MongoDB için örnek betik ve parametre açıklaması. Veri Entegrasyonu ayrıca veri türünü otomatik olarak dönüştürür. Sütun için type özelliğini belirtmeniz gerekmez.

    Tür

    Toplu okuma (MongoDB Reader)

    Açıklama

    ObjectId

    Desteklenir

    Nesne kimliği türü.

    Double

    Desteklenir

    64 bit kayan nokta sayısı türü.

    32-bit tamsayı

    Desteklenir

    32 bit tamsayı.

    64-bit tamsayı

    Desteklenir

    64 bit tamsayı.

    Decimal128

    Desteklenir

    Decimal128 türü.

    Not

    Bir alan iç içe geçmiş tür veya birleştirme türü olarak yapılandırılmışsa JSON serileştirme sırasında nesne olarak işlenir. Verileri ondalık sayı olarak çıkarmak için decimal128OutputType parametresini eklemeniz ve bigDecimal olarak ayarlamanız gerekir.

    String

    Desteklenir

    Dize türü.

    Boolean

    Desteklenir

    Boole türü.

    Timestamp

    Desteklenir

    Zaman damgası türü.

    Not

    BsonTimestamp zaman damgalarını saklar. Saat dilimlerinin etkisini dikkate almanız gerekmez. Daha fazla bilgi için bkz. MongoDB'de saat dilimi sorunları.

    Date

    Desteklenir

    Tarih türü.

  • Bazı karmaşık veri türleri için özel işlem gerçekleştirmek üzere sütunun type özelliğini yapılandırabilirsiniz.

    Tür

    Toplu okuma (MongoDB Reader)

    Açıklama

    Document

    Desteklenir

    Gömülü belge türü.

    Array

    Desteklenir

    Dizi türü.

    • Type array.json veya arrays olarak ayarlanırsa veriler doğrudan JSON serileştirme kullanılarak işlenir.

    • Type array veya document.array olarak ayarlanırsa öğeler bir dize olarak birleştirilir. Sütunun splitter özelliğinde belirtilen ayırıcı varsayılan olarak virgüldür (,).

    Önemli

    Veri Entegrasyonu dizi türünü desteklemez. Ancak MongoDB dizi türünü destekler ve güçlü bir dizinleme özelliği sunar. Dizeleri MongoDB dizilerine dönüştürmek için belirli parametreleri yapılandırabilirsiniz. Dönüşümden sonra verileri MongoDB'ye paralel olarak yazabilirsiniz.

Özel Veri Entegrasyonu veri türü: combine


Tür


Toplu okuma (MongoDB Reader)


Açıklama


Combine


Desteklenir

Veri Entegrasyonunda özel bir veri türü.

Type combine olarak ayarlanırsa MongoDB Reader yapılandırılan sütunlara karşılık gelen anahtarları kaldırır ve Belgenin geri kalan tüm bilgilerini JSON çıktısına serileştirir. Ayrıntılı bir örnek için aşağıdaki Örnek 1: Combine türünün kullanılması bölümüne bakın.

MongoDB Reader veri türü eşlemeleri

Aşağıdaki tabloda MongoDB Reader için MongoDB veri türleri ile Veri Entegrasyonu veri türleri arasındaki eşlemeler listelenmektedir.


Dönüştürülen tür kategorisi


MongoDB veri türü


LONG


INT, LONG, document.INT ve document.LONG


DOUBLE


DOUBLE ve document.DOUBLE


STRING


STRING, ARRAY, document.STRING, document.ARRAY ve COMBINE


DATE


DATE ve document.DATE


BOOLEAN


BOOL ve document.BOOL


BYTES


BYTES ve document.BYTES

MongoDB Writer veri türü eşlemeleri


Tür kategorisi


MongoDB veri türü


Tamsayı


INT ve LONG


Kayan nokta


DOUBLE


Dize


STRING ve ARRAY


Tarih ve saat


DATE


Boole


BOOL


İkili


BYTES

Örnek 1: Combine türünün kullanılması

MongoDB Reader eklentisinin combine veri türü bir MongoDB belgesindeki birden çok alanı tek bir JSON dizesinde birleştirmenize olanak tanır. Örneğin üç MongoDB belgesinden alanları MaxCompute'e aktarmak istediğinizi varsayalım. Aşağıdaki örnekte alanlar anahtar-değer çiftleri yerine anahtarlarla temsil edilir. a ve b alanları üç belgede de ortaktır ve x_n değişken bir alandır.

  • doc1: a b x_1 x_2

  • doc2: a b x_2 x_3 x_4

  • doc3: a b x_5

Yapılandırma dosyasında birebir eşleme gerektiren alanları açıkça belirtmeniz gerekir. Birleştirmek istediğiniz alanlar için belgedeki mevcut herhangi bir alan adından farklı yeni bir ad atayın ve türü COMBINE olarak ayarlayın. Aşağıdaki kod bir örnek sunar.

"column": [
{
"name": "a",
"type": "string",
},
{
"name": "b",
"type": "string",
},
{
"name": "doc",
"type": "combine",
}
]

Aşağıdaki tabloda MaxCompute'teki son çıktı gösterilmektedir.


odps_column1


odps_column2


odps_column3


a


b


{x_1,x_2}


a


b


{x_2,x_3,x_4}


a


b


{x_5}

Not

MongoDB belgesindeki birden çok alanı combine türünü kullanarak birleştirdikten sonra çıktı MaxCompute'e eşlendiğinde ortak alanlar otomatik olarak silinir. Yalnızca belgenin benzersiz alanları korunur.

Örneğin a ve b tüm belgelerde ortak alanlardır. doc1: a b x_1 x_2 belgesindeki alanlar combine türü kullanılarak birleştirildikten sonra çıktı {a,b,x_1,x_2} olur. Bu sonuç MaxCompute'e eşlendiğinde a ve b gibi ortak alanlar silinir. Sonuç {x_1,x_2} olarak çıkar.

Örnek 2: Çok düzeyli iç içe geçmiş Belgelerin özyinelemeli olarak ayrıştırılması

MongoDB'deki bir belgede birden çok iç içe geçme düzeyi varsa bunu özyinelemeli olarak ayrıştırmak için belge türünü yapılandırabilirsiniz. Aşağıdaki kod bir örnek sunar.

  • MongoDB'deki kaynak veriler:

    {
        "name": "name1",
        "a":
        {
            "b":
            {
                "c": "this is value"
            }
        }
    }
  • MongoDB sütun yapılandırması:

    {"name":"_id","type":"string"}
    {"name":"name","type":"string"}
    {"name":"a.b.c","type":"document"}

    Yapılandırma tamamlandıktan sonra kaynak ve hedef alanlar şu şekilde eşlenir: _id alanı id ile name alanı name ile ve a.b.c alanı c ile eşlenir.

Yukarıdaki yapılandırmayla iç içe geçmiş kaynak alanı a.b.c'nin değeri hedef alan c'ye yazılır. Eşitleme görevi çalıştırıldıktan sonra hedefe yazılan veri this is value olur.

Veri kaynağı ekleme

DataWorks'te bir eşitleme görevi geliştirmeden önce Veri kaynağı yapılandırması bölümündeki talimatları izleyerek gerekli veri kaynağını DataWorks'e eklemeniz gerekir. Veri kaynağı eklerken parametrelerin anlamlarını anlamak için DataWorks konsolundaki parametre açıklamalarını görüntüleyebilirsiniz.

Veri eşitleme görevi geliştirme

Eşitleme görevini yapılandırmaya ilişkin giriş noktası ve yordam hakkında bilgi için aşağıdaki yapılandırma kılavuzlarına bakın.

Tek bir tablo için toplu eşitleme görevi yapılandırma

Tek bir tablo için gerçek zamanlı eşitleme görevi yapılandırma

Bkz. Tek bir tablo için gerçek zamanlı eşitleme görevi yapılandırma.

Tüm veritabanı için eşitleme görevi yapılandırma

Tüm veritabanı için toplu eşitleme tam ve artımlı gerçek zamanlı eşitleme veya parçalı veritabanlarından gerçek zamanlı eşitleme görevleri yapılandırabilirsiniz. Daha fazla bilgi için bkz. Tüm veritabanı için toplu eşitleme görevi ve Tüm veritabanı için gerçek zamanlı eşitleme görevi yapılandırma.

En iyi uygulamalar

SSS

Ek: MongoDB için örnek betik ve parametre açıklaması

Kod düzenleyici kullanarak toplu eşitleme görevi yapılandırma

Toplu eşitleme görevini kod düzenleyici kullanarak yapılandırmak istiyorsanız ilgili parametreleri betikte birleşik betik biçimi gereksinimlerine göre yapılandırmanız gerekir. Daha fazla bilgi için bkz. Betik modu yapılandırması. Aşağıdaki bilgiler kod düzenleyici kullanarak toplu eşitleme görevi yapılandırırken veri kaynakları için yapılandırmanız gereken parametreleri açıklar.

Reader betik örneği

Aşağıdaki betik verileri MongoDB'den yerel bir ortama çıkarmak üzere yapılandırılmış bir iş örneğidir. Parametreler hakkında daha fazla bilgi için aşağıdaki parametre açıklamalarına bakın.

Önemli
  • Kodu çalıştırmadan önce yorumları silin.

  • Bir diziden belirli öğeleri çıkaramazsınız.

{
    "type":"job",
    "version":"2.0",// Version number.
    "steps":[
        {
            "category": "reader",
            "name": "Reader",
            "parameter": {
                "datasource": "datasourceName", // Data source name.
                "collectionName": "tag_data", // Collection name.
                "query": "", // Data filtering query.
                "column": [
                    {
                        "name": "unique_id", // Field name.
                        "type": "string" // Field type.
                    },
                    {
                        "name": "sid",
                        "type": "string"
                    },
                    {
                        "name": "user_id",
                        "type": "string"
                    },
                    {
                        "name": "auction_id",
                        "type": "string"
                    },
                    {
                        "name": "content_type",
                        "type": "string"
                    },
                    {
                        "name": "pool_type",
                        "type": "string"
                    },
                    {
                        "name": "frontcat_id",
                        "type": "array",
                        "splitter": ""
                    },
                    {
                        "name": "categoryid",
                        "type": "array",
                        "splitter": ""
                    },
                    {
                        "name": "gmt_create",
                        "type": "string"
                    },
                    {
                        "name": "taglist",
                        "type": "array",
                        "splitter": " "
                    },
                    {
                        "name": "property",
                        "type": "string"
                    },
                    {
                        "name": "scorea",
                        "type": "int"
                    },
                    {
                        "name": "scoreb",
                        "type": "int"
                    },
                    {
                        "name": "scorec",
                        "type": "int"
                    },
                    {
                        "name": "a.b",
                        "type": "document.int"
                    },
                    {
                        "name": "a.b.c",
                        "type": "document.array",
                        "splitter": " "
                    }
                ]
            },
            "stepType": "mongodb"
        },
        { 
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "common": { 
            "column": { 
                "timeZone": "GMT+0" // Time zone.
            } 
        },
        "errorLimit":{
            "record":"0"// Number of error records.
        },
        "speed":{
            "throttle":true,// Specifies whether to enable throttling. If you set this parameter to false, throttling is disabled and the mbps parameter does not take effect. If you set this parameter to true, throttling is enabled.
            "concurrent":1, // Number of concurrent jobs.
            "mbps":"12"// Throttling rate. 1 mbps = 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parametre

Açıklama

datasource

Veri kaynağının adı. Kod düzenleyicide bu parametrenin değeri eklenen veri kaynağının adıyla aynı olmalıdır.

collectionName

MongoDB koleksiyonunun adı.

hint

hint parametresi sorgu iyileştiricisini bir sorgu için belirli bir dizin kullanmaya zorlar; bu da performansı artırabilir. Daha fazla bilgi için bkz. hint parametresi. Örnek:

{
"collectionName":"test_collection",
"hint":"{age:1}"
}

column

MongoDB'den okunacak belge alanlarını belirten bir dizi.

  • name: column adı.

  • type parametresi için desteklenen türler şunları içerir:

    • string: Dize.

    • long: Tamsayı.

    • double: Kayan nokta sayısı.

    • date: Tarih.

    • bool: Boole değeri.

    • bytes: İkili sıra.

    • arrays: ["a","b","c"] gibi bir JSON dizesi olarak okur.

    • array: Öğelerin ayırıcı ile ayrıldığı bir dize olarak okur; örneğin a,b,c. arrays biçimini kullanmanızı öneririz.

    • combine: MongoDB Reader eklentisini kullanarak veri okurken bir MongoDB belgesindeki birden çok alanı tek bir JSON dizesinde birleştirebilirsiniz.

  • splitter: MongoDB dizi türünü destekler ancak Veri Entegrasyonu çerçevesi desteklemez. Bu nedenle MongoDB'den okunan dizi türü bu ayırıcı kullanılarak bir dizede birleştirilmelidir.

batchSize

Bir partide alınacak kayıt sayısı. Bu parametre isteğe bağlıdır. Varsayılan değer: 1000.

cursorTimeoutInMs

İmleç zaman aşımı süresi. Bu parametre isteğe bağlıdır. Varsayılan değer: 1000 60 10 = 600000. cursorTimeoutInMs negatif bir değere ayarlanırsa imleç hiçbir zaman zaman aşımına uğramaz.

Not
  • İmlecin hiçbir zaman zaman aşımına uğramamasını ayarlamanızı önermiyoruz. İstemci programı beklenmedik şekilde çıkarsa zaman aşımına uğramayan bir imleç hizmet yeniden başlatılana kadar MongoDB sunucusunda kalır.

  • İmleç zaman aşımı oluşursa aşağıdaki işlemleri gerçekleştirebilirsiniz:

    • batchSize parametresini kullanarak bir partide alınan kayıt sayısını azaltın.

    • cursorTimeoutInMs parametresini kullanarak imleç zaman aşımı süresini artırın.

query

Dönen MongoDB verilerini filtrelemek için bu parametreyi kullanın. Yalnızca belirtilen saat biçimleri desteklenir. UNIX zaman damgası biçimi doğrudan desteklenmez.

Not
  • query parametresi JavaScript sözdizimini desteklemez.

  • Belirtilen sütunlardan veri okuma desteklenmez.

Aşağıdaki kod query parametresi için yaygın örnekler sunar:

  • Durumu normal olan verileri sorgulayın.

    {
      ...
      "query":"{ status: "normal"}"
      ...
    }
  • status: "normal"

    {
      ...
      "query":"{ status: { $in: [ "normal", "forbidden" ] }}"
      ...
    }
  • AND sözdizimi: Durumu normal ve yaşı 30'dan küçük olan verileri sorgulayın.

    {
      ...
      "query":"{ status: "normal", age: { $lt: 30 }}"
      ...
    }
  • Tarih sözdizimi: Oluşturma zamanı 2022-12-01 00:00:00.000 veya sonrası olan verileri sorgulayın. +0800 UTC+8 saat dilimini belirtir.

    {
      ...
      "query":"{ createTime:{$gte:ISODate('2022-12-01T00:00:00.000+0800')}}"
      ...
    }
  • Zamanlama parametresi yer tutuculu tarih sözdizimi: Oluşturma zamanı belirli bir zamandan büyük veya eşit olan verileri sorgulayın.

    {
      ...
      "query":"{ createTime:{$gte:ISODate('$[yyyy-mm-dd]T00:00:00.000+0800')}}"
      ...
    }
    Not

    Zamanlama parametreleri hakkında daha fazla bilgi için bkz. Senaryolar: Veri Entegrasyonunda zamanlama parametrelerinin tipik uygulama senaryoları. Toplu görevler için artımlı eşitlemenin nasıl uygulanacağı hakkında bilgi için bkz. Veri Entegrasyonunda zamanlama parametrelerini kullanma.

  • Zaman dışı alanlar için artımlı eşitleme.

    Bir atama düğümü kullanarak bir alanı hedef veri türüne işleyebilir ve ardından veri eşitleme için Veri Entegrasyonuna aktarabilirsiniz. Örneğin MongoDB'deki artımlı alan bir UNIX zaman damgasıysa bir atama düğümü kullanarak bir zaman türü alanını bir motor işlevi aracılığıyla UNIX zaman damgasına dönüştürebilirsiniz. Ardından zaman damgasını toplu eşitleme görevine aktarabilirsiniz. Atama düğümünün nasıl kullanılacağı hakkında daha fazla bilgi için bkz. Atama düğümü.

Not

MongoDB'nin sorgu sözdizimi hakkında daha fazla bilgi için bkz. resmi MongoDB belgeleri.

splitFactor

Ciddi veri eğriliği varsa eşzamanlılığı artırmadan daha ince taneli parçalama elde etmek için splitFactor değerini artırmayı düşünün.

Writer betik örneği

Aşağıdaki betik verileri MongoDB'ye yazmak üzere yapılandırılmış bir veri eşitleme işi örneğidir. Parametreler hakkında daha fazla bilgi için aşağıdaki parametre açıklamalarına bakın.

{
    "type": "job",
    "version": "2.0",// Version number.
    "steps": [
        {
            "stepType": "stream",
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "mongodb",// Plugin name.
            "parameter": {
                "datasource": "",// Data source name.
                "column": [
                    {
                        "name": "_id",// Column name.
                        "type": "ObjectId"// Data type. If replaceKey is _id, you must set type to ObjectId. If you set type to string, the replacement fails.
                    },
                    {
                        "name": "age",
                        "type": "int"
                    },
                    {
                        "name": "id",
                        "type": "long"
                    },
                    {
                        "name": "wealth",
                        "type": "double"
                    },
                    {
                        "name": "hobby",
                        "type": "array",
                        "splitter": " "
                    },
                    {
                        "name": "valid",
                        "type": "boolean"
                    },
                    {
                        "name": "date_of_join",
                        "format": "yyyy-MM-dd HH:mm:ss",
                        "type": "date"
                    }
                ],
                "writeMode": {// Write mode.
                    "isReplace": "true",
                    "replaceKey": "_id"
                },
                "collectionName": "datax_test"// Collection name.
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {// Number of error records.
            "record": "0"
        },
        "speed": {
            "throttle": true,// Specifies whether to enable throttling. If you set this parameter to false, throttling is disabled and the mbps parameter does not take effect. If you set this parameter to true, throttling is enabled.
            "concurrent": 1,// Number of concurrent jobs.
            "mbps": "1"// Throttling rate. 1 mbps = 1 MB/s.
        },
       "jvmOption": "-Xms1024m -Xmx1024m"
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Writer betik parametreleri

Parametre

Açıklama

Gerekli

Varsayılan değer

datasource

Veri kaynağının adı. Kod düzenleyicide bu parametrenin değeri eklenen veri kaynağının adıyla aynı olmalıdır.

Evet

Yok

collectionName

MongoDB koleksiyonunun adı.

Evet

Yok

column

MongoDB'ye yazılacak belge alanlarını belirten bir dizi.

  • name: Sütunun adı.

  • type: Sütunun türü.

    • int: 32 bit tamsayı.

    • string: Dize.

    • array: splitter parametresi gereklidir. Kaynak dizeyi ayırmak için kullanılır. Örneğin:

      Kaynak veri a,b,c ise ve splitter virgül (,) olarak ayarlanırsa veri ["a","b","c"] dizisine bölünür ve MongoDB'ye yazılır.

      {"type":"array","name":"col_split_array","splitter":",","itemtype":"string"}
      Not

      array türü için itemtype parametresi aşağıdaki numaralandırma türlerini destekler: double, int, long, bool, bytes ve string.

    • json: JSON dizesi.

    • long: Uzun tamsayı.

    • date: Tarih.

    • double: Kayan nokta sayısı.

    Not

    MongoDB Writer ayrıca iç içe geçmiş türlerin yazılmasını da destekler. İç içe geçmiş bir türü belirtmek için type ön ekine document. ekleyin. name parametresi için basamaklı bir ad yapılandırabilirsiniz. Örnek:

    {"type":"document.string","name":"col_nest.col_string"}
        {"type":"document.array","name":"col_nest.col_split_array","splitter":",","itemtype":"string"}
  • splitter: Özel ayırıcı. Bu parametreyi yalnızca bir dizenin karakter dizisine bölünmesi gerektiğinde kullanın. Dize belirtilen ayırıcı kullanılarak bir diziye bölünür ve MongoDB'de depolanır.

Evet

Yok

writeMode

İletim sırasında verilerin üzerine yazılıp yazılmayacağını belirtir. isReplace ve replaceKey parametrelerini içerir:

  • isReplace: True olarak ayarlanırsa aynı replaceKey için üzerine yazma işlemi gerçekleştirilir. False olarak ayarlanırsa üzerine yazma işlemi gerçekleştirilmez.

  • replaceKey: Her kayıt için üzerine yazma amacıyla kullanılan iş birincil anahtarını belirtir. ReplaceKey için birden çok anahtar desteklenmez. Bu genellikle MongoDB'deki birincil anahtara karşılık gelir.

Not

isReplace true olarak ayarlanırsa ve _id alanı dışında bir alan replaceKey olarak yapılandırılırsa çalışma zamanında aşağıdakine benzer bir hata oluşabilir:

After applying the update, the (immutable) field '_id' was found to have been altered to _id: "2"

Bunun nedeni yazılacak verilerin _id değerinin replaceKey ile eşleşmediği kayıtlar içermesidir. Daha fazla bilgi için SSS bölümüne bakın: Hata: After applying the update, the (immutable) field '_id' was found to have been altered to _id: "2".

Hayır

Yok

preSql

MongoDB'ye veri yazmadan önce geçmişi temizleme gibi önceden yürütülecek bir işlem. preSql boşsa önceden yapılandırılmış bir işlem yoktur. preSql yapılandırırken değerinin JSON sözdizimine uygun olduğundan emin olun.

Hayır

Yok

Bir Veri Entegrasyonu işi çalıştırıldığında yapılandırılan preSql önce yürütülür. Gerçek veri yazma aşaması yalnızca preSql yürütmesi tamamlandıktan sonra başlar. preSql parametresi yazılan verilerin içeriğini etkilemez. preSql parametresi Veri Entegrasyonu için idempotent yürütme sağlar. Örneğin preSql değeriniz her görev çalıştırmasından önce iş kurallarınıza göre geçmiş verileri temizlemek için kullanılabilir. Bu durumda bir görev başarısız olursa Veri Entegrasyonu işini yeniden çalıştırmanız yeterlidir.

preSql için biçim gereksinimleri aşağıdaki gibidir:

  • Önceden işlem türünü belirtmek için type alanını yapılandırmanız gerekir. Desteklenen değerler drop ve remove şeklindedir. Örnek: "preSql":{"type":"remove"}.

    • drop: Koleksiyonu ve içindeki verileri siler. Silinecek koleksiyon collectionName parametresiyle belirtilir.

    • remove: Koşula göre verileri siler.

    • json: Veri silme koşullarını belirtmek için bir JSON nesnesi kullanabilirsiniz. Örnek: "preSql":{"type":"remove", "json":"{'operationTime':{'$gte':ISODate('${last_day}T00:00:00.424+0800')}}"}. Bu örnekte ${last_day} $[yyyy-mm-dd] biçiminde bir DataWorks zamanlama parametresidir. Gerektiğinde diğer MongoDB destekli koşullu işleçleri ($gt, $lt, $gte ve $lte gibi), mantıksal işleçleri (and ve or gibi) veya işlevleri (max, min, sum, avg ve ISODate gibi) de kullanabilirsiniz.

      Veri Entegrasyonu veri silme işlemini aşağıdaki standart MongoDB API'sini kullanarak yürütür:

      query=(BasicDBObject) com.mongodb.util.JSON.parse(json);        
      col.deleteMany(query);
      Not

      Koşullara göre veri silmek için JSON yapılandırmasını kullanmanızı öneririz.

    • item: Veri filtreleme için sütun adını (name), koşulu (condition) ve sütun değerini (value) bir item içinde yapılandırabilirsiniz. Örnek: "preSql":{"type":"remove","item":[{"name":"pv","value":"100","condition":"$gt"},{"name":"pid","value":"10"}]}.

      Veri Entegrasyonu yapılandırılan item koşullarına göre bir sorgu koşulu oluşturur ve ardından silme işlemini standart bir MongoDB API'si kullanarak yürütür. Örneğin: col.deleteMany(query);.

  • preSql tanınmazsa önceden silme işlemi gerçekleştirilmez.