ไฟล์ฟีดที่แบ่งออกเป็นหลายส่วน

คุณอาจต้องชาร์ดดิ้ง (หรือแบ่งฟีดออกเป็นหลายไฟล์) ทั้งนี้ขึ้นอยู่กับสินค้าคงคลัง

กรณีที่ควรใช้การแยกข้อมูล

  • ฟีดมีขนาดเกิน 200 MB สำหรับ 1 ไฟล์ (หลังจากการบีบอัด gzip)

    • ตัวอย่าง: ฟีดความพร้อมที่สร้างขึ้นมีขนาด 1 GB ข้อมูลนี้ควรแบ่งออกเป็นไฟล์ (หรือกลุ่ม) แยกต่างหากอย่างน้อย 5 ไฟล์
  • พื้นที่โฆษณาของพาร์ทเนอร์กระจายอยู่ในระบบและ/หรือภูมิภาคต่างๆ ซึ่งทำให้การไกล่เกลี่ยพื้นที่โฆษณาเป็นเรื่องยาก

    • ตัวอย่าง: พาร์ทเนอร์มีพื้นที่โฆษณาในสหรัฐอเมริกาและสหภาพยุโรปที่อยู่ในระบบแยกกัน ระบบอาจสร้างฟีดด้วยไฟล์ (หรือกลุ่ม) 2 ไฟล์ โดย 1 ไฟล์สำหรับสหรัฐอเมริกา และ 1 ไฟล์สำหรับสหภาพยุโรปที่มี nonce และ generation_timestamp เดียวกัน

กฎทั่วไป

  • แต่ละกลุ่มต้องมีขนาดไม่เกิน 200 MB ต่อ 1 ไฟล์ (หลังจากการบีบอัด gzip)
  • เราขอแนะนำให้ใช้ไม่เกิน 20 ข้อมูลพร็อพเพอร์ตี้ต่อฟีด หากคุณมีเหตุผลทางธุรกิจที่ต้องใช้จำนวนเงินมากกว่าจำนวนดังกล่าว โปรดติดต่อทีมสนับสนุนเพื่อขอทราบวิธีการเพิ่มเติม
  • เรคคอร์ดแต่ละรายการ (เช่น ออบเจ็กต์ Merchant รายการเดียว) ต้องส่งในสhard เดียว ไม่สามารถแยกออกเป็นหลายสhard อย่างไรก็ตาม ไม่จำเป็นต้องส่งในข้อมูลพร็อพเพอร์ตี้ที่มี shard_number เดียวกันสำหรับฟีดในอนาคต
  • คุณควรแบ่งข้อมูลให้เท่าๆ กันระหว่างกลุ่มข้อมูลเพื่อให้ไฟล์ที่แบ่งกลุ่มทั้งหมดมีขนาดใกล้เคียงกันเพื่อประสิทธิภาพที่ดียิ่งขึ้น

วิธีแบ่งกลุ่มฟีด

สําหรับไฟล์ (หรือกลุ่ม) แต่ละรายการ ให้ตั้งค่า FeedMetadata เป็นค่าต่อไปนี้

  • processing_instruction ตั้งค่าเป็น PROCESS_AS_COMPLETE
  • shard_number ตั้งค่าเป็นกลุ่มปัจจุบันของฟีด (เริ่มต้นที่ 0 ถึง total_shards - 1 โดยไม่มีการหยุดชะงัก)
  • total_shards ตั้งค่าเป็นจํานวนกลุ่มทั้งหมดของฟีด (เริ่มต้นที่ 1)
  • nonce ตั้งค่าเป็นตัวระบุที่ไม่ซ้ำกันซึ่งเหมือนกันในข้อมูลพร็อพเพอร์ตี้ทั้งหมดของฟีดเดียวกัน แต่แตกต่างจากค่าของฟีดอื่นๆ nonce ต้องเป็นจำนวนเต็มบวก (uint64)
  • generation_timestamp คือการประทับเวลาในรูปแบบ Unix และ EPOCH ค่านี้ควรเหมือนกันในทุกกลุ่มของฟีด

แนะนำ: สําหรับไฟล์แต่ละไฟล์ (หรือกลุ่ม) ให้ตั้งชื่อไฟล์เพื่อระบุประเภทฟีด การประทับเวลา หมายเลขกลุ่ม และจํานวนกลุ่มทั้งหมด ข้อมูลควรมีขนาดใกล้เคียงกัน และระบบจะประมวลผลเมื่ออัปโหลดข้อมูลทั้งหมดแล้ว

  • Example: “availability_feed_1574117613_001_of_002.json.gz”

ตัวอย่างฟีดความพร้อมจำหน่ายสินค้าที่แบ่งออกเป็นกลุ่ม

ชาร์ด 0

{
  "metadata": {
    "processing_instruction": "PROCESS_AS_COMPLETE",
    "shard_number": 0,
    "total_shards": 3,
    "nonce": 111111,
    "generation_timestamp": 1524606581
  },
  "service_availability": [
    {
      "availability": [
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1577275200,
          "merchant_id": "merchant1",
          "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS"
        }
      ]
    }
  ]
}

ชาร์ด 1

