পণ্য সাব-এপিআই আপনাকে আপনার বিদ্যমান পণ্যগুলির আংশিক আপডেট করতে দেয়। এটি ঘন ঘন ডেটা পরিবর্তন করার জন্য আদর্শ, যেমন দাম এবং প্রাপ্যতা, কারণ এটি একটি ছোট পরিবর্তনের জন্য সম্পূর্ণ পণ্যটি পুনরায় জমা দেওয়ার প্রয়োজন এড়ায়। যাইহোক, সমস্ত পণ্য ডেটা সিঙ্কে আছে তা নিশ্চিত করতে আপনার নিয়মিতভাবে পণ্যগুলি পুনরায় প্রবেশ করানো উচিত৷
আপনার পণ্য আপডেট করার জন্য productinputs.patch
পদ্ধতিটি কীভাবে ব্যবহার করবেন তা এই নির্দেশিকাটি কভার করে।
পূর্বশর্ত
আপনি একটি পণ্য আপডেট করার আগে, আপনি নিম্নলিখিত প্রয়োজন:
- আপডেট করার জন্য একটি বিদ্যমান পণ্য। কিভাবে পণ্য তৈরি করতে হয় তা জানতে, পণ্য যোগ করুন এবং পরিচালনা করুন নির্দেশিকা দেখুন।
- পণ্য ইনপুট যে ডেটা উৎসের
name
(উদাহরণস্বরূপ,accounts/12345/dataSources/67890
)। কিভাবে এটি খুঁজে বের করতে হয় তা জানতে, পণ্য আপলোড গাইডের জন্য API ডেটা উত্স পরিচালনা করুন ।
নির্দিষ্ট পণ্য বিবরণ আপডেট
একটি পণ্যের কিছু বিবরণ পরিবর্তন করতে, যেমন তার মূল্য বা প্রাপ্যতা, এর সমস্ত তথ্য পুনরায় জমা না দিয়ে, productInputs.patch
পদ্ধতিটি ব্যবহার করুন৷
আপনি updateMask
প্যারামিটারে কোন ক্ষেত্রগুলি পরিবর্তন করছেন তা নির্দিষ্ট করতে পারেন। updateMask
হল একটি কমা-বিভক্ত তালিকা যা আপনি আপডেট করতে চান। patch
পদ্ধতি নিম্নরূপ আচরণ করে:
-
updateMask
এবং বডিতে ক্ষেত্র: এই ক্ষেত্রগুলি নতুন মান সহ আপডেট করা হয়েছে। -
updateMask
ক্ষেত্রগুলি কিন্তু বডিতে নয়: এই ক্ষেত্রগুলি পণ্য ইনপুট থেকে মুছে ফেলা হয়েছে। - ক্ষেত্রগুলি
updateMask
নেই: এই ক্ষেত্রগুলি অপরিবর্তিত রাখা হয়েছে। -
updateMask
প্যারামিটার বাদ দেওয়া হয়েছে: অনুরোধের অংশে দেওয়া সমস্ত ক্ষেত্র আপডেট করা হয়েছে। অনুরোধের অংশে দেওয়া ক্ষেত্রগুলি পণ্য ইনপুট থেকে মুছে ফেলা হয় না।
এখানে একটি আপডেটের আগে পণ্য ডেটার একটি উদাহরণ রয়েছে:
{
"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"
}
}
এই উদাহরণটি একটি পণ্যের title
এবং availability
আপডেট করে এবং এর imageLink
মুছে দেয়। description
এবং price
updateMask
নেই এবং অপরিবর্তিত থাকবে।
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"
}
}
}
একটি সফল কল আপডেট করা ProductInput
সম্পদ ফেরত দেয়। title
এবং availability
আপডেট করা হয়েছে, এবং imageLink
সরানো হয়েছে কারণ এটি updateMask
ছিল কিন্তু অনুরোধের বডিতে ছিল না। description
এবং price
অপরিবর্তিত রয়েছে কারণ সেগুলি updateMask
তালিকাভুক্ত ছিল না।
{
"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"
],
}
}
নিম্নলিখিত কোড নমুনাগুলি দেখায় কিভাবে একটি পণ্য আপডেট করতে হয়।
জাভা
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);
}
}
পিএইচপি
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();
পাইথন
"""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"
}
}'
কাস্টম বৈশিষ্ট্য ব্যবহার করে আপডেট করুন
আপনি একটি একক কলে স্ট্যান্ডার্ড এবং কাস্টম উভয় বৈশিষ্ট্য আপডেট করতে পারেন। একটি কাস্টম অ্যাট্রিবিউট আপডেট করতে, updateMask
customAttributes
সাথে এর নামের উপসর্গ দিন।
এই উদাহরণটি একটি অনুরোধে বেশ কয়েকটি ক্রিয়া সম্পাদন করে:
- স্ট্যান্ডার্ড
title
বৈশিষ্ট্য সরাসরি আপডেট করে। - একটি বিদ্যমান কাস্টম বৈশিষ্ট্য (
myCustomAttrToBeUpdated
) আপডেট করে। - একটি নতুন কাস্টম বৈশিষ্ট্য সন্নিবেশ করান (
myCustomAttrToBeInserted
)। - একটি বিদ্যমান কাস্টম বৈশিষ্ট্য (
myCustomAttrToBeDeleted
) মুছে দেয়।
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"
}
]
}
একটি সফল অনুরোধ সমস্ত নির্দিষ্ট পরিবর্তনগুলিকে প্রতিফলিত করে আপডেট করা ProductInput
ফেরত দেয়।
কাস্টম বৈশিষ্ট্য আপডেট বুঝুন
আপনি নিজের সংজ্ঞায়িত বৈশিষ্ট্যগুলি আপডেট করতে customAttributes
ক্ষেত্রটি ব্যবহার করতে পারেন। এগুলি স্ট্যান্ডার্ড স্পেসিফিকেশনে ম্যাপ করে না এবং চূড়ান্ত পণ্যে কাস্টম বৈশিষ্ট্য হিসাবে সংরক্ষণ করা হবে।
কিভাবে পণ্য আপডেট প্রক্রিয়া করা হয়
যখন আপনি একটি patch
অনুরোধ পাঠান, কোনো নিয়ম প্রয়োগ করার আগে আপডেটটি নির্দিষ্ট ProductInput
ডেটাতে প্রয়োগ করা হয়। এটি পণ্য সন্নিবেশ এবং আপডেট করার মধ্যে সামঞ্জস্যপূর্ণ আচরণের ফলাফল।
এখানে আপনার আপডেট কিভাবে প্রক্রিয়া করা হয়:
ইনপুট আপডেট করুন: আপনার
patch
অনুরোধ আপনার প্রদত্ত ডেটা উত্সের সাথে যুক্ত নির্দিষ্টProductInput
পরিবর্তন করে৷প্রক্রিয়াকরণ এবং মার্জিং: ইনপুট আপডেট হওয়ার পরে, প্রক্রিয়াকরণ শুরু হয়:
- ফিডের নিয়ম এবং পরিপূরক ডেটা উত্স: পণ্যের প্রাথমিক উত্সে কনফিগার করা নিয়মগুলি প্রাথমিক এবং সম্পূরক উত্স থেকে
ProductInput
একত্রিত করে। এই নিয়মগুলি বৈশিষ্ট্যগুলি পরিবর্তন করতে পারে বা নতুনগুলি পেতে পারে৷ নিয়ম সেট-আপ করার বিষয়ে আরও জানতে, https://support.google.com/merchants/answer/14994083 নিবন্ধটি দেখুন। - অন্যান্য ডেটা উত্স: অন্যান্য উত্স থেকে ডেটা (উদাহরণস্বরূপ স্বয়ংক্রিয় উন্নতি) প্রাথমিক ডেটা উত্স ইনপুটের সাথে একত্রিত হয়।
- বৈধতা: মার্জ করা ডেটা পণ্যের ডেটা স্পেসিফিকেশন এবং Google-এর শপিং নীতির বিরুদ্ধে যাচাই করা হয়।
- ফিডের নিয়ম এবং পরিপূরক ডেটা উত্স: পণ্যের প্রাথমিক উত্সে কনফিগার করা নিয়মগুলি প্রাথমিক এবং সম্পূরক উত্স থেকে
চূড়ান্ত পণ্য: এই পাইপলাইনের ফলাফল হল চূড়ান্ত, প্রক্রিয়াকৃত
Product
সম্পদ যাproducts.get
বাproducts.list
ব্যবহার করে ফেরত দেওয়া যেতে পারে। এটিও সেই পণ্যের সংস্করণ যা Merchant Center-এ দেখানো হয় এবং বিভিন্ন গন্তব্যে দেখানোর যোগ্য।
এই মাল্টি-স্টেপ প্রক্রিয়ার কারণে, আপনি যখন একটি আপডেটের অনুরোধ পাঠান এবং যখন পরিবর্তনগুলি চূড়ান্ত Product
সংস্থানে প্রতিফলিত হয় তখন আপনি products.get
এর মাধ্যমে পুনরুদ্ধার করতে পারেন এর মধ্যে, সাধারণত কয়েক মিনিট বিলম্ব হয়।
উদাহরণ: একটি একক প্রাথমিক ইনপুট সহ একটি পণ্য আপডেট করা
এটি সবচেয়ে সাধারণ ব্যবহারের ক্ষেত্রে। একটি পণ্য একটি একক প্রাথমিক ডেটা উত্সে বিদ্যমান এবং আপনি এর কিছু বৈশিষ্ট্য আপডেট করতে চান৷
- প্রাথমিক অবস্থা: একটি পণ্য
en~US~SKU12345
title: "Classic T-Shirt"
এবংprice: 15.99 USD
। - আপডেটের অনুরোধ: আপনি
14.99 USD
price
আপডেট করার জন্য একটিpatch
অনুরোধ পাঠান এবংavailability
out of stock
সেট করুন। - প্রক্রিয়াকরণ:
-
SKU12345
এর জন্যProductInput
আপডেট করা হয়েছে।
-
- চূড়ান্ত পণ্য: চূড়ান্ত
Product
এখনtitle: "Classic T-Shirt"
,price: 14.99 USD
, এবংavailability: "out of stock"
।
উদাহরণ: সম্পূরক ডেটা এবং নিয়ম সহ একটি পণ্য আপডেট করা
এই উদাহরণটি দেখায় যে কীভাবে ফিড নিয়মগুলি একটি আপডেটকে প্রভাবিত করতে পারে, যার ফলে কিছু পরিবর্তন প্রয়োগ করা হয় যখন অন্যগুলি ওভাররাইড করা হয়।
- প্রাথমিক অবস্থা:
- প্রাথমিক ইনপুট:
en~US~SKU12345
title: "Great T-Shirt"
এবংdescription: "A great short-sleeve t-shirt."
. - পরিপূরক ইনপুট: একই পণ্যের একটি সম্পূরক ডেটা উত্সে
title: "Awesome T-Shirt"
এবংdescription: "An awesome short-sleeve t-shirt."
. - ফিড নিয়ম: পরিপূরক ডেটা উৎস থেকে
title
নেওয়ার জন্য একটি নিয়ম সেট করা হয়েছে।description
কোন নিয়ম নেই। - ফলাফল: চূড়ান্ত প্রক্রিয়াকৃত
Product
title: "Awesome T-Shirt"
এবংdescription: "A great short-sleeve t-shirt."
.
- প্রাথমিক ইনপুট:
- আপডেটের অনুরোধ: আপনি প্রাথমিক ডেটা সোর্স আপডেট করার জন্য একটি
patch
অনুরোধ পাঠান,title
"Fantastic T-Shirt"
এবংdescription
"A fantastic short-sleeve t-shirt."
. - প্রক্রিয়াকরণ:
- প্রাথমিক ডেটা উৎসের
ProductInput
title: "Fantastic T-Shirt"
এবংdescription: "A fantastic short-sleeve t-shirt."
. - প্রক্রিয়াকরণ পাইপলাইন চলে।
-
title
জন্য, ফিড নিয়ম নির্দেশ করে যে সম্পূরক ডেটা উৎস থেকে মান (Awesome T-Shirt
) অগ্রাধিকার নেয়, আপনার আপডেটকে অগ্রাহ্য করে। -
description
জন্য, যেহেতু কোনো ওভাররাইডিং নিয়ম নেই, প্রাথমিক ইনপুট থেকে আপডেট করা মান (A fantastic short-sleeve t-shirt.
) ব্যবহার করা হয়।
- প্রাথমিক ডেটা উৎসের
- চূড়ান্ত পণ্য: চূড়ান্ত
Product
শিরোনামটিAwesome T-Shirt
(আপনার আপডেটটি ওভাররাইড করা হয়েছে) রয়ে গেছে, তবে এর বিবরণ এখনA fantastic short-sleeve t-shirt.
(আপনার আপডেট প্রয়োগ করা হয়েছে)।
আপডেট এবং পরিপূরক ডেটা উৎসের মধ্যে বেছে নিন
আপনি productinputs.patch
ব্যবহার করে বা সম্পূরক ডেটা উত্সগুলিতে ডেটা সন্নিবেশ করে পণ্যের ডেটা পরিবর্তন করতে পারেন৷ সর্বোত্তম পছন্দটি আপনার ডেটা পরিচালনার কৌশলের উপর নির্ভর করে।
অপ্রত্যাশিত ফলাফল এড়াতে, আমরা সুপারিশ করি যে আপনি একই পণ্যের জন্য একই পণ্য ডেটা পরিচালনা করতে productinputs.patch
এবং সম্পূরক ডেটা উত্স উভয়ই ব্যবহার করবেন না।
এখানে একটি বিস্তারিত তুলনা আছে:
বৈশিষ্ট্য | productinputs.patch (আপডেট) | পরিপূরক তথ্য উৎস |
---|---|---|
জন্য সেরা | বিদ্যমান ডেটাতে দ্রুত, ঘন ঘন, আংশিক পরিবর্তন (যেমন, মূল্য, প্রাপ্যতা)। | যৌক্তিকভাবে পৃথক ডেটা স্তরিত করা, বিভিন্ন সিস্টেম দ্বারা বিভিন্ন বৈশিষ্ট্য পরিচালনা করা, বা জটিল নিয়ম-ভিত্তিক ওভাররাইড। |
মেকানিজম | জায়গায় একটি বিদ্যমান ProductInput পরিবর্তন করে। | একটি সম্পূরক ডেটা উৎসে একটি নতুন, পৃথক ProductInput তৈরি করে। |
ডেটা গ্রানুলারিটি | একটি একক ProductInput এর নির্দিষ্ট ক্ষেত্রে কাজ করে। | সম্পূরক উৎসের মধ্যে সমগ্র ProductInput কাজ করে। |
জেদ | একই ProductInput একটি সম্পূর্ণ insert বা অন্য patch দ্বারা ওভাররাইট না হওয়া পর্যন্ত পরিবর্তনগুলি অব্যাহত থাকে৷ | অধ্যবসায় ফিড নিয়ম দ্বারা নিয়ন্ত্রিত হয়. প্রাথমিক ডেটা অনির্দিষ্টকালের জন্য ওভাররাইড করতে পারে যদি নিয়মগুলি এটিকে অগ্রাধিকার দেয়। |
নিয়ম মিথস্ক্রিয়া | ফিড নিয়ম ছাড়াই ব্যবহার করা যেতে পারে কারণ এটি একটি বিদ্যমান ডেটা সোর্স এবং ProductInput আপডেট করে। | পরিপূরক উত্স লিঙ্ক করার জন্য প্রাথমিক উত্সে স্পষ্টভাবে একটি নিয়ম সেট আপ করতে হবে৷ |
ডেটা সোর্স সেটআপ | একটি বিদ্যমান ডেটা উৎসে কাজ করে। কোন নতুন উৎসের প্রয়োজন নেই। | আলাদা সম্পূরক ডেটা উত্স তৈরি এবং পরিচালনা করা এবং ফিড নিয়ম ব্যবহার করে তাদের লিঙ্ক করা প্রয়োজন। |