# Gigya インポート連携

Gigya（SAP Customer Data Cloud）から [Accounts](https://help.sap.com/viewer/8b8d6fffe113457094a17701f63e3d6a/GIGYA/en-US/b32ce0918af44c3ebd7e96650fa6cc1d.html)、[Profile Management](https://help.sap.com/viewer/8b8d6fffe113457094a17701f63e3d6a/GIGYA/en-US/81104a226fa04009870a898a77f58ca7.html)、[Data Store](https://help.sap.com/viewer/8b8d6fffe113457094a17701f63e3d6a/GIGYA/en-US/415206b370b21014bbc5a10ce4041860.html)、[Audit Log](https://help.sap.com/viewer/8b8d6fffe113457094a17701f63e3d6a/GIGYA/en-US/4143815a70b21014bbc5a10ce4041860.html) のデータを Treasure Data に取り込むことができます。

## 前提条件

- [TD toolbelt](https://toolbelt.treasuredata.com/) を含む Treasure Data の基礎知識
- Gigya アカウント
- Accounts オブジェクトからデータを取得するための [Query Syntax Specification](https://developers.gigya.com/display/GD/accounts.search+REST#accounts.searchREST-QuerySyntaxSpecification) に関する基礎知識
- [増分ロードについて](/ja/int/about-incremental-loading) を確認してください


増分ロードは、指定された増分列の最大値（max value）を使用して、最初の実行時には最大値までのすべてのレコードをロードし、以降の実行では前回の実行の（最大値 +1）から、ジョブが実行される現在の時刻までのレコードをインポートします。これが新しい最大値となります。

## サポート対象

- Select 句
- From 句
- Where 句
- Group By 句


## 制限事項と要件

- **START**、**CONTAINS**、**WITH** キーワードはサポートされていません
- **COUNTERS** はサポートされていません
- クエリ内の **LIMIT** 句は自動的に削除されます（**SELECT * FROM ACCOUNTS LIMIT 100**）は制限を無視してすべてのレコードを返します
- 集計関数（***sum, min, max, avg, sum_of_squares, variance, std***）と **Group By** 句を含むクエリは、最初のページのみ取り込むことができます
- **FROM** 句に無効なオブジェクトを入力した場合（例：***SELECT * FROM unexisted***）、クエリは自動的に accounts オブジェクトにフォールバックします
- カラム名は大文字と小文字を区別し、オブジェクト名は大文字と小文字を区別しません


### クエリ構文の制限事項

Treasure Data は、Gigya 向けに以下の SQL クエリ構文をサポートしています：

- Select 句
- From 句
- Where 句
- Group By 句
- START、CONTAINS、WITH キーワードはサポートされていません。
- COUNTERS はサポートされていません。
- クエリ内の LIMIT 句は自動的に削除されます。
SELECT * FROM ACCOUNTS LIMIT 100 はすべてのレコードを返し、制限を無視します。
- 集計関数（sum, min, max, avg, sum_of_squares, variance, std）と Group By 句を含むクエリは、最初のページのみ取り込むことができます。
- カラム名は大文字と小文字を区別します。
- オブジェクト名は大文字と小文字を区別しません。
- 増分列は数値型またはタイムスタンプ型である必要があります。


### Account データソースの制限事項

- データクエリは、accounts と email accounts の 2 つのオブジェクトに制限されます。
- FROM 句に無効なオブジェクトを入力すると、クエリは自動的に accounts オブジェクトにフォールバックします。
例：`SELECT * FROM does_not_exist` は、`does_not_exist` を accounts に置き換えます。
- accounts オブジェクトでサポートされる増分列：[lastLogin, registered, oldestDataUpdatedTimestamp, lastUpdated, verifiedTimestamp, oldestDataUpdated, lastUpdatedTimestamp, created, createdTimestamp, verified, registeredTimestamp, lastLoginTimestamp, lockedUntil]
- emailAccounts でサポートされる増分列：[lastUpdated, lastUpdatedTimestamp, created, createdTimestamp]
- 参考リンク：[accounts.search REST](https://help.sap.com/viewer/8b8d6fffe113457094a17701f63e3d6a/GIGYA/en-US/b32ce0918af44c3ebd7e96650fa6cc1d.html)


### Profile Management データソースの制限事項

- データクエリは、accounts と email accounts の 2 つのオブジェクトに制限されます。
- FROM 句に無効なオブジェクトを入力すると、クエリは自動的に accounts オブジェクトにフォールバックします。
例：`SELECT * FROM does_not_exist` は、`does_not_exist` を accounts に置き換えます。
- accounts オブジェクトでサポートされる増分列：[lastLogin, registered, oldestDataUpdatedTimestamp, lastUpdated, verifiedTimestamp, oldestDataUpdated, lastUpdatedTimestamp, created, createdTimestamp, verified, registeredTimestamp, lastLoginTimestamp, lockedUntil]
- emailAccounts でサポートされる増分列：[lastUpdatedTimestamp, created, createdTimestamp, lastUpdated]
- 参考リンク：[ids.search REST](https://help.sap.com/viewer/8b8d6fffe113457094a17701f63e3d6a/GIGYA/en-US/81104a226fa04009870a898a77f58ca7.html)


### Data Store データソースの制限事項

- FROM 句に無効なオブジェクトを入力すると、エラー [400006] Invalid parameter value: Invalid argument: accounts type not allowed が返されます
- ターゲット Data Store のスキーマに応じて、増分列は異なります。ただし、無効なカラム名を入力すると、Treasure コンソール からのエラーで許容されるカラム名を確認できます。
- 参考リンク：[ds.search REST](https://help.sap.com/viewer/8b8d6fffe113457094a17701f63e3d6a/GIGYA/en-US/415206b370b21014bbc5a10ce4041860.html)


### Audit Log データソースの制限事項

- サポートされる増分列：[@timestamp]
- 参考リンク：[audit.search](https://help.sap.com/viewer/8b8d6fffe113457094a17701f63e3d6a/GIGYA/en-US/4143815a70b21014bbc5a10ce4041860.html)


## 増分ロードと数値型およびタイムスタンプ型カラム

増分ロードは、指定された増分列の最大値（max value）を使用して、最初の実行時には最大値までのすべてのレコードをロードし、以降の実行では前回の実行の（最大値 +1）から、ジョブが実行される現在の時刻（これが新しい最大値になります）までのレコードをインポートします。

サポート対象：

- 数値型またはタイムスタンプ型の増分列
- Accounts オブジェクトの増分列：[lastUpdated, lastUpdatedTimestamp, created, createdTimestamp]
- EmailAccounts の増分列：
[lastLogin, registered, oldestDataUpdatedTimestamp, lastUpdated, verifiedTimestamp, oldestDataUpdated, lastUpdatedTimestamp, created, createdTimestamp, verified, registeredTimestamp, lastLoginTimestamp, lockedUntil]
- auditLog でサポートされる増分列：[@timestamp]


## Treasure コンソール を使用した接続の作成

### Gigya から API Key、User Key、Secret Key を取得する

1. [Creating and Managing Applications](https://developers.gigya.com/display/GD/Signing+Requests+to+SAP+Customer+Data+Cloud#SigningRequeststoSAPCustomerDataCloud-CreatingandManagingApplications) の手順に従って、アプリケーションを作成し、**App User Key** と **Secret Key** を取得します。
2. [API Key and Site Setup](https://developers.gigya.com/display/GD/APIs+and+SDKs#APIsandSDKs-APIKeyandSiteSetup) の手順に従って、**API Key** を取得します。
3. 手順に従って [Data Center](https://developers.gigya.com/display/GD/Finding+Your+Data+Center#FindingYourDataCenter-DataCenters) を確認します。


### 新しい接続を作成する

データ接続を設定する際には、連携にアクセスするための認証情報を提供します。Treasure Data では、まず認証を設定してから、ソース情報を指定します。

1. Treasure コンソール を開きます。
2. Integrations Hub -> Catalog に移動します。
3. Gigya（SAP Customer Data Cloud）を検索して選択します。


![](/assets/image2021-5-25_14-44-41.98720c1031155d78df3c5e939cf2cfbe0d4b74e1a0ebbc199572f82a93a8955e.236f7714.png)

以下のダイアログが開きます。

![](/assets/image2021-4-27_8-59-59.c1f19586bd853c61e891beb3085827a3ea92c634949a9cef4796e99db38d7474.236f7714.png)

1. アカウントの Data Center を選択します。
2. 以下の値を入力します：


- API Key
- User Key
- User Secret


![](/assets/image2021-4-27_9-13-2.c9aa87cc32a42f315c85b097ccf634eff14662d56b3dfba341b6a90cf0b21d10.236f7714.png)

1. **Continue** を選択します。
2. 接続の名前を入力し、**Done** を選択します。


![](/assets/image2021-4-27_9-19-20.0251626fe2dbb06d6cd6a82282393d7bfd525d12e1a8d651ca3c983ff1025585.236f7714.png)

### Gigya Accounts データを Treasure Data に転送する

認証された接続を作成すると、自動的に Authentications タブに移動します。

1. 作成した接続を検索し、**New Source** を選択します。


![](/assets/image2021-4-27_9-22-44.ff977a0a1de91a5bd4ac0859362faa6aa6a63e1d68b6c9d91be23e8967cbceec.236f7714.png)

1. **Source** に名前を付けます。
2. **Next** を選択します。
3. Source Table でパラメータを編集します。


![](/assets/image2021-12-16_9-48-7.6b4c32d58610b29a3d8bcbadab308a723f5d8e70c334249e82db71a9ca9af539.236f7714.png)

| **パラメータ** | **説明** |
|  --- | --- |
| **Data Source** | ターゲットデータソース。現在サポート対象：Accounts、Profile Management、Data Store、Audit Log |
| **Query** | データを取り込むための Gigya のクエリ。ターゲットオブジェクトによって、クエリは異なります。  Account と Profile Management データソースの場合、accounts と emailAccounts オブジェクトのみサポート（サンプルクエリ：`Select * From accounts`）  Data Store の場合、オブジェクトは任意（サンプルクエリ：`Select * From my_data`）  Audit Log の場合、auditLog オブジェクトのみサポート（サンプルクエリ：`Select * From auditLog`） |
| **Fields To Exclude** | **Gigya の API 仕様により**、SELECT ステートメントに含めるカラムを指定することはできません。このパラメータを使用して、不要なカラムを削除できます。 |
| **Batch Size** | 1 回の API 呼び出しで取得するレコードの最大数。最大値は 10000、最小値は 10 です。バッチサイズをカスタマイズする際は、以下を考慮してください：小さい値にすると API の応答は速くなりますが、API 呼び出しの回数が増えます。 |
| **Incremental** | スケジュールで実行する場合、次回のインポートでは、Incremental Column の値に基づいて、前回の実行後に更新されたデータのみを取り込みます。 |
| **Incremental Column** | 増分転送を実行するデータオブジェクトのカラム。  Account と Profile Management データソースの場合、推奨値：created、createdTimestamp、updated、updatedTimestamp。  Data Store データソースの場合、推奨値：数値型または日時型のカラム  Audit Log データソースの場合、推奨値：@timestamp |


1. **Data Settings** ダイアログで、データ設定を編集するか、このステップをスキップできます。


![](/assets/screenshot-2025-01-06-at-11.22.05.f73041e49fc1f9443fc53aa7c7f46b62da9741e7d71e1caaaeb466f0955200a9.236f7714.png)

デフォルトでは、コネクタはデータ型を自動的に検出できます。ただし、ユーザーは *column_options* パラメータを使用して、インポート属性フィールドのデータ型をカスタマイズできます。サポートされるデータ型のマッピング：

- boolean
- long
- double
- string
- timestamp
- json


### Data Preview

インポートを実行する前に、Generate Preview を選択してデータの[プレビュー](/products/customer-data-platform/integration-hub/batch/import/previewing-your-source-data)を表示できます。Data preview はオプションであり、選択した場合はダイアログの次のページに安全にスキップできます。

1. **Next** を選択します。Data Preview ページが開きます。
2. データをプレビューする場合は、**Generate Preview** を選択します。
3. データを確認します。


### Data Placement

データの配置について、データを配置したいターゲット database と table を選択し、インポートを実行する頻度を指定します。

1. **Next** を選択します。Storage の下で、インポートされたデータを配置する新しい database を作成するか、既存の database を選択し、新しい table を作成するか、既存の table を選択します。
2. **Database** を選択 > **Select an existing** または **Create New Database** を選択します。
3. オプションで、database 名を入力します。
4. **Table** を選択 > **Select an existing** または **Create New Table** を選択します。
5. オプションで、table 名を入力します。
6. データをインポートする方法を選択します。
  - **Append** (デフォルト) - データインポートの結果は table に追加されます。
table が存在しない場合は作成されます。
  - **Always Replace** - 既存の table の全体の内容をクエリの結果出力で置き換えます。table が存在しない場合は、新しい table が作成されます。
  - **Replace on New Data** - 新しいデータがある場合のみ、既存の table の全体の内容をクエリの結果出力で置き換えます。
7. **Timestamp-based Partition Key** 列を選択します。
デフォルトキーとは異なるパーティションキーシードを設定したい場合は、long または timestamp 列をパーティショニング時刻として指定できます。デフォルトの時刻列として、add_time フィルターで upload_time を使用します。
8. データストレージの **Timezone** を選択します。
9. **Schedule** の下で、このクエリを実行するタイミングと頻度を選択できます。


#### 一度だけ実行

1. **Off** を選択します。
2. **Scheduling Timezone** を選択します。
3. **Create & Run Now** を選択します。


#### 定期的に繰り返す

1. **On** を選択します。
2. **Schedule** を選択します。UI では、*@hourly*、*@daily*、*@monthly*、またはカスタム *cron* の 4 つのオプションが提供されます。
3. **Delay Transfer** を選択して、実行時間の遅延を追加することもできます。
4. **Scheduling Timezone** を選択します。
5. **Create & Run Now** を選択します。


転送が実行された後、**Data Workbench** > **Databases** で転送の結果を確認できます。