FROM CACHE - jp_header
このコミュニティはピアツーピアサポートに移行しました。Shopify サポートは今後、このコミュニティへのサービスを提供いたしません。これからもぜひ、他のマーチャントやパートナーとつながり、サポートし合い、経験を共有してください。 当社の行動規範に違反する行動や削除を希望するコンテンツがありましたら、引き続きご報告ください

GraphQL APIで月次売り上げを集計したい

解決済

GraphQL APIで月次売り上げを集計したい

JunkiOka
Shopify Partner
2 0 0

ShopifyのGraphQL APIでバリアントごとの月次売り上げを集計する場合、どのようにするのが最適でしょうか。

 

NET売り上げを集計する場合、ordersを取得して、バリアントのSKUとrefundsが集計できれば良さそうだと思っているのですが、この集計方法だとordersの件数が増えたときにコストが足りなくなってしまいそうだと考えています。

 

query ($cursor: String) {
    orders(first: 250, after: $cursor, query: "updated_at:>2024-11-01 updated_at:<2024-1-01") {
        pageInfo {
            hasNextPage
            endCursor
        }
        nodes {
            id
            updatedAt
            lineItems(first: 250) {
                nodes {
                    variant { 
                        sku
                        price
                    }
                    name
                    quantity
                }
            }
            refunds {
                refundLineItems(first: 250) {
                    nodes {
                        lineItem {
                            variant { 
                                sku
                            }
                        }
                        quantity
                    }
                }
            }
        }
    }
}

Graph QLでは一括クエリが存在しているとのことで、以下のように一括クエリにすれば良いかと考えたのですが

 

mutation {
  bulkOperationRunQuery(
    query: """
    {
      orders(query: "updated_at:>2024-11-01 updated_at:<2024-1-01") {
        edges {
          node {
            id
            updatedAt
            lineItems(first: 250) {
              edges {
                node {
                  variant { 
                    sku
                    price
                  }
                  name
                  quantity
                }
              }
            }
            refunds {
              refundLineItems(first: 250) {
                edges {
                  node {
                    lineItem {
                      variant { 
                        sku
                      }
                    }
                    quantity
                  }
                }
              }
            }
          }
        }
      }
    }
    """
  ) {
    bulkOperation {
      id
      status
    }
    userErrors {
      field
      message
    }
  }
}

この場合、refundsのなかでさらにrefundsLineItemsを取ることができなくなってしまうようで、集計できなくなってしまいました。

 

"message": "リストフィールド内の接続フィールドを含むクエリは、現在サポートされていません。"

 

何か良い解決方法があればご教授いただければと思います。

 

 

1 件の受理された解決策

ogasawarakyohei
Shopify Partner
117 45 45

成功

バリアントごとの月次売り上げを集計するという要件であれば、bulkOperationRunQueryを使う選択がよいと思います。

また、エラーはOrders.refundsの仕様上避けられませんので、Ordersのクエリ内でrefundsLineItemsを取得できないと思います。

 

解決方法ですが、上記の要件においてそもそもrefundsは必要でしょうか?

Orders.lineItems のcurrentQuantity は返品を考慮した数になっていたと思います。

小笠原 京平 | 株式会社Tsun | RuffRuff アプリ
・私の回答が役に立ったら、いいね! ボタンをクリックして教えてください!
Shopify 開発で役に立つ情報を発信していますので、テックブログおすすめ Shopifyアプリ もぜひご参照ください。

元の投稿で解決策を見る

2件の返信2

ogasawarakyohei
Shopify Partner
117 45 45

成功

バリアントごとの月次売り上げを集計するという要件であれば、bulkOperationRunQueryを使う選択がよいと思います。

また、エラーはOrders.refundsの仕様上避けられませんので、Ordersのクエリ内でrefundsLineItemsを取得できないと思います。

 

解決方法ですが、上記の要件においてそもそもrefundsは必要でしょうか?

Orders.lineItems のcurrentQuantity は返品を考慮した数になっていたと思います。

小笠原 京平 | 株式会社Tsun | RuffRuff アプリ
・私の回答が役に立ったら、いいね! ボタンをクリックして教えてください!
Shopify 開発で役に立つ情報を発信していますので、テックブログおすすめ Shopifyアプリ もぜひご参照ください。
JunkiOka
Shopify Partner
2 0 0

なるほど、LineItemsの方に要件を満たすフィールドが入っているのですね。

今回の要件だとこれで問題なさそうです。ありがとうございます!