ইন্ট্রা-ক্যাম্পেন এক্সপেরিমেন্ট একটি ক্যাম্পেনের মধ্যে নির্দিষ্ট ফিচার পরীক্ষা করার জন্য ব্যবহার করা হয়। সিস্টেম-ম্যানেজড এক্সপেরিমেন্টের ক্ষেত্রে কন্ট্রোল ও ট্রিটমেন্ট ক্যাম্পেনের মধ্যে ট্রাফিক ভাগ করা হয়, কিন্তু ইন্ট্রা-ক্যাম্পেন এক্সপেরিমেন্টের ক্ষেত্রে ফিচার চালু আছে কিনা তার উপর ভিত্তি করে ক্যাম্পেনের মধ্যেই ট্রাফিক ভাগ করা হয়।
এই ওয়ার্কফ্লো নিম্নলিখিত
ExperimentType ভ্যালুর জন্য কাজ করে:
ADOPT_AI_MAX- Search ক্যাম্পেনে AI Max ফিচারের প্রভাব পরীক্ষা করে।
ADOPT_BROAD_MATCH_KEYWORDS- সার্চ ক্যাম্পেনে বেশি পরিমাণে ম্যাচ কীওয়ার্ডের প্রভাব পরীক্ষা করে।
PMAX_TEXT_CUSTOMIZATION_FINAL_URL_EXPANSION- বিশেষ করে পারফর্ম্যান্স ম্যাক্স ফিচার পরীক্ষা করার জন্য ব্যবহার করা হয়: টেক্সট কাস্টমাইজেশন এবং ফাইনাল URL এক্সপ্যানশন। Google AI-কে প্রাসঙ্গিক ল্যান্ডিং পৃষ্ঠায় ট্রাফিক পাঠাতে এবং সার্চ কোয়েরির সাথে আরও ভালোভাবে ম্যাচ করার জন্য টেক্সট অ্যাসেট তৈরি করতে দেয়।
সেট-আপ করুন
Experiment(status-কেENABLED-এ সেট করে) সংজ্ঞায়িত করুন, এক্সপেরিমেন্টের ধরন, কন্ট্রোলExperimentArmএবং ট্রিটমেন্টExperimentArmপ্রদান করুন:ADOPT_AI_MAXএবংADOPT_BROAD_MATCH_KEYWORDS-এর জন্য, কন্ট্রোল আর্ম এবং ট্রিটমেন্ট আর্ম, উভয়কেইcampaigns-এ একই ক্যাম্পেন রেফারেন্স করতে হবে।PMAX_TEXT_CUSTOMIZATION_FINAL_URL_EXPANSION-এর জন্য, শুধু ট্রিটমেন্ট আর্মcampaigns-এ পারফর্ম্যান্স ম্যাক্স ক্যাম্পেন নির্দিষ্ট করে (কন্ট্রোল আর্মেcampaignsসেট না করে ছেড়ে দিন)।
ADOPT_AI_MAX-এর জন্য,ai_max_setting.enable_ai_maxচালু করতে এবংasset_automation_settingsকনফিগার করতে ফিল্ড মাস্ক সহ একটিCampaignOperationআপডেট তৈরি করুন।একটি
GoogleAdsService.Mutateঅনুরোধ পাঠান যাতে এক্সপেরিমেন্ট ও এক্সপেরিমেন্ট আর্ম তৈরি করার জন্য মিউটেট অপারেশন এবং (ADOPT_AI_MAX-এর জন্য) ক্যাম্পেনে টেস্ট ফিচার চালু করার সুবিধা অন্তর্ভুক্ত থাকে।
ADOPT_AI_MAX এবং ADOPT_BROAD_MATCH_KEYWORDS-এর জন্য, ক্যাম্পেনের মধ্যে ট্রাফিক সমানভাবে (৫০/৫০)
বিভক্ত করতে হবে যাতে ৫০% ট্রাফিক চালু করা ফিচারের (ট্রিটমেন্ট গ্রুপ)
এবং ৫০% ট্রাফিক চালু না করা ফিচারের (কন্ট্রোল গ্রুপ) সংস্পর্শে আসে।
PMAX_TEXT_CUSTOMIZATION_FINAL_URL_EXPANSION-এ কাস্টম ট্রাফিক স্প্লিট করার সুবিধা আছে
যার যোগফল ১০০।
Java
// Create the experiment resource name using a temporary ID. String experimentResourceName = ResourceNames.experiment(customerId, -1L); // Create the experiment. Experiment experiment = Experiment.newBuilder() .setResourceName(experimentResourceName) .setName("ADOPT_AI_MAX Experiment #" + UUID.randomUUID()) .setType(ExperimentType.ADOPT_AI_MAX) .build(); MutateOperation experimentOperation = MutateOperation.newBuilder() .setExperimentOperation(ExperimentOperation.newBuilder().setCreate(experiment).build()) .build(); // Create the control arm. Both arms in an intra-campaign experiment reference the same base // campaign. ExperimentArm controlArm = ExperimentArm.newBuilder() .setExperiment(experimentResourceName) .setName("Control Arm") .setControl(true) .setTrafficSplit(50) .addCampaigns(ResourceNames.campaign(customerId, campaignId)) .build(); MutateOperation controlArmOperation = MutateOperation.newBuilder() .setExperimentArmOperation( ExperimentArmOperation.newBuilder().setCreate(controlArm).build()) .build(); // Create the treatment arm. ExperimentArm treatmentArm = ExperimentArm.newBuilder() .setExperiment(experimentResourceName) .setName("Treatment Arm") .setControl(false) .setTrafficSplit(50) .addCampaigns(ResourceNames.campaign(customerId, campaignId)) .build(); MutateOperation treatmentArmOperation = MutateOperation.newBuilder() .setExperimentArmOperation( ExperimentArmOperation.newBuilder().setCreate(treatmentArm).build()) .build(); // Create a campaign operation with an update mask to enable AI Max and configure asset // automation settings. // Note: For intra-campaign experiments, these settings are applied to the base campaign but are // only active for the treatment traffic split. Campaign campaign = Campaign.newBuilder() .setResourceName(ResourceNames.campaign(customerId, campaignId)) .setAiMaxSetting(AiMaxSetting.newBuilder().setEnableAiMax(true).build()) .addAssetAutomationSettings( AssetAutomationSetting.newBuilder() .setAssetAutomationType(AssetAutomationType.TEXT_ASSET_AUTOMATION) .setAssetAutomationStatus(AssetAutomationStatus.OPTED_IN) .build()) .addAssetAutomationSettings( AssetAutomationSetting.newBuilder() .setAssetAutomationType( AssetAutomationType.FINAL_URL_EXPANSION_TEXT_ASSET_AUTOMATION) .setAssetAutomationStatus(AssetAutomationStatus.OPTED_IN) .build()) .build(); CampaignOperation campaignOp = CampaignOperation.newBuilder() .setUpdate(campaign) .setUpdateMask(FieldMasks.allSetFieldsOf(campaign)) .build(); MutateOperation campaignMutateOperation = MutateOperation.newBuilder().setCampaignOperation(campaignOp).build(); // Send all mutate operations in a single Mutate request. List<MutateOperation> mutateOperations = ImmutableList.of( experimentOperation, controlArmOperation, treatmentArmOperation, campaignMutateOperation); try (GoogleAdsServiceClient googleAdsServiceClient = googleAdsClient.getLatestVersion().createGoogleAdsServiceClient()) { MutateGoogleAdsRequest request = MutateGoogleAdsRequest.newBuilder() .setCustomerId(Long.toString(customerId)) .addAllMutateOperations(mutateOperations) .build(); MutateGoogleAdsResponse response = googleAdsServiceClient.mutate(request);
C#
// Create the experiment resource name using a temporary ID. string experimentResourceName = ResourceNames.Experiment(customerId, -1); // Create the experiment. MutateOperation experimentOperation = new MutateOperation() { ExperimentOperation = new ExperimentOperation() { Create = new Experiment() { ResourceName = experimentResourceName, Name = $"ADOPT_AI_MAX Experiment #{ExampleUtilities.GetRandomString()}", Type = ExperimentType.AdoptAiMax } } }; // Create the control arm. Both arms in an intra-campaign experiment // reference the same base campaign. MutateOperation controlArmOperation = new MutateOperation() { ExperimentArmOperation = new ExperimentArmOperation() { Create = new ExperimentArm() { Experiment = experimentResourceName, Name = "Control Arm", Control = true, TrafficSplit = 50, Campaigns = { ResourceNames.Campaign(customerId, campaignId) } } } }; // Create the treatment arm. MutateOperation treatmentArmOperation = new MutateOperation() { ExperimentArmOperation = new ExperimentArmOperation() { Create = new ExperimentArm() { Experiment = experimentResourceName, Name = "Treatment Arm", Control = false, TrafficSplit = 50, Campaigns = { ResourceNames.Campaign(customerId, campaignId) } } } }; // Create a campaign operation with an update mask to enable AI Max and // configure asset automation settings. // Note: For intra-campaign experiments, these settings are applied to the // base campaign but are only active for the treatment traffic split. Campaign campaign = new Campaign() { ResourceName = ResourceNames.Campaign(customerId, campaignId), AiMaxSetting = new Campaign.Types.AiMaxSetting { EnableAiMax = true } }; campaign.AssetAutomationSettings.Add(new Campaign.Types.AssetAutomationSetting { AssetAutomationType = AssetAutomationType.TextAssetAutomation, AssetAutomationStatus = AssetAutomationStatus.OptedIn }); campaign.AssetAutomationSettings.Add(new Campaign.Types.AssetAutomationSetting { AssetAutomationType = AssetAutomationType.FinalUrlExpansionTextAssetAutomation, AssetAutomationStatus = AssetAutomationStatus.OptedIn }); MutateOperation campaignOperation = new MutateOperation() { CampaignOperation = new CampaignOperation() { Update = campaign, UpdateMask = FieldMasks.AllSetFieldsOf(campaign) } }; // Send all mutate operations in a single Mutate request. List<MutateOperation> mutateOperations = new List<MutateOperation> { experimentOperation, controlArmOperation, treatmentArmOperation, campaignOperation }; MutateGoogleAdsResponse response = googleAdsService.Mutate( customerId.ToString(), mutateOperations);
PHP
This example is not yet available in PHP; you can take a look at the other languages.
Python
# Create the experiment resource name using a temporary ID. experiment_resource_name = googleads_service.experiment_path( customer_id, "-1" ) # Create the experiment. experiment_operation = client.get_type("MutateOperation") experiment = experiment_operation.experiment_operation.create experiment.resource_name = experiment_resource_name experiment.name = f"ADOPT_AI_MAX Experiment #{uuid4()}" experiment.type_ = client.enums.ExperimentTypeEnum.ADOPT_AI_MAX # Create the control arm. Both arms in an intra-campaign experiment # reference the same base campaign. control_arm_operation = client.get_type("MutateOperation") control_arm = control_arm_operation.experiment_arm_operation.create control_arm.experiment = experiment_resource_name control_arm.name = "Control Arm" control_arm.control = True control_arm.traffic_split = 50 control_arm.campaigns.append( googleads_service.campaign_path(customer_id, campaign_id) ) # Create the treatment arm. treatment_arm_operation = client.get_type("MutateOperation") treatment_arm = treatment_arm_operation.experiment_arm_operation.create treatment_arm.experiment = experiment_resource_name treatment_arm.name = "Treatment Arm" treatment_arm.control = False treatment_arm.traffic_split = 50 treatment_arm.campaigns.append( googleads_service.campaign_path(customer_id, campaign_id) ) # Create a campaign operation with an update mask to enable AI Max and # configure asset automation settings. # Note: For intra-campaign experiments, these settings are applied to the # base campaign but are only active for the treatment traffic split. campaign_operation = client.get_type("MutateOperation") campaign = campaign_operation.campaign_operation.update campaign.resource_name = googleads_service.campaign_path( customer_id, campaign_id ) campaign.ai_max_setting.enable_ai_max = True for asset_automation_type_enum in [ client.enums.AssetAutomationTypeEnum.TEXT_ASSET_AUTOMATION, client.enums.AssetAutomationTypeEnum.FINAL_URL_EXPANSION_TEXT_ASSET_AUTOMATION, ]: asset_automation_setting = client.get_type( "Campaign" ).AssetAutomationSetting() asset_automation_setting.asset_automation_type = ( asset_automation_type_enum ) asset_automation_setting.asset_automation_status = ( client.enums.AssetAutomationStatusEnum.OPTED_IN ) campaign.asset_automation_settings.append(asset_automation_setting) client.copy_from( campaign_operation.campaign_operation.update_mask, protobuf_helpers.field_mask(None, campaign._pb), ) # Send all mutate operations in a single Mutate request. mutate_operations = [ experiment_operation, control_arm_operation, treatment_arm_operation, campaign_operation, ] response = googleads_service.mutate( customer_id=customer_id, mutate_operations=mutate_operations, )
Ruby
# Create the experiment resource name using a temporary ID. experiment_resource_name = client.path.experiment(customer_id, "-1") # Create the experiment. experiment_operation = client.operation.mutate do |m| m.experiment_operation = client.operation.create_resource.experiment do |e| e.resource_name = experiment_resource_name e.name = "ADOPT_AI_MAX Experiment #{(Time.new.to_f * 1000).to_i}" e.type = :ADOPT_AI_MAX end end # Create the control arm. Both arms in an intra-campaign experiment # reference the same base campaign. campaign_resource_name = client.path.campaign(customer_id, campaign_id) control_arm_operation = client.operation.mutate do |m| m.experiment_arm_operation = client.operation.create_resource.experiment_arm do |arm| arm.experiment = experiment_resource_name arm.name = "Control Arm" arm.control = true arm.traffic_split = 50 arm.campaigns << campaign_resource_name end end # Create the treatment arm. treatment_arm_operation = client.operation.mutate do |m| m.experiment_arm_operation = client.operation.create_resource.experiment_arm do |arm| arm.experiment = experiment_resource_name arm.name = "Treatment Arm" arm.control = false arm.traffic_split = 50 arm.campaigns << campaign_resource_name end end # Create a campaign operation with an update mask to enable AI Max and # configure asset automation settings. # Note: For intra-campaign experiments, these settings are applied to the # base campaign but are only active for the treatment traffic split. campaign_operation = client.operation.mutate do |m| m.campaign_operation = client.operation.update_resource.campaign(campaign_resource_name) do |c| c.ai_max_setting = client.resource.ai_max_setting do |aims| aims.enable_ai_max = true end [:TEXT_ASSET_AUTOMATION, :FINAL_URL_EXPANSION_TEXT_ASSET_AUTOMATION].each do |type| c.asset_automation_settings << client.resource.asset_automation_setting do |setting| setting.asset_automation_type = type setting.asset_automation_status = :OPTED_IN end end end end # Send all mutate operations in a single Mutate request. mutate_operations = [ experiment_operation, control_arm_operation, treatment_arm_operation, campaign_operation, ] response = client.service.google_ads.mutate( customer_id: customer_id, mutate_operations: mutate_operations, )
Perl
This example is not yet available in Perl; you can take a look at the other languages.
কার্ল
এক্সপেরিমেন্ট সংক্রান্ত রিপোর্ট
কন্ট্রোল ও ট্রিটমেন্ট ট্রাফিক একটি ক্যাম্পেনের মধ্যেই মিশে থাকে বলে, কন্ট্রোল ও ট্রিটমেন্ট গ্রুপের মধ্যে মেট্রিক তুলনা করতে আপনাকে অবশ্যই ডাইরেক্ট এক্সপেরিমেন্ট রিপোর্টিং ব্যবহার করতে হবে। স্ট্যান্ডার্ড ক্যাম্পেন-লেভেল রিপোর্টিং শুধুমাত্র পুরো ক্যাম্পেনের জন্য একত্রিত মেট্রিক দেখায় এবং দুটি গ্রুপের মধ্যে পার্থক্য করতে পারে না।
নিম্নলিখিত GAQL কোয়েরি গত ৩০ দিনে ADOPT_AI_MAX
ইন্ট্রা-ক্যাম্পেন এক্সপেরিমেন্টের জন্য ক্লিক সংক্রান্ত পরিসংখ্যান ফিরিয়ে আনে:
SELECT
experiment.resource_name,
experiment.name,
metrics.clicks,
metrics.control_clicks,
metrics.clicks_point_estimate,
metrics.clicks_p_value
FROM experiment
WHERE segments.date DURING LAST_30_DAYS
AND experiment.type = 'ADOPT_AI_MAX'
এক্সপেরিমেন্ট প্রোমোট, গ্র্যাজুয়েট বা শেষ করা
ফলাফল মূল্যায়ন করার পরে, আপনি
ExperimentService ব্যবহার করে এক্সপেরিমেন্ট সম্পূর্ণ করতে পারবেন:
- শেষ: আপনি ফলাফলে সন্তুষ্ট না হলে,
EndExperimentব্যবহার করুন। ফিচারটি বন্ধ করা হয়েছে এবং ক্যাম্পেনটি পরীক্ষামূলক ফিচার ছাড়াই সমস্ত ট্রাফিক পরিবেশন করতে ফিরে আসে। এটি একটি সিঙ্ক্রোনাস অপারেশন। - প্রোমোট করা (
ADOPT_AI_MAXএবংADOPT_BROAD_MATCH_KEYWORDS): আপনি যদি সার্চ ইন্ট্রা-ক্যাম্পেন এক্সপেরিমেন্টের ফলাফলে সন্তুষ্ট হন, তাহলেPromoteExperimentব্যবহার করুন। এটি ক্যাম্পেনের নতুন স্থায়ী অবস্থা হিসেবে পরীক্ষামূলক পরিবর্তন প্রয়োগ করে। এটি একটি অ্যাসিঙ্ক্রোনাস অপারেশন; বিস্তারিত জানতে অ্যাসিঙ্ক্রোনাস সমস্যা দেখুন। - গ্র্যাজুয়েট (
PMAX_TEXT_CUSTOMIZATION_FINAL_URL_EXPANSION):PMAX_TEXT_CUSTOMIZATION_FINAL_URL_EXPANSION-এর জন্যPromoteExperimentকাজ করে না; পরিবর্তে, আগে থেকে থাকা পারফর্ম্যান্স ম্যাক্স ক্যাম্পেনে ট্রিটমেন্ট আর্মের টেক্সট কাস্টমাইজেশন ও ফাইনাল URL এক্সপ্যানশন সেটিংস প্রয়োগ করতেGraduateExperimentব্যবহার করুন।campaign_budget_mappings-এCampaignBudgetMappingএন্ট্রি যোগ করুন যেখানে ট্রিটমেন্ট আর্মের ক্যাম্পেন (experiment_campaign) এবং তার বাজেট (campaign_budget) উল্লেখ করা থাকবে। এটি একটি সিঙ্ক্রোনাস অপারেশন। (GraduateExperiment,ADOPT_AI_MAXবাADOPT_BROAD_MATCH_KEYWORDS-এর জন্য কাজ করে না কারণ গ্র্যাজুয়েট করার জন্য কোনও আলাদা ট্রিটমেন্ট ক্যাম্পেন নেই।)