# 商品ごとの注文数を取得したい

**URL:** <https://community.shopify.com/t/topic/27687>\
**Category:** Shopify アプリ\
**Created:** [December 9, 2020, 8:14am UTC](https://community.shopify.com/t/topic/27687 "2020-12-09T08:14:40Z")\
**Posts on this page:** 3\
**Page:** 1

## AI-generated summary

Shopify Admin GraphQL APIで、商品ごとの「当日の注文数」を取得したいという相談。`orders(first: 70, query: "created_at:>TODAY status:any")` では当日の全注文を取り切れず、`first` を大きくするとクエリコスト制限でエラーになる点が課題になっていた。

提案された対応は次の2点。
- ページネーション: `hasNextPage` とカーソルを使い、複数ページに分けて全件取得する方法。
- Bulk API: 大量データ向けの仕組みで、一括処理後に結果をダウンロードするURLからデータを取得する方法。

投稿者は、現在の取得結果が一部であることを理解し、ページネーションで順次取得できそうだと認識した。Bulk APIについても、レスポンス本体ではなくダウンロードURL経由で必要データを得る方式として理解している。

結論として、解決策の方向性は示されており、ページネーションとBulk APIの両方を試す段階。最終的にどちらを採用したかまではまだ共有されておらず、議論は実装確認待ちの状態。

<div class="post-metadata">

**Author:** ![nowheresville](https://avatars.discourse-cdn.com/v4/letter/n/9fc29f/32.png) [@nowheresville](https://community.shopify.com/u/nowheresville)\
**Post date:** [December 9, 2020, 8:14am UTC](https://community.shopify.com/t/topic/27687/1 "2020-12-09T08:14:40Z")

</div>

Public App内で、商品ごとの当日の注文数を取得したいと思い、GraphQL Admin APIを利用して開発を進めております。

下記のような内容のQueryでは、ある程度は取得できますが、当日の全ての注文を取得できているとは言えない（最初の70件の注文だけになってしまう）なと・・

```python
{
  orders(first: 70, query: "created_at:>TODAY status:any") {
    edges {
      node {
        id
        createdAt
        lineItems(first: 5) {
          edges {
            node {
              id
              name
              title
              variantTitle
              variant {
                id
              }
            }
          }
        }
      }
    }
  }
}

```

そこで、

```python
first: 70

```

の「70」を「1000」とかに増やしてみても、クエリコスト？の制限でエラーが発生してしまいます・・

何か良い方法があればご教示いただければ幸いです。

---

<div class="post-metadata">

**Author:** ![junichiokamura](https://yyz1.discourse-cdn.com/shopifyforum/user_avatar/community.shopify.com/junichiokamura/32/299737_2.png) [@junichiokamura](https://community.shopify.com/u/junichiokamura)\
**Post date:** [December 9, 2020, 10:36am UTC](https://community.shopify.com/t/topic/27687/2 "2020-12-09T10:36:03Z")

</div>

下記のページネーションを使うのはいかがでしょうか？

[https://shopify.dev/concepts/graphql/pagination](https://shopify.dev/concepts/graphql/pagination)

また、大量データ用のBulk API もあります。

[https://shopify.dev/docs/admin-api/graphql/reference/bulk-operations](https://shopify.dev/docs/admin-api/graphql/reference/bulk-operations)

---

<div class="post-metadata">

**Author:** ![nowheresville](https://avatars.discourse-cdn.com/v4/letter/n/9fc29f/32.png) [@nowheresville](https://community.shopify.com/u/nowheresville)\
**Post date:** [December 10, 2020, 1:12am UTC](https://community.shopify.com/t/topic/27687/3 "2020-12-10T01:12:53Z")

</div>

@junichiokamura

ご回答ありがとうございます！

> 下記のページネーションを使うのはいかがでしょうか？\> \> [https://shopify.dev/concepts/graphql/pagination](https://shopify.dev/concepts/graphql/pagination)

なるほど、こういったアプローチがあるんですね！

取得できたデータが全てではなく一部であった場合は、次ページが存在するので（hasNextPage が true）、

カーソルを変更して次ページ分のデータを取得し続けていければ、全てのデータを取得できそうですね。

> また、大量データ用のBulk API もあります。\> \> [https://shopify.dev/docs/admin-api/graphql/reference/bulk-operations](https://shopify.dev/docs/admin-api/graphql/reference/bulk-operations)

このアプローチでも取得できそうですね！

欲しいデータは、レスポンスには含まれていなくて、欲しいデータがダウンロードできるURLが含まれているんですかね。

そして、そのダウンロード用URLにアクセスし、欲しいデータを手に入れられる、というイメージですね。

どちらも試してみたいと思います、非常に助かりました！
