> ## Documentation Index
> Fetch the complete documentation index at: https://moengage.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ファイルインポートを設定する

> Amazon S3 または SFTP サーバー上のファイルから、ユーザー、イベント、補助データを MoEngage に自動でインポートします。ファイルを準備し、列をマッピングし、同期をスケジュールします。

MoEngage は、Amazon S3 バケットまたは SFTP サーバーに配置したファイルから、ユーザー、イベント、補助データのインポートを自動化します。ファイルを準備し、接続と列マッピングを一度設定するだけで、MoEngage が 1 回限りまたは定期的なスケジュールで新しいファイルを取得します。

以下のタブ付きセクションのいずれかでソースを選択すると、ページ全体でそのソースが選択された状態が維持されます。

# インポートの種類

MoEngage は、ファイルから以下をインポートできます。

* **登録済みユーザー**：MoEngage にすでに登録されているユーザー。
* **匿名ユーザー**：MoEngage にまだ登録されていないユーザー。
* **イベント**（標準およびユーザー定義）：Campaign Interaction Events などの標準イベントと、独自のユーザー定義イベント。
* **補助データ**：一時的に取り込まれる補足的なユーザーデータ。補助データには独自の設定があります。[補助データ](/docs/ja/user-guide/data/imports/auxiliary-data)を参照してください。

# ファイルを準備する

## サポートされるファイル形式

MoEngage は、UTF-8 エンコーディングの **CSV** および **NDJSON** ファイルをサポートしています。

| ファイル形式 | ユーザー | イベント | 補助データ |
| - | :-: | :-: | :-: |
| CSV | ✅ | ✅ | ✅ |
| JSON (NDJSON) | ✅ | ✅ | ❌ |

## 命名規則

MoEngage がインポートの種類と実行日を識別できるように、ファイルに名前を付けます。

<Info>
  すべてのファイルに一意の名前を付けてください。MoEngage は、以前のインポートが成功、部分的に成功、または失敗したかにかかわらず、すでに処理したファイル名をスキップします。
</Info>

ファイル名は `<import type>_<date time format>.<file extension>` の 2 つの部分で構成されます。

* **登録済みユーザー**：プレフィックス `registered_user_data_`。例：`registered_user_data_01311997.csv`。
* **匿名ユーザー**：プレフィックス `anonymous_user_data_`。例：`anonymous_user_data_jan_2022.csv`。
* **イベント**：プレフィックス `<event name>_`。例：イベント "Purchase Summary" の場合、`Purchase_Summary_31011997.csv`。

MoEngage は、`<custom name>_<date time format>.<file extension>` に従うカスタムファイル名もサポートしています。カスタム名には、英字、数字、スペース、アンダースコアを使用できます。

`<date time format>` サフィックスは、インポートが実行される日を表します。たとえば、インポートが 2022 年 1 月 7 日に実行され、選択された形式が `ddmmyyyy` の場合、MoEngage は `07012022.csv` または `07012022.json` で終わるファイルを探します。形式は設定時にダッシュボードで構成します。サポートされる形式は以下のとおりです。

| 形式 | 説明 | 例 |
| - | - | - |
| `{mm}_{yyyy}` | `mm`：月 01～12、`yyyy`：4 桁の年 | `01_2022` |
| `{ddmmyyyy}` | `dd`：日 01～31、`mm`：月 01～12、`yyyy`：4 桁の年 | `31012022` |
| `{yyyymmdd}` | `yyyy`：4 桁の年、`mm`：月 01～12、`dd`：日 01～31 | `20220112` |
| `{mon_yyyy}` | `mon`：小文字 3 文字の月（`jan`～`dec`）、`yyyy`：4 桁の年 | `jan_2022` |
| `{yyyymmdd}_{hhmm}` | 日付は上記と同じ、`hh`：時 00～23、`mm`：分 00～59 | `20220131_1259` |

<Info>
  イベント、イベント属性、ユーザー属性のプレフィックスとして `moe_` を使用しないでください。これは予約済みのシステムプレフィックスです。
</Info>

**ファイル拡張子：**

* 暗号化なし：`.csv`、`.json`
* PGP 暗号化あり：`.csv.asc`、`.json.asc`、`.csv.pgp`、`.json.pgp`

## ファイル構造

インポートするファイル形式に応じてファイルを構成します。

