1万行をインポートする前にCSVカタログを検証する
商品カタログのCSVを10行で検証。SKUの重複、バリアントの入力漏れ、価格形式の誤り、文字化けをインポート前に見つけるための、結果を確認できる実例です。
TL;DR: CSVカタログを検証するには、まずターゲットシステムがどのように解釈するかを確認し、その後、列、識別子、バリアント、値をレビューします。既知のエラーを含むサンプルを試行し、アップロードする前にファイル全体を検証します。10行が通過したからといって、残りの行が正しいことや、更新によってすべてのデータが保持されることを証明するものではありません。
目次
CSVカタログの検証は、インポート時に何が変わるかを知ることから始まります。 その後、列、識別子、値の確認に移ります。警告なしに開くシートでも、同じSKUを持つ2つの商品が含まれていたり、値のないサイズが含まれていたりする可能性があります。また、受け入れられたファイルが誤った商品を更新してしまうこともありえます。
以下のテストは、これらの不具合を区別する方法を学ぶのに役立ちます。これは、検証可能な結果を持つ架空の10行です。これは実際の店舗のサンプルでも、ShopifyやFrihet用に用意されたファイルでもありません。これは学習用の独自スキーマであり、ターゲットシステムのものに置き換える必要があります。
サプライヤーのファイルではなく、ターゲットシステムから始める
データのインポート先となるツールから、現行のテンプレートをダウンロードするか、代表的な商品をエクスポートしてください。作成、更新、または両方の操作を組み合わせるかどうか、レコードを識別するもの、必須フィールド、そしてセルを空のままにする意味をメモしてください。その定義を作業ファイルと一緒に保管してください。
例えばShopifyでは、上書きはhandleと呼ばれるURL識別子に基づいています。そのドキュメントでは、バリアントフィールドとオプション間の依存関係をレビューすることも要求されています。私たちのSKUルールは、そのインポーターが商品をどのように識別するかを説明していません。Shopifyの製品フォーマット。
システム間でデータを移動する場合、このレビューを店舗と業務管理システムの連携(英語)とは別に実施してください。利用可能なコネクターがあるからといって、サプライヤーの列を受け入れるとは限りません。
確認可能なルールを定義する
この演習では、各行は販売できる商品・バリエーションを表します。product_keyはそのバリアントをグループ化します。skuは存在し、ユニークである必要があります。nameは必須です。バリアントにはoption_nameとoption_valueが必要です。両方が空の場合、オプションを宣言していないことを意味します。これらがすべて揃っている場合、product_keyとの組み合わせは重複してはいけません。
このファイルはUTF-8を使用し、フィールド間はコンマで区切られ、示された順序で8つの列があります。priceは、負でない数値を小数点と2桁の小数で受け入れ、千の区切り文字は使用しません。currencyでは、このテストのためにEURを要求します。これらはこのテストのために選択された条件であり、普遍的なルールや商用価格ではありません。通貨換算も税額計算もありません。
SKUはテキストとして保持されます。001は1に変換されません。Microsoftは、Excelに識別子をロードする際に自動変換を避ける方法を説明しています。データを変換する前に列のタイプを定義してください。後で表示形式を変更しても、元の状態は復元されません。Excelで先頭のゼロを保持する。
正しいと思われる行を含む10行
ブロックをテキストとしてコピーして調べてください。最後の行は意図的に列が1つ少なくなっています。row_idはテストの識別子です。R01はファイルの2行目にあります。最初の行にはヘッダーが含まれているからです。
スペイン語の商品名は、どの言語版でも結果を再現できるように固定したサンプル値です。
row_id,product_key,sku,name,option_name,option_value,price,currencyR01,P01,001,Taza,Color,Natural,19.90,EURR02,P01,002,Taza,Color,Ink,19.90,EURR03,P02,001,Bolsa,,,29.00,EURR04,P03,,Cuaderno,,,8.50,EURR05,P04,005,Café,,,6.00,EURR06,P05,006,Vaso,,,"12,50",EURR07,P06,007,Camiseta,Size,,24.00,EURR08,P01,008,Taza,Color,Natural,19.90,EURR09,P07,009,,,,15.00,EURR10,P08,010,Bandeja,,,25.00| 行 | 期待される結果 | 調査事項 |
|---|---|---|
| R01 | ブロック: SKUとバリアントが重複しています | R03およびR08と比較。この行も承認されません。 |
| R02 | 演習ルールをクリア | コントロールとして保持。ターゲットシステムとの互換性を示すものではありません。 |
| R03 | ブロック: SKUが重複しています | 001はR01のマグカップも識別します。 |
| R04 | ブロック: SKUがありません | 商品コードを確認する。名前から勝手に作らない。 |
| R05 | テキストを確認 | Caféをサプライヤーのオリジナルと比較する。 |
| R06 | ブロック: 価格フォーマット | 小数点のコンマは選択されたルールと矛盾します。 |
| R07 | ブロック: 不完全なバリアント | 値のないSizeがあります。 |
| R08 | ブロック: バリアントが重複しています | P01 + Color + Naturalは、SKUが変更されてもR01に既に存在します。 |
| R09 | ブロック: 名前がありません | 続行する前に製品を特定する。 |
| R10 | ブロック: 構造が不完全です | 7つのフィールドがあります。通貨の列も期待されました。 |
結果は、8つの行がブロックされ、1つがレビュー待ち、1つが通過です。これらは行の状態であり、8つの独立したエラーではありません。R01には2つの競合があります。各行間のキーとフィールドを前のルールと比較することで、各結果を確認できます。
重複は最初の行を選ぶだけでは解決しない
R01は単独で読むと完全に見えます。競合は全体のセットを調べて初めて現れます。R01はバッグとSKUを共有し、別のマグカップとバリアントの組み合わせを共有しています。そのため、チェックではグループのすべてのメンバーをマークする必要があり、最初を承認して最後を拒否するべきではありません。
カタログの担当者に、誤った商品コード、重複した製品、または不適切に記述されたバリアントがあるかどうかを確認するよう依頼してください。以前の値、新しい値、およびその理由とともに決定を保存します。R08は名前が一致するからといって削除しないでください。実際のカタログでは、この簡略化されたシートに含まれていない素材、サイズ、その他のオプションを区別する場合があります。
実際のバッチでは、ターゲットシステムに既に存在する商品コードとも比較してください。CSV内のユニークなSKUでも、ファイル外の別の製品と一致する可能性があります。さらに、正規化する前にスペースと大文字小文字の違いをどのように扱うかを定義してください。識別子をクリーンアップすると、別々に管理すべき商品コードが同一視される可能性があります。
フォーマット、テキスト、意味を分離する
R06には"12,50"が含まれています。引用符は価格を1つのセルに保持します。手動でコンマを数えると誤った診断につながるため、CSVリーダーを使用してください。RFC 4180はこの引用符の規則を説明していますが、カタログに必要な列や価格の解釈方法を定義していません。R06の構文は有効ですが、私たちのフィールドルールに違反しています。
コンマをピリオドに一括置換しないでください。そうすると、区切り文字とコンテンツの両方が変更されます。まずフィールドを特定し、元の形式を確認し、その値を制御された方法で変換してください。空もゼロと同等ではありません。ゼロ価格を登録することは、誰も確認していないビジネス上の決定になります。
R05は別の確認を必要とします。テキストCaféは有効なUTF-8バイトで保存されていますが、それが名前が正しいことを証明するものではありません。この演習の警告はその特定の値に対して用意されており、普遍的なエンコーディング検出器ではありません。名前をソースと照合し、どのステップで文字が破損したかをレビューしてください。既に破損したテキストをUTF-8として再保存しても、自動的にその文字が復元されるわけではありません。
更新する前に、何が保持されるかを確認する
列の欠落と空のセルは異なる変更を引き起こす可能性があります。Shopifyは、上書きする際に、オプションフィールドが空で含まれている場合、既存の値を空にすることがあり、その列を省略すると既存の値を保持できると記載しています。また、開始されたインポートはキャンセルできず、事前のコピーを推奨しています。Shopifyのインポート条件。
バリアントの識別も変更される可能性があります。Shopifyは、オプション値を変更すると以前の識別子が削除され、新しい識別子が作成されると警告しています。CSVを使用してオプションを修正する前に、それらに依存する接続をレビューしてください。バリアントのオプションと識別子。
以前の状態、予期される変更、観察された結果を比較する準備をしてください。同じままでなければならないフィールドを含めます。利用可能なテスト環境で試行し、製品の関連する行を一緒に保管してください。連続する10行が常に10個の完全な製品を表すわけではありません。
実際の運用では、単純な製品、複数のオプション、アクセント付き文字、空の価格、既存の商品コードを使った更新など、異なるケースを選択するでしょう。そのサンプルでフローをテストします。その後、ファイル全体にルールを適用します。重複は数千行離れている場合があります。連携機能を参照して、フロー内のツールを特定し、各ツールが受け付けるデータの仕様を確認してください。
他の人がレビューできる決定を残す
アップロードする前に、ファイルのバージョン、ターゲット、担当者、適用されたルール、解決されたインシデント、および試行の比較を記録してください。確認が不足している場合は、バッチを保留のままにしてください。「インポート済み」というメッセージはそのレビューに代わるものではありません。
Frihetは、その管理機能内で製品のCSVインポートをサポートしています。この記事のスキーマと手動で行う確認作業は、Frihetとは独立しています。これらは、Frihetが受け付けるフィールドや自動検証の内容を証明するものではありません。インポーターのテンプレートを使用し、まだ説明できない行の解決から始めてください。
この記事は役に立ちましたか?
よくある質問
この確認作業でインポーターのルールを置き換えられますか?
いいえ、このスキーマと手動の確認作業は独立した演習です。インポート先の最新テンプレートを使い、新規作成、更新、空欄の扱いに関するルールを確認してください。
10行を検証すれば、カタログ全体が正しいと保証できますか?
保証はできません。サンプルで手順を試した後にファイル全体へルールを適用し、サンプル外にも重複があり得るため、インポート先に既にある商品コードとも比較してください。