1

最近、誤ったエイリアシングによる誤ったイベントを削除するために、すべての Kissmetrics データをエクスポートしてから再インポートする必要がありました。新しい JSON ファイルを生成する Python プログラムを作成しました (元の JSON ファイルからいくつかの行を削除して)。ファイルに残っていた行の内容は変更されていません。

データ統合を設定して新しい JSON ファイルを Kissmetrics システムにアップロードし直したところ、「JSON テキストには少なくとも 2 つのオクテットが含まれている必要があります!」というエラーが表示されました。

{"_n": "visited site", "url": "foo.com", "_t": 1399796233, "referrer": "https://www.google.co.in/", "_p": "ziecbw+mnecncwk9x1edoda9+qc="}
{"_n": "search engine hit", "_t": 1399796234, "search terms": "not provided", "_p": "ziecbw+mnecncwk9x1edoda9+qc=", "search engine": "Google"}
{"_t": 1399795555, "page_viewed_in_category": "bar", "_p": "jen/1vdw9ufyh8kpihtymvrjbj4="}

ファイルの長さは数十万行でした。エラーは JSON を生成する方法にあるに違いないと考えたので、問題のある行を見つけるためにデータをバイナリ検索しようとしました。データを 2 つに分割して半分のファイルをアップロードしてみました。理論は最終的に、エラーを生成する行を見つけるのに役立ちました。奇妙なことに、ファイルを十分な回数分割すると、以前はエラーが発生していたファイルのどちらの半分でもエラーが発生しなくなります。

例:

ファイル 1 - 1000 行の JSON があり、KM にアップロードするとエラーが発生する

次に、ファイル 1 を、それぞれ 500 行を含む 2 つのファイル (ファイル 2A と 2B) に分割します。

ファイル 2A - 500 行でエラーなし ファイル 2B - 500 行でエラーが発生

これは、データに不正な JSON の行があるという理論と一致しているようです。しかし、ファイル 2B をファイル 3A とファイル 3B の 2 つのファイルに分割すると、奇妙なことが起こります。

ファイル 3A - 250 行でエラーなし ファイル 3B - 250 行でエラーなし

そのため、エラーは JSON 自体の実際の内容ではなく、パーサーがファイルを読み取る方法にあるようです (Kissmetrics サポートによって確認されています)。

Kissmetrics は、通常の .write メソッド内でファイルを書き込むために JSON.dumps を使用することを提案しました。彼らの理論は、私が生成した JSON ファイルには、ファイルの生成方法に何らかのアーティファクトが含まれていたからです。JSON.dumps を使用して JSON ファイルを出力するように切り替えましたが、同じエラーが発生しました。

私が書いているファイルは間違いなくすべて有効な JSON です。それをスキャンして Python に戻し、問題なく実行できます。

ファイルを修正する方法についてのアイデアはありますか?

4

0 に答える 0