{
  "metadata": {
    "processing_instruction": "PROCESS_AS_COMPLETE",
    "shard_number": 1,
    "total_shards": 3,
    "nonce": 111111,
    "generation_timestamp": 1524606581
  },
  "service_availability": [
    {
      "availability": [
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1577620800,
          "merchant_id": "merchant2",
          "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS"
        }
      ]
    }
  ]
}

ชาร์ด 2

{
  "metadata": {
    "processing_instruction": "PROCESS_AS_COMPLETE",
    "shard_number": 2,
    "total_shards": 3,
    "nonce": 111111,
    "generation_timestamp": 1524606581
  },
  "service_availability": [
    {
      "availability": [
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1576670400,
          "merchant_id": "merchant3",
          "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS"
        }
      ]
    }
  ]
}

การใช้การแยกส่วนสำหรับพื้นที่โฆษณาที่กระจายของพาร์ทเนอร์

พาร์ทเนอร์อาจพบปัญหาในการรวมพื้นที่โฆษณาที่กระจายอยู่ในหลายระบบและ/หรือภูมิภาคไว้ในฟีดเดียว คุณสามารถใช้การแยกกลุ่มเพื่อแก้ปัญหาการไกล่เกลี่ยโดยการตั้งค่าแต่ละกลุ่มให้ตรงกับชุดพื้นที่โฆษณาของระบบแบบกระจายแต่ละระบบ

ตัวอย่างเช่น สมมติว่าสินค้าคงคลังของผู้ขายแบ่งออกเป็น 2 ภูมิภาค (สินค้าคงคลังในสหรัฐอเมริกาและสหภาพยุโรป) ซึ่งอยู่ใน 2 ระบบแยกกัน

พาร์ทเนอร์สามารถแบ่งฟีดแต่ละรายการออกเป็น 2 ไฟล์ (หรือชาร์ด) ดังนี้

  • ฟีดผู้ขาย: 1 ข้อมูลสำหรับสหรัฐอเมริกา, 1 ข้อมูลสำหรับสหภาพยุโรป
  • ฟีดบริการ: 1 ข้อมูลสำหรับสหรัฐอเมริกา 1 ข้อมูลสำหรับสหภาพยุโรป
  • ฟีดความพร้อมจำหน่ายสินค้า: 1 ข้อมูลสำหรับสหรัฐอเมริกา, 1 ข้อมูลสำหรับสหภาพยุโรป

ทําตามขั้นตอนด้านล่างเพื่อให้ระบบประมวลผลฟีดอย่างถูกต้อง

  1. กำหนดเวลาการอัปโหลดและกำหนดค่าอินสแตนซ์ของพื้นที่โฆษณาแต่ละรายการให้เป็นไปตามกำหนดการ
  2. กําหนดหมายเลขกลุ่มที่ไม่ซ้ำกันสําหรับแต่ละอินสแตนซ์ (เช่น สหรัฐอเมริกา = N, สหภาพยุโรป = N + 1) กําหนด total_shards เป็นจํานวนรวมของกลุ่ม
  3. ในแต่ละเวลาที่กําหนดเวลาการอัปโหลดไว้ ให้ตัดสินใจเลือก generation_timestamp และ nonce ใน FeedMetadata ให้ตั้งค่าอินสแตนซ์ทั้งหมดให้มีค่าเดียวกันสำหรับ 2 ช่องนี้
    • generation_timestamp ควรเป็นปัจจุบันหรือที่ผ่านมาไม่นาน (ควรเป็นการประทับเวลาฐานข้อมูลที่อ่านของพาร์ทเนอร์)
  4. หลังจากอัปโหลดกลุ่มทั้งหมดแล้ว Google จะจัดกลุ่มกลุ่มผ่าน generation_timestamp และ nonce

Google จะประมวลผลฟีดเป็นฟีดเดียว แม้ว่าแต่ละกลุ่มจะแสดงถึงพื้นที่โฆษณาของพาร์ทเนอร์ในภูมิภาคที่แตกต่างกันและอาจอัปโหลดในเวลาที่ต่างกันของวัน ตราบใดที่ generation_timestamp เหมือนกันในทุกกลุ่ม

ตัวอย่างฟีดความพร้อมจำหน่ายสินค้าที่แบ่งออกเป็นกลุ่มตามภูมิภาค

ชาร์ด 0 - พื้นที่โฆษณาในสหรัฐอเมริกา

{
  "metadata": {
    "processing_instruction": "PROCESS_AS_COMPLETE",
    "shard_number": 0,
    "total_shards": 2,
    "nonce": 111111,
    "generation_timestamp": 1524606581
  },
  "service_availability": [
    {
      "availability": [
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1577275200,
          "merchant_id": "US_merchant_1",
          "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS"
        }
      ]
    }
  ]
}

กลุ่ม 1 - พื้นที่โฆษณาในสหภาพยุโรป

{
  "metadata": {
    "processing_instruction": "PROCESS_AS_COMPLETE",
    "shard_number": 1,
    "total_shards": 2,
    "nonce": 111111,
    "generation_timestamp": 1524606581
  },
  "service_availability": [
    {
      "availability": [
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1577620800,
          "merchant_id": "EU_merchant_1",
          "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS"
        }
      ]
    }
  ]
}