<Tabs>
  <Tab title="CSV ファイル">
    * 最初の行は列名である必要があります（ヘッダー行として扱われます）。
    * 列名の重複（名前は大文字と小文字を区別します）や列名の欠落があってはなりません。
    * 区切り文字としてサポートされるのはカンマ（`,`）のみです。
    * 空の行は避けてください。
    * 属性タイプ *list* およびその他の複合型（JSON、辞書など）。
    * CSV ファイルの複数行サポートは、デフォルトで無効になっています。この機能が必要な場合は、サポートにお問い合わせください。`Ctrl+M` や `\r` など、`\n` 以外の改行形式はサポートされていません。複数行サポートを有効にすると、インポートの処理速度に悪影響を与える可能性があります。

    サンプルファイル：[登録済みユーザー](https://uploads-samples-cdn.moengage.com/registered_user_data.csv)、[匿名ユーザー](https://uploads-samples-cdn.moengage.com/anonymous_user_data.csv)、[イベント](https://uploads-samples-cdn.moengage.com/sample_event.csv)、[マッピングファイル](https://uploads-samples-cdn.moengage.com/upload_mapping.json)。
  </Tab>

  <Tab title="JSON ファイル">
    JSON ファイルは、`.json` 拡張子を持つ改行区切り JSON（NDJSON）である必要があります。各行は、改行で区切られた完全で自己完結型の JSON オブジェクトです。

    ```json wrap theme={null}
    {"user_id": "user123", "name": "John Doe", "email": "john.doe@example.com", "address": {"city": "New York", "zip": "10001"}}
    {"user_id": "user124", "name": "Jane Smith", "email": "jane.smith@example.com", "preferences": ["email_updates", "sms_alerts"]}
    ```

    サンプルファイル：[登録済みユーザー](https://app-cdn.moengage.com/partners-integration-ui/app-marketplace-public/helpdoc/registered_user_data.json)、[匿名ユーザー](https://app-cdn.moengage.com/partners-integration-ui/app-marketplace-public/helpdoc/anonymous_user_data.json)、[イベント](https://app-cdn.moengage.com/partners-integration-ui/app-marketplace-public/helpdoc/sample_event.json)、[マッピングファイル](https://app-cdn.moengage.com/partners-integration-ui/app-marketplace-public/helpdoc/upload_mapping.json)。

    #### ファイル構造と JSON レベルのマッピング

    JSON ファイルをアップロードまたは選択すると、MoEngage はデータのフラット化された表形式のプレビューを生成します。このプレビューでは、2 レベルの深さ（ルートレベル + 1 つのネストレベル）までのキーが個別の列として表示されます。

    ```json theme={null}
    {
      "item-id": 123,
      "item-type": "books",
      "item-cost": {
        "amount": {
          "cost-price": 100,
          "discount": 0
        },
        "currency": "USD"
      }
    }
    ```

    | キー | レベル | マッピング可能か |
    | - | - | - |
    | `item-id`, `item-type` | 1 | 属性に直接マッピング可能。 |
    | `item-cost` | 1（オブジェクト） | オブジェクト全体としてマッピング可能。 |
    | `item-cost.amount` | 2（オブジェクト） | オブジェクト全体としてマッピング可能。 |
    | `item-cost.currency` | 2 | 属性に直接マッピング可能。 |
    | `cost-price`, `discount` | 3 | 不可。2 レベルより深いため。 |

    #### マッピング機能

    * **プリミティブキーのマッピング**：レベル 1 またはレベル 2 の任意のプリミティブキーを、標準の MoEngage 属性に直接マッピングできます。
    * **オブジェクト全体またはオブジェクトの配列のマッピング**：完全な JSON オブジェクトまたはオブジェクトの配列を、それぞれ "Object" または "Array of Objects" タイプの単一の MoEngage 属性にマッピングできます。オブジェクト全体をマッピングすると、その内部構造とすべてのネストされたキーが保持されてインポートされます。MoEngage 内でこれらのキーの名前を変更することはできません。
    * **フィールドの個別選択**：親オブジェクト全体ではなく、オブジェクトの特定のプリミティブフィールド（レベル 2 まで）のみをマッピングするには、マッピングテーブルで親オブジェクト属性をスキップしてから、ネストされた個々のプリミティブキーをマッピングします。
    * **マッピングファイル**：マッピングファイルを使用して、JSON キーのマッピングを自動化できます。マッピングファイルは、フラット化された JSON パスを参照します（例：`"column": "user_profile.id"`）。

    #### マッピングの制限

    **オブジェクトの配列内のレベル 2 キー**：オブジェクトの配列内にネストされた個々のレベル 2 キーを直接マッピングすることはできません。オブジェクトの配列全体を "Array of Objects" 属性にマッピングすることは可能で、その場合はネストされた構造全体がインポートされます。

    #### データ取り込み時の動作

    * **null または空の文字列**：マッピングされたキーの値が null または空の文字列の場合、MoEngage はそれをスキップし、対応するデータを更新しません。
    * **マッピングされていない/スキップされたキー**：JSON ファイル内の追加のキーのうち、マッピングもスキップ指定もされていないものは無視され、取り込まれません。
  </Tab>
</Tabs>

<Info>
  MoEngage は、配列以外の列での `|`（パイプ）文字をサポートしていません。String、Numeric、Boolean の列にこの文字が含まれていないことを確認してください。
</Info>

## フォルダ構造

すべてのファイルを 1 つのフォルダに配置し、設定時にフォルダパスを構成します。MoEngage はサブフォルダやルートフォルダ内を参照しません。

## 配列のサポート（CSV）

* 単純な配列がサポートされています。ネストされた配列や連想配列はサポートされていません。
* CSV でサポートされている区切り文字はパイプ（`|`）です。例: `[1|2|3]`。
* サポートされているデータ型は Array String と Array Double（数値）です。列のマッピング時に **Map column to attribute** リストで型を選択してください。
* 配列内のすべての要素は同種である必要があり、すべて integer/double か、すべて string のいずれかでなければなりません。そうでない場合、MoEngage は各要素を宣言された型に型変換しようと試み、その結果を保存します。
* **配列の型変換**: 配列 `["1" | 2 | "abc"]` を Array Double としてマッピングした場合、`"abc"` は数値に変換できないため破棄され、MoEngage は `[1, 2]` を取り込みます。

**例**

String 列、Array String 列、Array Double 列を含む CSV 行:

```csv theme={null}
user_id,tags,scores
u123,["premium"|"beta_user"|"newsletter"],[4.5|3.8|5.0]
```

* `tags` は **Array String** としてマッピングされ、MoEngage は `["premium", "beta_user", "newsletter"]` を取り込みます。
* `scores` は **Array Double** としてマッピングされ、MoEngage は `[4.5, 3.8, 5.0]` を取り込みます。

各要素はパイプ区切り文字の間に置かれ、値全体は角括弧で囲まれます（`[element1|element2|element3]`）。パイプの前後にスペースは入れません。

# 制限

ファイルインポートには以下の制限があります。

<Warning>
  **インポートされたデータはアーカイブの対象です**

  MoEngage は、非アクティブなユーザー、イベント、デバイスを 14 日ごとにアーカイブし、アーカイブされたデータを完全に削除します。登録ユーザーはアクティビティやキャンペーンエンゲージメントがないまま 365 日経過するとアーカイブされ、匿名ユーザーは 60 日後にアーカイブされます。

  ユーザー属性のインポートや更新はアクティビティとして扱われないため、アーカイブは延期されません。アーカイブを延期できるのはイベントとキャンペーンエンゲージメントのみです。

  インポートする前に、[Data Archival (Retention) Policy](/docs/ja/user-guide/data/key-concepts/data-archival-retention-policy) の条件を確認し、どのレコードが該当するかを確認してください。
</Warning>

| 制限 | 値 |
| - | - |
| ファイルサイズ | CSV/JSON ファイルあたり 500 MB 未満。これより大きいファイルは分割してください。 |
| 行数 | 1 つの CSV または JSON ファイルは、1 時間あたりの行数制限までサポートします。1 時間あたりの行数制限を超えるファイルは拒否されます。 |
| 列/属性 | ユーザーは 100 列、イベントはイベントあたり 100 列。 |
| ファイル名のプレフィックス | 最大 100 文字。 |
| ファイル数 | インポート実行あたり最大 250 ファイル。 |

**レート制限**（デフォルト値。引き上げについては MoEngage にお問い合わせください）：

| インポートの種類 | 1 時間あたり | 1 日あたり |
| - | - | - |
| ユーザー | 600K/時 | 14M/日 |
| イベント | 5M/時 | 40M/日 |

1 時間あたりのレートは 1 時間に取り込まれる最大数、1 日あたりのレートは 1 日の合計上限です。レート制限を超えると、Data Imports ダッシュボードに *Rate limit breached* アラートが表示されます。

<Tip>
  非常に多数のファイルを同時にスケジュールすることは避けてください。個々のファイルが小さくても、処理のバックログが発生し、取り込みが遅れる可能性があります。多数のファイルをまとめてキューに入れるのではなく、スケジュールされたインポートを時間をずらすか、バッチに分けて実行してください。
</Tip>

# 必要なアクセス権と接続

インポートを作成する前に、MoEngage にソースへのアクセス権を付与します。

<Tabs>
  <Tab title="Amazon S3">
    MoEngage に S3 バケットへの読み取りアクセス権を付与し、App Marketplace で接続を設定します。IAM 権限と接続の設定については、[認証を設定する](/docs/ja/partner-guide/data-and-analytics/cloud-storage/amazon-s3#step-1-set-up-authentication)、[権限を付与する](/docs/ja/partner-guide/data-and-analytics/cloud-storage/amazon-s3#step-2-grant-permissions)、および [App Marketplace で Amazon S3 を接続する](/docs/ja/partner-guide/data-and-analytics/cloud-storage/amazon-s3#step-3-connect-amazon-s3-on-the-app-marketplace)を参照してください。
  </Tab>

  <Tab title="SFTP">
    App Marketplace で、適切な権限を持つ [SFTP 接続](https://partners.moengage.com/hc/en-us/articles/26763225201172-SFTP#01H7YCB0T78V73YJSY4Y8A8X0S)を設定します。詳細については、[新しい SFTP 接続を構成する](https://partners.moengage.com/hc/en-us/articles/26763225201172-SFTP#h_01JFHD1Q8VFS8SCBZZWCERE7Z2)を参照してください。
  </Tab>
</Tabs>

# インポートを設定する

インポートは 3 つのステップで設定します。接続とファイル形式を構成し、列を MoEngage 属性にマッピングし、インポート頻度を選択します。

<Info>
  左側のナビゲーションに **Data** メニューが表示されない場合は、MoEngage カスタマーサクセスチームに連絡して有効にしてください。
</Info>

MoEngage のサイドバーで **Data** > **Data imports** に移動し、**+ Import** をクリックして、**Users** または **Events** を選択します。次に、ソースのタイルを選択して **Continue** をクリックします。

## ステップ 1：接続とファイル形式を構成する

**Registered users** と **Anonymous users** のどちらをインポートするかを選択するか（ユーザーインポートの場合）、インポートするイベントを選択します（イベントインポートの場合）。登録済みユーザーと匿名ユーザーのインポートでは、想定されるファイル名が異なります。[命名規則](#naming-conventions)を参照してください。

イベントの場合、ファイル名は選択したイベントのイベント名で始まる必要があります。たとえば、イベント "App/Site Opened" のイベント名は `MOE_APP_OPENED` であるため、ファイル名は `MOE_APP_OPENED_` で始まります。新しいイベントを作成するには、**+ Create event** をクリックして一意の名前を入力します。新しいイベントは、最初のインポートが成功した後にのみアプリに表示されます。

次に、接続とフォルダを構成します。

<Tabs>
  <Tab title="Amazon S3">
    1. **S3 connection** リストで接続を選択します（または **+ Add connection** をクリックします）。
    2. **File type** リストで **CSV** または **JSON** を選択します。
    3. **Folder path** ボックスにディレクトリパスを入力します。MoEngage はマーケットプレイスの接続からバケット名を解決するため、バケット名や末尾のスラッシュは含めないでください。
    4. PGP で暗号化されたファイルをインポートするには、**Is your file encrypted?** を選択し、秘密の **Decryption Key**、任意の公開 **Signing Key**、および **Key passphrase** を入力します。

    <img src="https://mintcdn.com/moengage/Bujj_VI542sXgyk1/images/s3-imports-select-connection.png?fit=max&auto=format&n=Bujj_VI542sXgyk1&q=85&s=ed32ec949151d933380bd2080d5beaf5" alt="S3 接続、ファイル形式、フォルダパス、暗号化のオプション" width="410" height="380" data-path="images/s3-imports-select-connection.png" />
  </Tab>

  <Tab title="SFTP">
    1. **SFTP connection** リストで接続を選択します（または **+ Add connection** をクリックします）。
    2. **Folder URL** ボックスに、`sftp://[host-name]/` で始まる完全なパスを末尾のスラッシュなしで入力します（例：`sftp://files.hostname.com/my_folder`）。MoEngage はルートフォルダやサブフォルダをサポートしていないため、すべてのファイルを 1 つのフォルダに保存してください。
    3. PGP で暗号化されたファイルをインポートするには、**Is your file encrypted?** を選択し、秘密の **Decryption Key**、任意の公開 **Signing Key**、および **Key passphrase** を入力します。

    <img src="https://mintcdn.com/moengage/jnaevUpPOwD04mEl/images/moengage_84ac18.png?fit=max&auto=format&n=jnaevUpPOwD04mEl&q=85&s=400cc82bcceb96527938a055374b5a44" alt="SFTP 接続、フォルダ URL、暗号化のフィールド" width="864" height="1068" data-path="images/moengage_84ac18.png" />
  </Tab>
</Tabs>

ダッシュボードでこのインポートを識別するための一意の **Import name** を入力します。

<Accordion title="PGP 暗号化を設定する">
  PGP（Pretty Good Privacy）を使用すると、機密ファイルをインポートする前に暗号化できます。MoEngage は S3 および SFTP のファイルインポートで PGP 暗号化をサポートしています。

  **前提条件:**

  * **PGP キーペア**: 公開鍵（ファイルの暗号化用）と秘密鍵（復号用）。秘密鍵は決して共有しないでください。
  * **署名用キーペア**: 公開鍵（ファイルの署名用。MoEngage SFTP 統合で必須）と秘密鍵（署名の検証に内部で使用）。

  以下の手順では、PGP 標準の無料実装である [GnuPG](https://www.gnupg.org/index.html) を使用します。

  **ステップ 1. キーペアを生成する。** GnuPG などのツール（`gpg --full-generate-key`）を使用して PGP キーペアを生成し、RSA と 1024 ビットのキーサイズを選択します。

  <Info>
    * MoEngage は、最大 1024 ビット長の RSA キーを使用したファイル暗号化をサポートしています。4096 ビットなどのより大きな RSA キーはサポートされておらず、復号時に失敗します。より小さな RSA キーサイズでキーペアを生成してください。
    * 暗号化時には圧縮をオフにしてください。
  </Info>

  **ステップ 2. ファイルを暗号化する。** 公開鍵でファイルを暗号化し、S3 または SFTP フォルダにアップロードします。`--sign` オプションを指定すると、暗号化と同時にファイルに署名します。

  ```bash theme={null}
  gpg --encrypt --sign --armor --compress-algo none -r demo@example.com
  ```

  **ステップ 3. MoEngage UI でキーを追加する。** インポートのセットアップ時に、**Decryption Key** フィールドに秘密鍵を、**Key Passphrase** フィールドにパスフレーズを入力します。

  **ステップ 4. ファイルを復号する。** 復号には、秘密鍵とそのパスフレーズが必要です。PGP ソフトウェアで暗号化されたファイルを選択し、パスフレーズを入力すると、暗号化されていないファイルが生成されます。Python ユーザーは [python-gnupg](https://pypi.org/project/python-gnupg/) パッケージを使用できます。

  ```python theme={null}
  import gnupg, os
  gpg = gnupg.GPG(gnupghome=os.path.expanduser('~'))
  gpg.encoding = 'utf-8'
  import_result = gpg.import_keys(key_data)
  gpg.trust_keys(import_result.fingerprints, "TRUST_ULTIMATE")
  with open(encrypted_file_path, 'rb') as file:
      status = gpg.decrypt_file(file, passphrase="", output="/path/to/decrypted/file")
  print(status.ok)
  ```

  **ステップ 5. ファイルの署名を検証する（任意）。** ファイルに署名した場合は、MoEngage ダッシュボードに署名用の公開鍵を追加します。MoEngage は S3 または SFTP フォルダ内のファイルの署名を検証します。プログラムで検証する場合、署名が一致すると `status.signature_id` に値が設定されます。

  ```python theme={null}
  if status.signature_id:  # populated when the signature is verified, otherwise None
      print("signature verified")
  else:
      print("not verified")
  ```
</Accordion>

### ファイルの構成

ファイル名に含まれる DateTime 形式を選択します（ファイル名は `_<date time format>.csv` で終わる必要があります）。フォルダ内に一致するファイルが少なくとも 1 つ存在することを確認してから、**Fetch file(s)** をクリックします。接続と形式が正しい場合、MoEngage は上位 5 行のプレビューを表示します。

MoEngage がファイルを取得できない場合、以下のメッセージが表示されることがあります。

<Tabs>
  <Tab title="Amazon S3">
    * **Given S3 Access Key is not valid**：S3 マーケットプレイス接続の詳細を確認してください。
    * **Please check the folder path and try again**：フォルダパスと、そのフォルダに互換性のあるファイルが存在することを確認してください。
    * **Found zero data rows in the file**：ファイルのヘッダーの後に行がありません。MoEngage は少なくとも 2 行（ヘッダー 1 行 + データ 1 行）を想定しています。
  </Tab>

  <Tab title="SFTP">
    * **Given credentials are not correct**：正しい SFTP 認証情報を入力して、再度取得してください。
    * **Please check the folder path and try again**：フォルダパスと、そのフォルダに互換性のあるファイルが存在することを確認してください。
    * **Found zero data rows in the file**：ファイルのヘッダーの後に行がありません。MoEngage は少なくとも 2 行（ヘッダー 1 行 + データ 1 行）を想定しています。
  </Tab>
</Tabs>

**Next** をクリックしてマッピングに進みます。

## ステップ 2：列を MoEngage 属性にマッピングする

各ファイル列を MoEngage 属性にマッピングします。各列には、サンプル値付きの列名、**Map attribute** セレクター（データ型を選択し、DateTime 列の場合は形式も選択）、および **Skip** アクションが表示されます。新しい属性を作成するには、**+ Create attribute** をクリックします。**+ Add Field** をクリックして、マッピングを手動で入力することもできます。

必須のマッピングは、インポートの種類によって異なります。

* **ユーザーインポート（登録済み）**：識別子の列を **User ID** にマッピングします。[Unified Identity](/docs/ja/user-guide/data/user-data/unified-identity-identity-resolution) が有効になっている場合は、追加の識別子もマッピングするオプションがあります。
* **ユーザーインポート（匿名）**：識別子の列を **Anonymous ID** にマッピングします。
* **イベントインポート**：識別子の列を **User ID** に、タイムスタンプの列を **Event Time** にマッピングします。

<Tabs>
  <Tab title="Amazon S3">
    イベントの場合は、**Event Time (UTC)** または **Event Time (App Timezone)** のいずれかをマッピングします。Event Time (UTC) を選択した場合、イベント時刻は MoEngage ダッシュボードの設定で構成されたタイムゾーンに変換されます。
  </Tab>

  <Tab title="SFTP">
    イベントの場合は、**Event Time (UTC)** または **Event Time (App Timezone)** のいずれかをマッピングします。Event Time (UTC) を選択した場合、イベント時刻は MoEngage ダッシュボードの設定で構成されたタイムゾーンに変換されます。
  </Tab>
</Tabs>

必須のマッピングが設定されると、その列をスキップすることはできなくなります。

### マッピングファイル

必要に応じて、マッピングファイルをアップロードして列を自動マッピングできます。マッピングテーブルの右上にある **Upload mapping file** をクリックし、ファイルを選択します。マッピングは自動的に構成され、マッピングファイルで参照されているがまだ存在しない属性を作成するためのモーダルが表示されます。マッピングファイルにあってファイルにない列は無視され、ファイルにあってマッピングファイルにない列は、手動マッピング用に空欄のまま残されます。

新規インポートの場合、MoEngage は参考として使用できるサンプルマッピングファイルを提供しています。既存のインポートを複製した場合、そのマッピングファイルがあらかじめ添付されており、ダウンロードできます。マッピングファイルで MoEngage に存在しない属性に列がマッピングされている場合、そのマッピングは空欄のまま残されます。まず UI から属性を作成してから、列をその属性にマッピングしてください。

マッピングファイルには、各ソース列と MoEngage 属性の間のマッピングと、列のデータ型が含まれます。ファイルは JSON 形式である必要があります。ダッシュボードで列を 1 つずつマッピングする代わりに、マッピングファイルをアップロードしてマッピングを自動化できます。

<Tabs>
  <Tab title="CSV ファイル">
    ```json theme={null}
    {
      "mapping": [
        { "column": "ID", "moe_attr": "uid", "type": "string", "is_skipped": false },
        { "column": "First Name", "moe_attr": "u_fn", "type": "string", "is_skipped": false },
        { "column": "First Seen", "moe_attr": "cr_t", "type": "datetime", "datetime_format": "YYYY-MM-DD hh:mm:ss", "is_skipped": false },
        { "column": "LTV", "moe_attr": "t_rev", "type": "double", "is_skipped": false },
        { "column": "Install Status", "moe_attr": "installed", "type": "bool", "is_skipped": false }
      ]
    }
    ```
  </Tab>

  <Tab title="JSON ファイル">
    ```json theme={null}
    {
      "mapping": [
        { "column": "customer_id", "moe_attr": "uid", "type": "string", "is_skipped": false },
        { "column": "user.first_name", "moe_attr": "u_fn", "type": "string", "is_skipped": false },
        { "column": "user.first_seen", "moe_attr": "cr_t", "type": "datetime", "datetime_format": "YYYY-MM-DD hh:mm:ss", "is_skipped": false },
        { "column": "attribution.lifetime_value", "moe_attr": "t_rev", "type": "double", "is_skipped": false },
        { "column": "attribution.device_installed", "moe_attr": "installed", "type": "bool", "is_skipped": false }
      ]
    }
    ```
  </Tab>
</Tabs>

各列について、次のフィールドを指定します。

1. **`column`** *（必須）*: ソースファイルの列名。JSON ファイルのレベル 2 のキーには、ドット表記（`key1.key2`）を使用します。
2. **`moe_attr`** *（必須）*: 列のマッピング先となる MoEngage 属性。各列が一意の `moe_attr` にマッピングされるようにしてください。
3. **`type`** *（任意）*: 列のデータ型。サポートされている型については以下を参照してください。
4. **`datetime_format`** *（任意）*: 日時形式。DateTime フィールドの場合のみ必須です。
5. **`is_skipped`** *（任意）*: ブール型のフィールド。`true` とマークされた列はインポート時にスキップされます。

### 参考: 標準ユーザー属性

以下のキーを使用して、ソース列を MoEngage の標準ユーザー属性にマッピングします。完全な一覧については、[Data Management](/docs/ja/user-guide/settings/data-management/overview-data-management) ダッシュボードを参照してください。

| キー | ダッシュボード上の属性名 | データ型 | 説明 |
| :- | :- | :- | :- |
| `uid` | ID | String | アプリがユーザーに設定した一意の ID。 |
| `u_n` | Name | String | ユーザーのフルネーム。 |
| `u_fn` | First Name | String | ユーザーの名。 |
| `u_ln` | Last Name | String | ユーザーの姓。 |
| `u_em` | Email (Standard) | String | ユーザーのメールアドレス。例: `john@example.com`。 |
| `u_gd` | Gender | String | ユーザーの性別。 |
| `u_bd` | Birthday | DateTime | ユーザーの生年月日。年齢の代わりにこの標準属性を使用してください。年齢として送信されたデータはカスタム属性として追跡されます。 |
| `u_mb` | Mobile Number (Standard) | String | ユーザーの携帯電話番号。例: `918888444411`。 |
| `moe_geo_location` | Location | Array of `[lat,lng]` | ユーザーの位置情報。形式は `{"lat": 12.11, "lon": 123.122}` です。 |
| `source` | Publisher Name | String | インストールのパブリッシャー名。例: `Google Ads`。 |
| `revenue` | LTV | Numeric | ユーザーのライフタイムバリュー。 |
| `moe_unsubscribe` | Unsubscribe | Boolean | メールの配信停止属性。`true` に設定されている場合、ユーザーにメールは送信されません。 |
| `moe_hard_bounce` | Hard Bounce | Boolean | メールのハードバウンス属性。`true` に設定されている場合、ユーザーにメールは送信されません。 |
| `moe_spam` | Spam | Boolean | メールのスパム属性。`true` に設定されている場合、ユーザーにメールは送信されません。 |

<Warning>
  標準の文字列属性は正しいデータ型で追跡してください。たとえば、**First Name**（`u_fn`）が文字列ではなく数値や配列として取り込まれると、[Create segment](/docs/ja/user-guide/segment/create-segments/rule-based-filter-segments) ページのサンプルユーザーが 500 エラー（"There seems to be an error"）で読み込めなくなります。これを修正するには、[Data Management](/docs/ja/user-guide/settings/data-management/overview-data-management) ダッシュボードで属性のデータ型を String に固定し、影響を受けたユーザーの修正済みデータを再送信してください。
</Warning>

### サポートされている属性タイプ

| **タイプ** | **説明** | **マッピングファイルでの値** |
| - | - | - |
| String | 任意の文字列値。例: `ABC`、`ABC XYZ`、`ABC123`。 | `"type": "string"` |
| Double | 任意の小数値。例: `3.14159`、`241.23`、`-123.1`。 | `"type": "double"` |
| Boolean | 例: `true`、`false`。 | `"type": "bool"` |
| Date Time | 任意の日時値。例: `2019/02/22 17:54:14.933`。 | `"type": "datetime"` |

<Info>
  MoEngage は、配列型以外の列で `|`（パイプ）文字をサポートしていません。String、Numeric、Boolean の列にこの文字が含まれていないことを確認してください。
</Info>

### ユーザー属性の予約キーワード

MoEngage は次のキーを予約しています。ユーザー属性をマッピングまたは追跡する際には、これらを使用しないでください。

* `USER_ATTRIBUTE_UNIQUE_ID`
* `USER_ATTRIBUTE_USER_EMAIL`
* `USER_ATTRIBUTE_USER_MOBILE`
* `USER_ATTRIBUTE_USER_NAME`
* `USER_ATTRIBUTE_USER_GENDER`
* `USER_ATTRIBUTE_USER_FIRST_NAME`
* `USER_ATTRIBUTE_USER_LAST_NAME`
* `USER_ATTRIBUTE_USER_BDAY`
* `USER_ATTRIBUTE_NOTIFICATION_PREF`
* `USER_ATTRIBUTE_OLD_ID`
* `MOE_TIME_FORMAT`
* `MOE_TIME_TIMEZONE`
* `USER_ATTRIBUTE_DND_START_TIME`
* `USER_ATTRIBUTE_DND_END_TIME`
* `MOE_GAID`
* `INSTALL`
* `UPDATE`
* `MOE_ISLAT`
* `status`
* `user_id`
* `source`

### ポートフォリオのサポート（プロジェクトレベルのルーティング）

列のマッピングを使用して、インポートされたイベントを MoEngage のポートフォリオワークスペース内の特定のプロジェクトにルーティングできます。プロジェクト識別子の列（`brand_name` や `app_id` など）を MoEngage 属性 `moe_project_name` にマッピングします。値は MoEngage のプロジェクト名と完全に一致する必要があります（大文字と小文字は区別されます）。

* **ルーティング成功**: 値がポートフォリオ内のプロジェクトと一致する場合、MoEngage はそのプロジェクトレベルでユーザーまたはイベントを取り込みます。
* **フォールバック**: マッピングがない、空白である、またはプロジェクト名と一致しない場合、MoEngage はグローバルなポートフォリオレベルでデータを取り込みます。

### ファイルセグメントとして保存する

**Save as File Segment** をオンにして名前を入力すると、インポートしたユーザーからキャンペーンで使用できるセグメントが作成されます。

* **既存のセグメント**：ユーザーは追加モードで追加されます。新しいユーザーが追加され、削除されるユーザーはいません。
* **新しいセグメント**：更新モードを選択します。**Replace**（各インポートでセグメントのユーザーが完全に置き換えられます）または **Append**（各インポートでユーザーが追加され、削除されるユーザーはいません）。

<Warning>
  ファイルセグメント名に `/` や Unicode 文字を使用しないでください。使用するとインポートが失敗します。
</Warning>

### インポートの動作

ユーザーインポートの場合、**Import Behaviour** で **Update existing users only** を選択すると、MoEngage にすでに存在するユーザーの属性を一括更新できます。このインポートでは MoEngage は新しいユーザーを作成せず、識別子が MoEngage にまだ存在しない行は無視されます。

### インポート通知を送信する

通知をオンにし、インポートの作成時、成功時、または失敗時にアラートを受け取る**メール受信者を最大 10 人**選択します。マッピングが完了したら、**Next** をクリックします。

## ステップ 3：インポート頻度を選択する

MoEngage がファイルを取得するタイミングを定義します。

* **1 回限りのインポート**：すぐに実行するか、将来の日時にスケジュールします。
* **定期的なインポート**：間隔と詳細設定を指定して、毎時、毎日、毎週、または毎月実行します。

各実行で、MoEngage は構成された DateTime 形式に一致するファイルを取得するため、ファイル名が正しいことを確認してください。必要に応じて、一定回数の実行後または特定の日付にインポートを終了するように設定できます。**Done** をクリックします。

<Info>
  インポートされたユーザーのチャネル到達可能性とカスタムセグメントは、インポート完了後 2 時間以内に利用可能になります。それに合わせてキャンペーンを計画してください。
</Info>

# 重複インポート

一度に構成できる一意のインポートは 1 つのみです。以下の**すべて**が既存のアクティブなインポートと一致する場合、そのインポートは重複と見なされます。

<Tabs>
  <Tab title="Amazon S3">
    1. **インポートの種類**：Users または Events。
    2. **インポートのサブタイプ**：イベント名、または Registered / Anonymous。
    3. **S3 フォルダパス**。
    4. **バケット名**。
  </Tab>

  <Tab title="SFTP">
    1. **インポートの種類**：Users または Events。
    2. **インポートのサブタイプ**：イベント名、または Registered / Anonymous。
    3. **SFTP フォルダパス**（ホスト名を含む完全なフォルダパス）。
  </Tab>
</Tabs>

いずれか 1 つのパラメーターが異なる場合、そのインポートは一意です。

# インポート失敗ポリシー

MoEngage は、失敗したファイルを最大 30 回まで自動的に再試行してから、完全に FAILED としてマークします。設定時に、失敗時のメールアラートを構成できます。ファイルレベルの失敗によってスケジュールが停止することはなく、今後のスケジュールされた実行は独立して継続されます。

# サポートされる日時形式

これらは、マッピングファイルの `datetime_format` フィールドで使用するか、マッピング時に DateTime 列を構成する際に使用します。

| **日時形式** | **例** |
| - | - |
| `"datetime_format": "YYYY-MM-DD"` | 2022-01-22 |
| `"datetime_format": "YYYY/MM/DD"` | 2022/01/22 |
| `"datetime_format": "DD/MM/YYYY"` | 22/01/2022 |
| `"datetime_format": "DD-MM-YYYY"` | 22-01-2022 |
| `"datetime_format": "DD-MM-YYYY hh:mm:ss"` | 31-12-2022 12:10:33 |
| `"datetime_format": "DD/MM/YYYY hh:mm:ss"` | 31/12/2022 12:10:33 |
| `"datetime_format": "YYYY-MM-DD hh:mm:ss"` | 2019-02-22 17:54:14 |
| `"datetime_format": "YYYY/MM/DD hh:mm:ss"` | 2019/02/22 17:54:14 |
| `"datetime_format": "DD-MM-YYYYThh:mm:ss.s"` | 31-12-2022T12:10:33.882 |
| `"datetime_format": "DD/MM/YYYYThh:mm:ss.s"` | 31/12/2022T12:10:33.882 |
| `"datetime_format": "DD-MM-YYYYThh:mm:ssTZD"` | <ul><li>31-12-2022T12:10:33Z</li><li>31-12-2022T12:10:33+08:00</li><li>31-12-2022T12:10:33-08:00</li></ul> |
| `"datetime_format": "DD/MM/YYYYThh:mm:ssTZD"` | <ul><li>31/12/2022T12:10:33Z</li><li>31/12/2022T12:10:33+08:00</li><li>31/12/2022T12:10:33-08:00</li></ul> |
| `"datetime_format": "YYYY-MM-DD hh:mm:ss.s"` | 2019-02-22 17:54:14.933 |
| `"datetime_format": "YYYY/MM/DD hh:mm:ss.s"` | 2019/02/22 17:54:14.933 |
| `"datetime_format": "YYYY-MM-DDThh:mm:ssTZD"` | <ul><li>2019-11-14T00:01:02Z</li><li>2019-11-14T00:01:02+08:00</li><li>2019-11-14T00:01:02-08:00</li></ul> |
| `"datetime_format": "YYYY/MM/DDThh:mm:ssTZD"` | <ul><li>2019/11/14T00:01:02Z</li><li>2019/11/14T00:01:02+08:00</li><li>2019/11/14T00:01:02-08:00</li></ul> |
| `"datetime_format": "YYYY-MM-DDThh:mm:ss.sTZD"` | <ul><li>2019-02-22T17:54:14.957Z</li><li>2019-02-22T17:54:14.957299-08:00</li><li>2019-02-22T17:54:14.957299+08:00</li></ul> |
| `"datetime_format": "YYYY/MM/DDThh:mm:ss.sTZD"` | <ul><li>2019/02/22T17:54:14.957Z</li><li>2019/02/22T17:54:14.957299-08:00</li><li>2019/02/22T17:54:14.957299+08:00</li></ul> |

# インポートを管理する

インポートの監視、インポートステータスの理解、または手動や API による実行のトリガーについては、Imports Overview の[インポートの仕組み](/docs/ja/user-guide/data/imports/overview-imports#how-imports-work)を参照してください。

# よくある質問

<Accordion title="インポートが失敗しました。原因を確認するにはどうすればよいですか？">
  右側の省略記号をクリックし、**View** をクリックしてインポートの詳細を確認します。**Failed** ステータスにカーソルを合わせると、理由を確認できます。
</Accordion>

<Accordion title="スケジュールされたインポートが、最近アーカイブされたセグメントにデータを追加した場合はどうなりますか？">
  その場合でも、新しいデータはアーカイブされたセグメントに追加されます。必要に応じてセグメントのアーカイブを解除できます。
</Accordion>

<Accordion title="実行中のインポートを停止できますか？">
  インポート処理が開始されると、途中で停止することはできません。データは複数のステップを経て処理されるため、中断すると不完全または不整合な結果になる可能性があるからです。現在のインポートが完了するまで待つことをお勧めします。
</Accordion>

<Accordion title="スケジュールされたインポートの今後の実行を停止するにはどうすればよいですか？">
  はい、スケジュールされたインポートが今後自動的に実行されないように停止できます。そのためには、Data Imports ダッシュボードでインポートスケジュールを見つけ、Actions メニューから **Archive** オプションを選択します。これにより、次回のスケジュール時刻に実行されなくなります。
</Accordion>

<Accordion title="インポートが停止しているように見える、または時間がかかっている場合はどうすればよいですか？">
  インポートが停止しているように見える場合や、通常より時間がかかっている場合は、待つことをお勧めします。システムにはこうした状況を自動的に処理し、必要に応じて再試行するチェック機能が備わっています。処理中に同じインポートを手動で再度開始すると、競合が発生し、元のインポートが正常に完了しなくなる可能性があります。
</Accordion>

<Accordion title="フォルダからのファイル取得でエラーが発生した場合はどうなりますか？">
  MoEngage は失敗したファイルを最大 30 回まで自動的に再試行し、それでも失敗した場合は恒久的に FAILED としてマークします。また、セットアップ時に通知のチェックボックスを選択すると、失敗時のメールアラートを設定することもできます。
</Accordion>

<Accordion title="ファイルが 'Applicable rate limit breached' で失敗しました。定期インポートで自動的に再処理されますか？">
  いいえ。ファイルが処理の再試行回数を使い切り、*Applicable rate limit breached* ステータスで失敗した場合、MoEngage はそのファイルを単独で再実行できないため、定期スケジュールで自動的に再処理されることはありません。この再試行制限は、取り込みパイプラインが過負荷になるのを防ぐためのものです。影響を受けたファイルを再処理するには、ファイル名を変更してソースフォルダに再アップロードし、MoEngage が新しいファイルとして扱うようにしてください。レート制限に達する可能性を減らすには、多数のファイルを一度にスケジュールするのではなく、大きなバッチを分散させてください（[Limits](/docs/ja/user-guide/data/imports/setting-up-a-file-import#limits) を参照）。
</Accordion>

<Accordion title="MoEngage は定期実行で新しいファイルをどのように取得しますか？">
  スケジュールされた各実行時に、MoEngage は設定されたフォルダパスを検索し、ファイル名のプレフィックスと日時形式の設定に基づいて新しいファイルを選択します。ファイルはフォルダの場所とファイル名の組み合わせで一意に識別されるため、各ファイルは 1 回だけ処理されます。
</Accordion>

<Accordion title="定期インポートで、以前に処理されたファイルが再度取得されることはありますか？">
  いいえ。すでに処理されたファイルは、ファイル名とフォルダの場所が同じである限り、再度処理されることはありません。同じファイルを別のフォルダに配置した場合は、その新しいフォルダ用に設定されたインポートによって再度処理されます。
</Accordion>

<Accordion title="1 つの CSV ファイルにユーザーデータとイベントデータの両方を含めることはできますか？">
  いいえ。ユーザーインポートとイベントインポートは別々のタスクとして設定してください。各ソースファイルには、ユーザー属性のみ、またはイベントレコードのみを含める必要があります。
</Accordion>

<Accordion title="NDJSON とは何ですか？また、なぜ必要なのですか？">
  NDJSON（Newline-Delimited JSON）とは、`.json` ファイルの各行が改行で区切られた完全な JSON オブジェクトである形式です。この形式により、MoEngage は大規模な JSON データセットを 1 行ずつ処理でき、スケーラブルで堅牢なインポートが可能になります。
</Accordion>

<Accordion title="圧縮ファイル（.gz、.zip など）はサポートされていますか？">
  いいえ。MoEngage は圧縮ファイルのインポートをサポートしていません。
</Accordion>

<Accordion title="既存のインポートのファイルタイプを変更すると、マッピングはどうなりますか？">
  ファイルタイプを変更すると、既存のプレビューが削除され、新しいファイルタイプで利用可能なファイルが再取得されます。プレビューするファイルを再度選択し、新しいファイルの構造に基づいてマッピングを再設定する必要があります。
</Accordion>
