Products alt API'si, mevcut ürünlerinizde kısmi güncellemeler yapmanıza olanak tanır. Bu yöntem, küçük bir değişiklik için ürünün tamamını yeniden gönderme ihtiyacını ortadan kaldırdığından fiyat ve stok durumu gibi sık değişen veriler için idealdir. Ancak tüm ürün verilerinin senkronize olduğundan emin olmak için ürünleri düzenli olarak yeniden eklemeniz gerekir.
Bu kılavuzda, ürünlerinizi güncellemek için productinputs.patch
yönteminin nasıl kullanılacağı açıklanmaktadır.
Ön koşullar
Bir ürünü güncelleyebilmek için aşağıdakilere ihtiyacınız vardır:
- Güncellenecek mevcut bir ürün. Ürün oluşturmayı öğrenmek için Ürün ekleme ve yönetme rehberine bakın.
- Ürün girişinin ait olduğu veri kaynağının
name
(örneğin,accounts/12345/dataSources/67890
). Bunu nasıl bulacağınızı öğrenmek için Ürün yüklemeleri için API veri kaynaklarını yönetme kılavuzuna bakın.
Belirli ürün ayrıntılarını güncelleme
Bir ürünün fiyatı veya stok durumu gibi birkaç ayrıntısını tüm bilgilerini yeniden göndermeden değiştirmek için productInputs.patch
yöntemini kullanın.
updateMask
parametresinde hangi alanları değiştirdiğinizi belirtebilirsiniz. updateMask
, güncellemek istediğiniz alanların virgülle ayrılmış listesidir. patch
yöntemi şu şekilde çalışır:
updateMask
ve gövdedeki alanlar: Bu alanlar yeni değerlerle güncellenir.updateMask
içinde olup metinde olmayan alanlar: Bu alanlar ürün girişinden silinir.updateMask
içinde olmayan alanlar: Bu alanlar değiştirilmez.updateMask
parametresi atlandı: İstek gövdesinde sağlanan tüm alanlar güncellenir. İstek gövdesinde sağlanmayan alanlar ürün girişinden silinmez.
Güncellemeden önceki ürün verileri örneğini aşağıda bulabilirsiniz:
{
"name": "accounts/{ACCOUNT_ID}/productInputs/en~US~SKU12345",
"product": "accounts/{ACCOUNT_ID}/products/en~US~SKU12345",
"offerId": "SKU12345",
"contentLanguage": "en",
"feedLabel": "US",
"productAttributes": {
"title": "Classic Cotton T-Shirt",
"description": "A comfortable, durable, and stylish t-shirt made from 100% cotton.",
"link": "https://www.example.com/p/SKU12345",
"availability": "IN_STOCK",
"price": {
"amountMicros": "15990000",
"currencyCode": "USD"
},
"condition": "NEW",
"gtins": [
"9780007350896"
],
"imageLink": "https://www.example.com/image/SKU12345"
}
}
Bu örnekte, bir ürünün title
ve availability
özellikleri güncelleniyor ve imageLink
özelliği siliniyor. description
ve price
, updateMask
içinde yer almaz ve değişmeden kalır.
PATCH https://merchantapi.googleapis.com/products/v1/accounts/{ACCOUNT_ID}/productInputs/en~US~SKU12345?updateMask=productAttributes.title,productAttributes.availability,productAttributes.imageLink&dataSource=accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}
{
"productAttributes": {
"title": "Classic Cotton T-Shirt - New Edition",
"availability": "OUT_OF_STOCK",
"description": "A comfortable T-shirt from premium cotton, newer edition.",
"price": {
"amountMicros": "9990000",
"currencyCode": "USD"
}
}
}
Başarılı bir çağrı, güncellenen ProductInput
kaynağını döndürür. title
ve availability
güncellenir, imageLink
ise updateMask
içinde olduğu ancak istek gövdesinde olmadığı için kaldırılır. description
ve price
, updateMask
listesinde yer almadığı için değişmeden kalır.
{
"name": "accounts/{ACCOUNT_ID}/productInputs/en~US~SKU12345",
"product": "accounts/{ACCOUNT_ID}/products/en~US~SKU12345",
"offerId": "SKU12345",
"contentLanguage": "en",
"feedLabel": "US",
"productAttributes": {
"title": "Classic Cotton T-Shirt - New Edition",
"description": "A comfortable, durable, and stylish t-shirt made from 100% cotton.",
"link": "https://www.example.com/p/SKU12345",
"availability": "OUT_OF_STOCK",
"price": {
"amountMicros": "15990000",
"currencyCode": "USD"
},
"condition": "NEW",
"gtins": [
"9780007350896"
],
}
}
Aşağıdaki kod örneklerinde bir ürünün nasıl güncelleneceği gösterilmektedir.
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.protobuf.FieldMask;
import com.google.shopping.merchant.datasources.v1.DataSourceName;
import com.google.shopping.merchant.products.v1.Availability;
import com.google.shopping.merchant.products.v1.Condition;
import com.google.shopping.merchant.products.v1.ProductAttributes;
import com.google.shopping.merchant.products.v1.ProductInput;
import com.google.shopping.merchant.products.v1.ProductInputName;
import com.google.shopping.merchant.products.v1.ProductInputsServiceClient;
import com.google.shopping.merchant.products.v1.ProductInputsServiceSettings;
import com.google.shopping.merchant.products.v1.UpdateProductInputRequest;
import com.google.shopping.type.CustomAttribute;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to update a product input */
public class UpdateProductInputSample {
public static void updateProductInput(Config config, String productId, String dataSourceId)
throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the credentials retrieved above.
ProductInputsServiceSettings productInputsServiceSettings =
ProductInputsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Creates product name to identify product.
String name =
ProductInputName.newBuilder()
.setAccount(config.getAccountId().toString())
.setProductinput(productId)
.build()
.toString();
// Just productAttributes and customAttributes can be updated
FieldMask fieldMask =
FieldMask.newBuilder()
.addPaths("product_attributes.title")
.addPaths("product_attributes.description")
.addPaths("product_attributes.link")
.addPaths("product_attributes.image_link")
.addPaths("product_attributes.availability")
.addPaths("product_attributes.condition")
.addPaths("product_attributes.gtins")
.addPaths("custom_attributes.mycustomattribute")
.build();
// Calls the API and catches and prints any network failures/errors.
try (ProductInputsServiceClient productInputsServiceClient =
ProductInputsServiceClient.create(productInputsServiceSettings)) {
ProductAttributes attributes =
ProductAttributes.newBuilder()
.setTitle("A Tale of Two Cities")
.setDescription("A classic novel about the French Revolution")
.setLink("https://exampleWebsite.com/tale-of-two-cities.html")
.setImageLink("https://exampleWebsite.com/tale-of-two-cities.jpg")
.setAvailability(Availability.IN_STOCK)
.setCondition(Condition.NEW)
.addGtins("9780007350896")
.build();
// The datasource can be either a primary or supplemental datasource.
String dataSource =
DataSourceName.newBuilder()
.setAccount(config.getAccountId().toString())
.setDatasource(dataSourceId)
.build()
.toString();
UpdateProductInputRequest request =
UpdateProductInputRequest.newBuilder()
.setUpdateMask(fieldMask)
// You can only update product attributes and custom_attributes
.setDataSource(dataSource)
.setProductInput(
ProductInput.newBuilder()
.setName(name)
.setProductAttributes(attributes)
.addCustomAttributes(
CustomAttribute.newBuilder()
.setName("mycustomattribute")
.setValue("Example value")
.build())
.build())
.build();
System.out.println("Sending update ProductInput request");
ProductInput response = productInputsServiceClient.updateProductInput(request);
System.out.println("Updated ProductInput Name below");
// The last part of the product name will be the product ID assigned to a product by Google.
// Product ID has the format `contentLanguage~feedLabel~offerId`
System.out.println(response.getName());
System.out.println("Updated Product below");
System.out.println(response);
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// An ID assigned to a product by Google. In the format
// contentLanguage~feedLabel~offerId
String productId = "en~label~sku123"; // Replace with your product ID.
// Identifies the data source that will own the product input.
String dataSourceId = "{INSERT_DATASOURCE_ID}"; // Replace with your datasource ID.
updateProductInput(config, productId, dataSourceId);
}
}
PHP
use Google\ApiCore\ApiException;
use Google\Protobuf\FieldMask;
use Google\Shopping\Merchant\Products\V1\Availability;
use Google\Shopping\Merchant\Products\V1\Condition;
use Google\Shopping\Merchant\Products\V1\ProductAttributes;
use Google\Shopping\Merchant\Products\V1\Client\ProductInputsServiceClient;
use Google\Shopping\Merchant\Products\V1\ProductInput;
use Google\Shopping\Merchant\Products\V1\UpdateProductInputRequest;
use Google\Shopping\Type\CustomAttribute;
/**
* This class demonstrates how to update a product input.
*/
class UpdateProductInputSample
{
// An ID assigned to a product by Google. In the format
// contentLanguage~feedLabel~offerId
// Please ensure this product ID exists for the update to succeed.
private const PRODUCT_ID = "online~en~label~sku123";
// Identifies the data source that will own the product input.
// Please ensure this data source ID exists.
private const DATASOURCE_ID = "<INSERT_DATASOURCE_ID>";
/**
* Helper function to construct the full product input resource name.
*
* @param string $accountId The merchant account ID.
* @param string $productInputId The product input ID (e.g., "online~en~label~sku123").
* @return string The full product input resource name.
*/
private static function getProductInputName(string $accountId, string $productInputId): string
{
return sprintf("accounts/%s/productInputs/%s", $accountId, $productInputId);
}
/**
* Helper function to construct the full data source resource name.
*
* @param string $accountId The merchant account ID.
* @param string $dataSourceId The data source ID.
* @return string The full data source resource name.
*/
private static function getDataSourceName(string $accountId, string $dataSourceId): string
{
return sprintf("accounts/%s/dataSources/%s", $accountId, $dataSourceId);
}
/**
* Updates an existing product input in your Merchant Center account.
*
* @param array $config The configuration array containing the account ID.
* @param string $productId The ID of the product input to update.
* @param string $dataSourceId The ID of the data source.
*/
public static function updateProductInput(
array $config,
string $productId,
string $dataSourceId
): void {
// Gets the OAuth credentials to make the request.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Creates options config containing credentials for the client to use.
$options = ['credentials' => $credentials];
// Creates a ProductInputsServiceClient.
$productInputsServiceClient = new ProductInputsServiceClient($options);
// Construct the full resource name of the product input to be updated.
$name = self::getProductInputName($config['accountId'], $productId);
// Define the FieldMask to specify which fields to update.
// Only 'attributes' and 'custom_attributes' can be specified in the
// FieldMask for product input updates.
$fieldMask = new FieldMask([
'paths' => [
"product_attributes.title",
"product_attributes.description",
"product_attributes.link",
"product_attributes.image_link",
"product_attributes.availability",
"product_attributes.condition",
"product_attributes.gtin",
"custom_attributes.mycustomattribute" // Path for a specific custom attribute
]
]);
// Calls the API and handles any network failures or errors.
try {
// Define the new attributes for the product.
$attributes = new ProductAttributes([
'title' => 'A Tale of Two Cities 3',
'description' => 'A classic novel about the French Revolution',
'link' => 'https://exampleWebsite.com/tale-of-two-cities.html',
'image_link' => 'https://exampleWebsite.com/tale-of-two-cities.jpg',
'availability' => Availability::IN_STOCK,
'condition' => Condition::PBNEW,
'gtins' => ['9780007350896'] // GTIN is a repeated field.
]);
// Construct the full data source name.
// This specifies the data source context for the update.
$dataSource = self::getDataSourceName($config['accountId'], $dataSourceId);
// Create the ProductInput object with the desired updates.
// The 'name' field must match the product input being updated.
$productInput = new ProductInput([
'name' => $name,
'product_attributes' => $attributes,
'custom_attributes' => [ // Provide the list of custom attributes.
new CustomAttribute([
'name' => 'mycustomattribute',
'value' => 'Example value'
])
]
]);
// Create the UpdateProductInputRequest.
$request = new UpdateProductInputRequest([
'update_mask' => $fieldMask,
'data_source' => $dataSource,
'product_input' => $productInput
]);
print "Sending update ProductInput request\n";
// Make the API call to update the product input.
$response = $productInputsServiceClient->updateProductInput($request);
print "Updated ProductInput Name below\n";
// The name of the updated product input.
// The last part of the product name is the product ID (e.g., contentLanguage~feedLabel~offerId).
print $response->getName() . "\n";
print "Updated Product below\n";
// Print the full updated product input object.
print_r($response);
} catch (ApiException $e) {
printf("ApiException caught: %s\n", $e->getMessage());
}
}
/**
* Executes the UpdateProductInput sample.
*/
public function callSample(): void
{
$config = Config::generateConfig();
$productId = self::PRODUCT_ID;
$dataSourceId = self::DATASOURCE_ID;
self::updateProductInput($config, $productId, $dataSourceId);
}
}
// Run the script.
$sample = new UpdateProductInputSample();
$sample->callSample();
Python
"""A module to update a product input."""
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.protobuf import field_mask_pb2
from google.shopping.merchant_products_v1 import Availability
from google.shopping.merchant_products_v1 import Condition
from google.shopping.merchant_products_v1 import ProductAttributes
from google.shopping.merchant_products_v1 import ProductInput
from google.shopping.merchant_products_v1 import ProductInputsServiceClient
from google.shopping.merchant_products_v1 import UpdateProductInputRequest
from google.shopping.type import CustomAttribute
# Fetches the Merchant Center account ID from the authentication examples.
# This ID is needed to construct resource names for the API.
_ACCOUNT_ID = configuration.Configuration().read_merchant_info()
def update_product_input(account_id: str, product_id: str, data_source_id: str):
"""Updates an existing product input for a specific account.
Args:
account_id: The Merchant Center account ID.
product_id: The ID of the product input to update. This ID is assigned by
Google and has the format `contentLanguage~feedLabel~offerId`.
data_source_id: The ID of the data source that owns the product input.
"""
# Obtains OAuth credentials for authentication.
credentials = generate_user_credentials.main()
# Creates a ProductInputsServiceClient instance.
client = ProductInputsServiceClient(credentials=credentials)
# Constructs the full resource name for the product input.
# Format: accounts/{account}/productInputs/{productinput}
name = f"accounts/{account_id}/productInputs/{product_id}"
# Defines the FieldMask to specify which fields of the product input
# are being updated. Only 'attributes' and 'custom_attributes' can be updated.
field_mask = field_mask_pb2.FieldMask(
paths=[
"product_attributes.title",
"product_attributes.description",
"product_attributes.link",
"product_attributes.image_link",
"product_attributes.availability",
"product_attributes.condition",
"product_attributes.gtins",
"custom_attributes.mycustomattribute",
]
)
# Prepares the new attribute values for the product.
attributes = ProductAttributes(
title="A Tale of Two Cities updated",
description="A classic novel about the French Revolution",
link="https://exampleWebsite.com/tale-of-two-cities.html",
image_link="https://exampleWebsite.com/tale-of-two-cities.jpg",
availability=Availability.IN_STOCK,
condition=Condition.NEW,
gtins=["9780007350896"], # GTIN is a repeated field.
)
# Constructs the full resource name for the data source.
# The data source can be primary or supplemental.
# Format: accounts/{account}/dataSources/{datasource}
data_source = f"accounts/{account_id}/dataSources/{data_source_id}"
# Prepares the ProductInput object with the updated information.
product_input_data = ProductInput(
name=name,
product_attributes=attributes,
custom_attributes=[
CustomAttribute(
name="mycustomattribute", value="Example value"
)
],
)
# Creates the UpdateProductInputRequest.
request = UpdateProductInputRequest(
update_mask=field_mask,
data_source=data_source,
product_input=product_input_data,
)
# Sends the update request to the API.
try:
print("Sending update ProductInput request")
response = client.update_product_input(request=request)
print("Updated ProductInput Name below")
# The response includes the name of the updated product input.
# The last part of the product name is the product ID assigned by Google.
print(response.name)
print("Updated Product below")
print(response)
except RuntimeError as e:
# Catches and prints any errors that occur during the API call.
print(e)
if __name__ == "__main__":
# The ID of the product to be updated.
# This ID is assigned by Google and typically follows the format:
# contentLanguage~feedLabel~offerId
# Replace with an actual product ID from your Merchant Center account.
product_id_to_update = "online~en~label~sku123"
# The ID of the data source that will own the updated product input.
# Replace with an actual data source ID from your Merchant Center account.
data_source_id_for_update = "<INSERT_DATA_SOURCE_ID>"
update_product_input(
_ACCOUNT_ID, product_id_to_update, data_source_id_for_update
)
cURL
curl --location --request PATCH 'https://merchantapi.googleapis.com/products/v1/accounts/{ACCOUNT_ID}/productInputs/en~US~SKU12345?updateMask=productAttributes.title,productAttributes.description&dataSource=accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}' \
--header 'Authorization: Bearer <API_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
"productAttributes": {
"title": "A Tale of Two Cities",
"description": "A classic novel about the French Revolution"
}
}'
Özel özellikleri kullanarak güncelleme
Hem standart hem de özel özellikleri tek bir çağrıda güncelleyebilirsiniz. Özel bir özelliği güncellemek için updateMask
bölümünde adının önüne customAttributes
ekleyin.
Bu örnekte, tek bir istekte çeşitli işlemler gerçekleştirilir:
- Standart
title
özelliğini doğrudan günceller. - Mevcut bir özel özelliği (
myCustomAttrToBeUpdated
) günceller. - Yeni bir özel özellik ekler (
myCustomAttrToBeInserted
). - Mevcut bir özel özelliği (
myCustomAttrToBeDeleted
) siler.
PATCH https://merchantapi.googleapis.com/products/v1/accounts/{ACCOUNT_ID}/productInputs/en~US~SKU12345?updateMask=productAttributes.title,customAttributes.myCustomAttrToBeInserted,customAttributes.myCustomAttrToBeUpdated,customAttributes.myCustomAttrToBeDeleted&dataSource=accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}
{
"productAttributes": {
"title": "ProductTitle Updated"
},
"customAttributes": [
{
"name": "description",
"value": "A newly updated description."
},
{
"name": "myCustomAttrToBeUpdated",
"value": "myCustomAttrToBeUpdated updated value"
},
{
"name": "myCustomAttrToBeInserted",
"value": "new from update"
}
]
}
Başarılı bir istek, belirtilen tüm değişiklikleri yansıtan güncellenmiş ProductInput
değerini döndürür.
Özel özellik güncellemelerini anlama
Kendiniz tanımladığınız özellikleri güncellemek için customAttributes
alanını kullanabilirsiniz. Bunlar standart spesifikasyonla eşlenmez ve nihai üründe özel özellikler olarak depolanır.
Ürün güncellemeleri nasıl işlenir?
patch
isteği gönderdiğinizde, kurallardan herhangi biri uygulanmadan ProductInput
önce güncelleme belirli verilere uygulanır. Bu durum, ürün ekleme ve güncelleme arasında tutarlı davranışlar olmasını sağlar.
Güncellemeniz şu şekilde işlenir:
Girişi Güncelleme:
patch
isteğiniz, sağladığınız veri kaynağıyla ilişkili belirliProductInput
öğesini değiştirir.İşleme ve Birleştirme: Giriş güncellendikten sonra işleme başlar:
- Feed Kuralları ve Ek Veri Kaynakları: Ürünün birincil kaynağında yapılandırılan kurallar, birincil ve ek kaynaklardaki
ProductInput
değerlerini birleştirir. Bu kurallar, özellikleri değiştirebilir veya yeni özellikler türetebilir. Kuralları ayarlama hakkında daha fazla bilgi edinmek için https://support.google.com/merchants/answer/14994083 makalesini inceleyin. - Diğer veri kaynakları: Diğer kaynaklardaki veriler (ör. otomatik iyileştirmeler) de birincil veri kaynağı girişiyle birleştirilir.
- Doğrulama: Birleştirilen veriler, ürün verileri spesifikasyonu ve Google'ın Alışveriş politikalarına göre doğrulanır.
- Feed Kuralları ve Ek Veri Kaynakları: Ürünün birincil kaynağında yapılandırılan kurallar, birincil ve ek kaynaklardaki
Nihai Ürün: Bu işlem hattının sonucu,
products.get
veyaproducts.list
kullanılarak döndürülebilen nihai, işlenmişProduct
kaynağıdır. Bu, Merchant Center'da gösterilen ve farklı hedeflerde görünmeye uygun olan ürün sürümüdür.
Bu çok adımlı süreç nedeniyle, güncelleme isteği göndermeniz ile değişikliklerin products.get
ile alabileceğiniz nihai Product
kaynağına yansıtılması arasında genellikle birkaç dakikalık bir gecikme olur.
Örnek: Tek bir birincil girişle ürün güncelleme
Bu, en yaygın kullanım alanıdır. Bir ürün tek bir birincil veri kaynağında bulunuyor ve bazı özelliklerini güncellemek istiyorsunuz.
- İlk Durum: Birincil veri kaynağınızda
en~US~SKU12345
kimlikli bir ürüntitle: "Classic T-Shirt"
veprice: 15.99 USD
ile birlikte bulunuyor. - Güncelleme isteği:
price
değerini14.99 USD
olarak güncellemek veavailability
değeriniout of stock
olarak ayarlamak içinpatch
isteği gönderirsiniz. - İşleniyor:
SKU12345
içinProductInput
güncellendi.
- Son Ürün: Son
Product
artıktitle: "Classic T-Shirt"
,price: 14.99 USD
veavailability: "out of stock"
içeriyor.
Örnek: Bir ürünü ek veriler ve kurallarla güncelleme
Bu örnekte, feed kurallarının bir güncellemeyi nasıl etkileyebileceği ve bazı değişikliklerin uygulanmasına, bazılarının ise geçersiz kılınmasına neden olabileceği gösterilmektedir.
- İlk Durum:
- Birincil Giriş:
en~US~SKU12345
,title: "Great T-Shirt"
vedescription: "A great short-sleeve t-shirt."
özelliklerine sahip. - Ek Giriş: Aynı ürünün,
title: "Awesome T-Shirt"
vedescription: "An awesome short-sleeve t-shirt."
ile ek bir veri kaynağında girişi var. - Feed kuralı: Ek veri kaynağından
title
alınması için bir kural ayarlanmıştır.description
için kural yok. - Sonuç: İşlenen son
Product
,title: "Awesome T-Shirt"
vedescription: "A great short-sleeve t-shirt."
içeriyor.
- Birincil Giriş:
- Güncelleme isteği:
patch
Birincil veri kaynağını güncelleme isteği göndererektitle
değerini"Fantastic T-Shirt"
,description
değerini ise"A fantastic short-sleeve t-shirt."
olarak ayarlarsınız. - İşleniyor:
- Birincil veri kaynağındaki
ProductInput
,title: "Fantastic T-Shirt"
vedescription: "A fantastic short-sleeve t-shirt."
içerecek şekilde güncellenir. - İşleme ardışık düzeni çalışır.
title
için feed kuralı, ek veri kaynağındaki (Awesome T-Shirt
) değerin öncelikli olmasını ve güncellemenizin geçersiz kılınmasını zorunlu kılar.description
için geçersiz kılma kuralı olmadığından birincil girişten (A fantastic short-sleeve t-shirt.
) güncellenen değer kullanılır.
- Birincil veri kaynağındaki
- Son Ürün: Son
Product
ürününün başlığıAwesome T-Shirt
olarak kalır (güncellemeniz geçersiz kılındı) ancak açıklaması artıkA fantastic short-sleeve t-shirt.
(güncellemeniz uygulandı).
Güncellemeler ve ek veri kaynakları arasında seçim yapma
Ürün verilerini productinputs.patch
kullanarak veya ek veri kaynaklarına veri ekleyerek değiştirebilirsiniz. En iyi seçenek, veri yönetimi stratejinize bağlıdır.
Öngörülemeyen sonuçlardan kaçınmak için aynı ürünün aynı ürün verilerini yönetmek üzere hem productinputs.patch
hem de ek veri kaynaklarını kullanmamanızı öneririz.
Ayrıntılı karşılaştırmayı aşağıda bulabilirsiniz:
Özellik | productinputs.patch (Güncellemeler) |
Ek Veri Kaynakları |
---|---|---|
İdeal Kullanım Alanları | Mevcut verilerde (ör. fiyat, stok durumu) hızlı, sık ve kısmi değişiklikler yapılması | Mantıksal olarak ayrı verileri katmanlama, farklı sistemler tarafından farklı özelliklerin yönetilmesi veya karmaşık kural tabanlı geçersiz kılmalar. |
Mekanizma | Mevcut bir ProductInput öğesini yerinde değiştirir. |
Ek veri kaynağında yeni ve ayrı bir ProductInput oluşturur. |
Veri Ayrıntı Düzeyi | Tek bir ProductInput öğesinin belirli alanlarında çalışır. |
Ek kaynaktaki ProductInput 'nın tamamında çalışır. |
Kalıcılık (Persistence) | Değişiklikler, aynı ProductInput tam bir insert veya başka bir patch ile üzerine yazılana kadar devam eder. |
Kalıcılık, feed kurallarıyla kontrol edilir. Kurallar öncelik veriyorsa birincil verileri süresiz olarak geçersiz kılabilir. |
Kurallar Etkileşimi | Mevcut bir veri kaynağını güncellediği için feed kuralları olmadan kullanılabilir ve ProductInput . |
Ek kaynağı bağlamak için birincil kaynakta açıkça bir kural oluşturulması gerekir. |
Veri kaynağı kurulumu | Mevcut bir veri kaynağında çalışır. Yeni kaynak gerekmez. | Ayrı ek veri kaynakları oluşturup yönetmeyi ve bunları feed kurallarını kullanarak bağlamayı gerektirir. |