# OneDrive Import Integration [OneDrive Export Integrationの詳細はこちら](/ja/int/onedrive-import-integration)。 OneDriveに接続して、個人用、ビジネス用ファイル、またはSharePointドキュメントをTreasure Dataにインポートできます。 ## 前提条件 - [TD Toolbelt](https://toolbelt.treasuredata.com/)を含むTreasure Dataの基礎知識 - OneDriveまたはSharePointアカウント OAuth認証には、ご自身で承認を行う必要があります。このインテグレーションは、OneDriveユーザーが管理者から承認を得る認証フローをサポートしていません。 - Treasure Dataアカウントへの認証済みアクセス ## OneDriveの増分ロード 増分ロードは、ファイルの最終インポート日を使用してレコードを単調にロードし、最新の実行後のファイルを挿入または更新します。 初回実行時、このコネクタは**Filename Regex**と**Modified After**に一致するすべてのファイルをロードします。**incremental** `: true`が設定されている場合、最新の変更日時が新しい**Modified After**値として保存されます。 例: - インポートフォルダに含まれるファイル: ``` +--------------+--------------------------+ | Filename | Last update | +--------------+--------------------------+ | File0001.csv | 2019-05-04T10:00:00.123Z | | File0011.csv | 2019-05-05T10:00:00.123Z | | File0012.csv | 2019-05-06T10:00:00.123Z | | File0013.csv | 2019-05-07T10:00:00.123Z | | File0014.csv | 2019-05-08T10:00:00.123Z | ``` - Filename Regex: File001.*.csv - Modified After: 2019-05-01T10:00:00.00Z この場合、**File0011.csv**、**File0012.csv**、**File0013.csv**、**File0014.csv**のファイルがインポートされます。これらはFilename Regexに一致し、すべて最終更新日が2019-05-01T10:00:00.00Zより後であるためです。 ジョブが完了すると、新しい**Modified After = 2019-05-08T10:00:00.123Z**が保存されます。 次回の実行では、最終更新日が**2019-05-08T10:00:00.123Z**より後のファイルのみがインポートされます。 例: - インポートフォルダに新しく更新・追加されたファイル: ``` +--------------+--------------------------+ | Filename | Last update | +--------------+--------------------------+ | File0001.csv | 2019-05-04T10:00:00.123Z | | File0011.csv | 2019-05-05T10:00:00.123Z | | File0012.csv | 2019-05-06T10:00:00.123Z | | File0013.csv | 2019-05-09T10:00:00.123Z | | File0014.csv | 2019-05-08T10:00:00.123Z | | File0015.csv | 2019-05-09T10:00:00.123Z | ``` - Filename Regex: File001.*.csv - Modified After: **2019-05-08T10:00:00.123Z** この場合、**File0013.csv**と**File0015.csv**のファイルのみがインポートされます。 ## ドメイン名と相対パス OneDriveビジネスアカウントプラン(個人フォルダ、SharePointサイトコレクション、共有されたフォルダを含む)にアクセスするには、**ドメイン名**とURL**相対パス**が必要です。 ブラウザでインポートしたいフォルダを開きます。次に、以下のようにドメイン名と相対パスを取得します: 個人フォルダ ![](/assets/blobid21.d8e866d5958e831aa40bb70fce176a012b4cdf8eed73d949c5d07d9b562c612a.f5e2eeff.png) SharePointコレクション ![](/assets/blobid20.c8b13e356d42eda2d83c157077bf57a166aecbeb816f6d1ac43531f1ee91765b.f5e2eeff.png) 共有されたフォルダ ![](/assets/blobid19.3f16c9cd9ff534a71a642e921fb17dcc8f347223b343e8a764d4970577e55aef.f5e2eeff.png) ## ファイル名Regexマッチング このコネクタはファイル名マッチャーにJava言語のRegexをサポートしています。[ドキュメント](https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.md)を参照してください。 例: - .csv拡張子を持つすべてのファイルに一致: **.*.csv** - 接頭辞abcで始まるすべてのファイルに一致: **abc.*** - ファイルabc.csvに完全一致: **abc.csv** ## 要求される権限 OneDrive Connectorは、個人アカウントを使用している場合、以下の権限を要求します: | **権限** | **説明** | **注記** | | --- | --- | --- | | *User.Read* | ユーザーがアプリにサインインできるようにし、アプリがサインインしたユーザーのプロフィールを読み取れるようにします。また、サインインしたユーザーの基本的な会社情報も読み取れるようにします。 | | | *Files.ReadWrite.AppFolder* | アプリケーションのフォルダ内のファイルの読み取り、作成、更新、削除をアプリに許可します。 | アプリケーションのフォルダは、「TreasureData OneDrive Connector」アプリ専用の特別なフォルダです。[App Folderとは](https://docs.microsoft.com/en-us/onedrive/developer/rest-api/concepts/special-folders-appfolder?view=odsp-graph-online)を参照してください。 | | *Files.ReadWrite.All* | サインインしたユーザーがアクセスできるすべてのファイルの読み取り、作成、更新、削除をアプリに許可します。 | インポートおよびエクスポートコネクタは同じクライアントアプリケーションを共有し、読み取り、作成、更新のみを実行しますが、ファイルは削除しません。 | | *offline_access* | ユーザーが現在アプリを使用していない場合でも、アプリがユーザーデータを読み取り、更新できるようにします。 | スケジュールされたインポート/エクスポートに使用 | ビジネス/ワークアカウントでは追加の権限が要求されます | 権限 | 説明 | 注記 | | --- | --- | --- | | *Sites.ReadWrite.All* | すべてのグループの読み取りと書き込み、すべてのサイトコレクション内のアイテムの編集または削除 | 読み取り、作成、更新のみを実行しますが、ファイルは削除しません。 | *注意: 削除権限はSites.ReadWrite.All権限の一部としてデフォルトで付与されますが、データコネクタはMicrosoft OneDrive上のファイルを削除しません。* ## TD Consoleを使用した接続の作成 ### 新しい接続の作成 1. データ接続を設定する際、インテグレーションにアクセスするための認証を提供します。Treasure Dataでは、認証を設定してから、ソース情報を指定します。 2. Integrations Hub -> Catalogに移動し、OneDriveを検索して選択します。 ![](/assets/mceclip0.6c2f0f220863628976d5dbcc1014513e90988e7b60eb31a9f8319dbb53f659c4.f5e2eeff.png) 1. 以下のダイアログが開きます。 ![](/assets/blobid2.85818121ef23b08699a9818c23b8aa7b3540201dfb926d81aee85977d01978af.f5e2eeff.png) 1. Treasure Data OneDriveへのアクセスにはOAuth2認証が必要です。認証では、ユーザーが手動でTreasure DataアカウントをそれぞれのOneDriveアカウントに接続する必要があります。 2. 認証するには、以下の手順を完了してください: 3. **Click here**を選択して、新しいアカウントに接続します。 4. ポップアップウィンドウでOneDriveアカウントにログインし、Treasure Dataアプリへのアクセスを許可します。 ![](/assets/mceclip3.15e0ab4128222b1154be8d03b65d0298b6a06a2b23247368f63a01615229bc7f.f5e2eeff.png) 1. TD Consoleにリダイレクトされます。最初のステップ(新しい接続の作成)を繰り返し、新しいOAuth接続を選択します。 ![](/assets/blobid1.8379a4fcadd0a4a08cbd59fcdf16d92e9f75115b76393cd37077340f70af4205.f5e2eeff.png) 1. 新しいOneDrive接続に名前を付けます。**Done**を選択します。 ![](/assets/blobid3.3893f58f999796017dd115911f310941a4933d3ac29c304046dd0f4d48364c80.f5e2eeff.png) ### OneDriveデータをTreasure Dataに転送 **Authentications**で、**New Source**を設定します。 ![](/assets/blobid4.b7164694fcf1c16845b6e66c59fc0c603650ead7251afc309784a6c76f2c972a.f5e2eeff.png) 詳細を入力し、**Next**を選択します。 OneDrive Connectorは2種類のアカウントプランタイプをサポートしています: **Business** ![](/assets/mceclip7.74fc2071648e7cdae7f4464e67ca9cadc343b80293bbde523ce2ad2423dd0d8f.f5e2eeff.png) **Personal** ![](/assets/mceclip5.a479483068731ab61ad35156805e7f305b5769ac4a0d9079f4a97de24d02ff09.f5e2eeff.png) パラメータ: - **OneDrive Account Plan**: OneDriveアカウントプラン。2つのタイプをサポート: - Business - Personal - **Ingest Shared Files**: ビジネスアカウントプランのみに適用。直接共有されたファイルをインポート(共有されたフォルダとは異なります)。 - **Domain Name**: ビジネスアカウントプランのみに適用。付録のドメイン名と相対パスを参照してください。 - **Relative Path**: ビジネスアカウントプランのみに適用。URL相対パスを指定します。付録のドメイン名と相対パスを参照してください。 - **Folder Path**: ファイルをインポートするフォルダパス。例: */import/20190501* - **This is a shared folder**: 個人アカウントプランのみに適用。共有フォルダへの相対パスを指定します。FAQ「共有されたフォルダをインポートする方法」を参照してください。 - **Filename RegEx**: 指定されたファイル名regexに一致するファイルのみをインポート。[正規表現](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)の詳細を参照してください。また、[ファイル名Regexマッチング](https://docs.treasuredata.com/articles/project-integrations/onedrive-import-integration#OneDriveImportIntegration-FilenameRegexMatching)も参照してください。 - **Modified After**: このタイムスタンプ以降に変更されたファイルのみをインポート。タイムゾーンはUTCです。このパラメータが空の場合、すべてのファイルをインポートします。タイムスタンプ形式: **yyyy-MM-dd'T'HH:mm:ss.SSSZ** 例: *2019-05-01T10:00:00.121Z* - **Incremental?** 繰り返し実行する際、最後のインポート以降のファイルのみをインポートしようとします。[増分ロードの仕組み](https://docs.treasuredata.com/articles/project-integrations/onedrive-import-integration#OneDriveImportIntegration-HowIncrementalLoadingWorks)を参照してください。 ### プレビュー データプレビューはオプションであり、必要に応じて**Next**をクリックしてダイアログの次のページに進むことができます。 1. **Generate Preview**を選択して、インポートを実行する前にデータのプレビューを表示します。 データプレビューに表示されるデータは、ソースから近似されたものです。実際にインポートされるデータではありません。 2. データが期待どおりに見えることを確認します。 ![](/assets/snippet-data-preview-2024-02-09.27dc5fd8772fca4f7f44ab28c00476ae1894744fe1e75d06932628929cc7bff1.4e139be3.png) 3. **Next**を選択します。 ### 高度な設定 高度な設定では、推測されたプロパティをカスタマイズできます。必要に応じて以下のセクションを編集してください。 ![](/assets/mceclip9.935431565af730280ac09a18383fe801e467de0fb2782da064a2697b16b10bac.f5e2eeff.png) - **Decoders**: OneDriveに保存されているエンコードされたファイルに応じて、推測されたファイルデコーダーを変更できます。サポートされているファイルデコーダー: - Gzip - Bzip2 - Zip - OpenPGP Decryption - **Parser**: 必要に応じてファイルパーサーを更新します。 - **Columns**: - **Name**: カラムの名前を変更します。カラム名にサポートされている文字は、小文字のアルファベット、数字、「_」(アンダースコア)のみです。 - **Type**: 値を指定された型として解析し、その型をTreasure Dataスキーマの一部として保存します。 - **boolean** - **long** - **timestamp**: Treasure DataではString型としてインポートされます(例: 2017-04-01 00:00:00.000) - **double** - **string** - **json** - **Retry Limit**: オプション。システムがあきらめる前にエラーが発生したときの再試行回数。デフォルトは7 - **Initial retry time wait in millis**: オプション。1回目と2回目の試行の間の時間(ミリ秒)。デフォルト: 500ミリ秒 - **Max retry wait in millis**: オプション。2回目以降のすべての試行の間の時間(ミリ秒)。デフォルト: 300000 ~ 5分。 - **HTTP Connect Timeout**: オプション。HTTP接続タイムアウトの時間(ミリ秒)。デフォルト: 60000 ~ 1分。 - **HTTP Read Timeout**: オプション。HTTP読み取りタイムアウトの時間(ミリ秒)。デフォルト: 300000 ~ 5分。 - **Minimum task size**: インポートフォルダに多数の小さなファイルが含まれている場合、インポートパフォーマンスの低下を引き起こす可能性があります。パフォーマンス向上のため、この値を設定して、1つのタスクで複数のファイルを結合します。例: 4000000 ~ 4MB ### ターゲットデータベースとテーブルの選択 既存のデータベースとテーブルを選択するか、新しいものを作成します。 ![](/assets/blobid5.1c60c3ae94aaf3055bd04dc438a7def51c19ff11efd7562a5c370c092f3ac2ae.f5e2eeff.png) 新しいデータベースを作成し、データベースに名前を付けます。**Create new table**についても同様の手順を完了します。 既存のテーブルにレコードを**追加**するか、既存のテーブルを**置換**するかを選択します。 デフォルトキーではなく、異なる**パーティションキーシード**を設定したい場合は、ポップアップメニューを使用して指定できます。 ### スケジューリング **Schedule**タブで、1回限りの転送を指定するか、自動化された定期転送をスケジュールできます。**Once now**を選択した場合は、**Start Transfer**を選択します。**Repeat…**を選択した場合は、スケジュールオプションを指定してから、**Schedule Transfer**を選択します。 ![](/assets/blobid6.45a9930925d1a2f78f9f4232666c9bb1707e377546e0dfbecc7ab327d35a1bbf.f5e2eeff.png) New Source名を入力し、**DONE**を選択します ![](/assets/blobid7.a6ff4d19488f5ee97043de52977c118d69fc39cf7447b73fd07cb32223d34ddd.f5e2eeff.png) 転送が実行された後、**Databases**タブで転送の結果を確認できます。 ![](/assets/blobid8.531fd752bd7fe08078c6d98b79f25da50893eb42c86977a445cfe694e7bde706.f5e2eeff.png) ## コマンドラインを使用したOneDrive接続の作成 TD Toolbeltを使用して接続を設定できます。 ### 独自のRefresh_Tokenの取得 CLIからジョブを発行するには、**client_id**、**client_secret**、および**refresh_token**が必要です。 開発者アカウントを登録し、Azure App Registration Portal [https://portal.azure.com/#home](https://portal.azure.com/#home)にアクセスします。検索ボックスで、App Registrationを検索します ![](/assets/mceclip10.a3de3a519ef47a897fdde953ebbc3704d025933a84c67f665ca7337da4e7e73d.f5e2eeff.png) **New Registration**を選択します。 ![](/assets/blobid24.b554a3ea8b913c0e7016b9cb19c596b55a1a1ca4b109aceb7843134aa8cac56d.f5e2eeff.png) **App Name**を入力し、**Account Type**を選択し、図のように**Redirect URI**を入力します。**Register**を選択します。 ![](/assets/blobid30.d76eedf22042193376fcb9a2180683cde504c0d3813130c2274f3a9bc4b72c62.f5e2eeff.png) **App Permissions**タブから、**Add a Permission**を選択します。 ![](/assets/blobid26.ec753e52dcd1fb45d410d4497368f57d0a943b7f62e30da0ee66394a527196b3.f5e2eeff.png) **Request API permissions**ウィンドウから、**Microsoft Graph** -> **Delegated permissions**を選択し、図のように権限を追加します: ![](/assets/mceclip12.9f76be00862cd2a00c60924dec7dd4393caaa8b6eb0df55a349970b9bc8d89fc.f5e2eeff.png) **Certificates & secrets**タブから、**New client secret**を選択し、**Never**と**Add**を選択します。 ![](/assets/blobid27.1736523178ee28566b7de0fcf39a7fd573ba498d39037ef81ca7714593e68cbe.f5e2eeff.png) 新しい**client secret**キーが図のように作成されます: ![](/assets/blobid28.098e0a5fd77c642d4f48912bc335ed714271e576b2a7edd6c70bada858d924c1.f5e2eeff.png) Overviewタブから、図のように**client id**が表示されます: ![](/assets/blobid29.37fd3ca46e0a133ca5937cf6e3d987d1db51eb93dbe88e1a5fa12dbc6d83f967.f5e2eeff.png) このURLのclient_idを置き換えて、ブラウザで開きます。 ``` https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=xxxxxx&response_type=code&redirect_uri=http://localhost&response_mode=query&scope=offline_access files.readwrite.all openid sites.readwrite.all files.readwrite.appfolder&state=1234 ``` **Permission Request**ウィンドウを承認します。 ![](/assets/mceclip13.a25a6ea1e79a3b3046f956c09bcdc3b9278934f106ed6d926958b80e057084f5.f5e2eeff.png) アドレスバーから**code**をコピーします: ![](/assets/mceclip14.0d91f944a300db6359191f6a78f9d40f0c1882b549eac7062a787fb10f73bcf3.f5e2eeff.png) **code、client_id、client_secret**を置き換えて、[curl](https://curl.haxx.se/docs/manpage.md)コマンドを実行し、**access_token**と**refresh_token**を取得します ``` curl -X POST \ https://login.microsoftonline.com/common/oauth2/v2.0/token \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'client_id={xxxxxx}&client_secret={xxxxx}&grant_type=authorization_code&scope=offline_access%20files.readwrite.all%20openid%20sites.readwrite.all&code={xxxxxx}&redirect_uri=http://localhost' ``` ## Treasure Data Toolbeltのインストール ターミナルを開き、以下のコマンドを実行して最新の[TD Toolbelt](https://toolbelt.treasuredata.com/)をインストールします。 ``` $ gem install td $ td --version 0.16.1 ``` ### 設定ファイルの作成 (seed.yml) テキストエディタを使用して、seed.ymlというファイルを作成します。以下の情報をコピーして貼り付け、プレースホルダーテキストをOneDriveの情報に置き換えます。この設定は、「replace」モードが指定されているため、**/xxx**フォルダからすべてのファイルコンテンツをターゲットデータベースにダンプします。利用可能なoutモードの詳細については、付録を参照してください。 アカウントがBusinessアカウントプランの場合 ```yaml in: type: one_drive refresh_token: 'xxxxxxxxxxxxxxxx' client_id: 'xxxxxxxxxx' client_secret: 'xxxxxx' account_type: business domain_name: xxxx.xxxx.com server_relative_path: /xxx/xx folder_path: /xxx out: mode: append ``` アカウントがPersonalアカウントプランの場合 ``` in: type: one_drive refresh_token: 'xxxxxxxxxxxxxxxx' client_id: 'xxxxxxxxxx' client_secret: 'xxxxxx' account_type: personal folder_path: /xxx out: mode: append ``` ### 認証 OneDriveでの認証のために`client_id`、`client_secret`、および`refresh_token`を指定します。詳細については、付録の「独自のrefresh_tokenの取得」を参照してください。 domain_name、server_relative_path、およびfolder_pathを指定します。付録のドメイン名と相対パスを参照してください。 ### Guess Fieldsコマンドの実行 (load.ymlファイルの生成) スキーマレスデータベースからデータを取得する場合は、guessコマンドを使用します。ターミナルから以下のコマンドを実行します: ``` $ td connector:guess seed.yml -o load.yml ``` connector:guessは、ターゲットデータを自動的に読み取り、データ形式をインテリジェントに推測します。 load.ymlファイルを開きます。ファイル形式、エンコーディング、カラム名、型を含む、推測されたファイル形式定義が表示されます。 設定キーと説明は以下のとおりです: | Config key | Type | Required | Description | | --- | --- | --- | --- | | `account_type` | string | yes | OneDriveアカウントプラン。**business** | | `client_id` | string | yes | OAuth client_id | | `client_secret` | string | yes | OAuth client_secret | | `refresh_token` | string | yes | 独自のrefresh_tokenの取得を参照してください。 | | `is_shared_root` | boolean | no | **business** **accout_type**のみに適用。**true**の場合、直接共有されたファイルをインポート(共有フォルダとは異なります) | | `is_shared_folder` | boolean | no | **personal** **account_type**のみに適用。共有されたファイル/フォルダをインポート。 | | `domain_name` | string | no | **account_type** = **business**の場合に必要。 | | `server_relative_path` | string | no | **account_type** = **business**の場合に必要。 | | `folder_path` | string | no | **is_shared_root** = **false**の場合に必要 | | `last_modified_time` | string | no | 指定されたタイムスタンプ以降に変更されたファイルのみをインポート。タイムゾーンはUTC。このパラメータが空の場合、すべてのファイルをインポート。タイムスタンプ形式: **yyyy-MM-dd'T'HH:mm:ss.SSSZ** 例: *2019-05-01T10:00:00.121Z* | | `name_match_pattern` | string | no | 指定されたファイル名regexに一致するファイルのみをインポート。ファイル名Regexマッチングを参照 | | `incremental` | boolean | no | 繰り返し実行する際、最後のインポート以降のファイルのみをインポートしようとします。 | | `retry_limit` | integer | no | オプション。システムがあきらめる前にエラーが発生したときの再試行回数。デフォルトは7回 | | `retry_initial_wait_millis` | integer | no | 1回目と2回目の試行の間の時間(ミリ秒)。デフォルト: 500ミリ秒 | | `max_retry_wait_millis` | integer | no | 2回目以降のすべての試行の間の時間(ミリ秒)。デフォルト: 300000 ~ 5分 | | `connection_timeout_millis` | long | no | HTTP接続タイムアウトの時間(ミリ秒)。デフォルト: 60000 ~ 1分 | | `read_timeout_millis` | long | no | HTTP読み取りタイムアウトの時間(ミリ秒)。デフォルト: 300000 ~ 5分。 | | `min_task_size` | long | no | インポートフォルダに多数の小さなファイルが含まれている場合、インポートパフォーマンスの低下を引き起こす可能性があります。パフォーマンス向上のため、この値を設定して1つのタスクで複数のファイルを結合します。例: 4000000 ~ 4MB | personalアカウントプラン、incremental、およびcolumn_optionsを使用した*load.yml*の例。 ```yaml in: type: one_drive refresh_token: 'xxxxxxxxxxxxxxxx' client_id: 'xxxxxxxxxx' client_secret: 'xxxxxx' account_type: personal folder_path: /xxx decoders: - {type: gzip} parser: charset: UTF-8 newline: CRLF type: csv delimiter: ',' quote: '"' escape: '' skip_header_lines: 1 columns: - name: id type: long - name: company type: string - name: customer type: string - name: created_at type: timestamp format: '%Y-%m-%d %H:%M:%S' out: {mode: append} exec: {} ``` ### オプション: インポートするデータのプレビュー プレビューコマンドを使用して、システムがデータをどのように解析するかをプレビューできます。 ``` $ td connector:preview load.yml +-------+---------+----------+---------------------+ | id | company | customer | created_at | +-------+---------+----------+---------------------+ | 11200 | AA Inc. | David | 2015-03-31 06:12:37 | | 20313 | BB Imc. | Tom | 2015-04-01 01:00:07 | | 32132 | CC Inc. | Fernando | 2015-04-01 10:33:41 | | 40133 | DD Inc. | Cesar | 2015-04-02 05:12:32 | | 93133 | EE Inc. | Jake | 2015-04-02 14:11:13 | +-------+---------+----------+---------------------+ ``` `guess`コマンドは、ソースデータファイルに3行以上と2列以上が必要です。これは、ソースデータのサンプル行を使用してカラム定義を推測するためです。 システムがカラム名またはカラム型を予期せず検出した場合は、`load.yml`を直接変更して、プレビューを再度実行します。 Data Connectorは、「boolean」、「long」、「double」、「string」、および「timestamp」型の解析をサポートしています。 `preview`コマンドは、指定されたバケットから1つのファイルをダウンロードし、そのファイルの結果を表示します。これにより、プレビューコマンドとissueコマンドの結果に違いが生じる可能性があります。 ### ロードジョブの実行 td connector:issueを使用してジョブを実行します。以下が必要です: - スケジュールの名前 - cron形式のスケジュール - データが保存されるデータベースとテーブル - Data Connector設定ファイル ``` $ td connector:issue load.yml --database td_sample_db --table td_sample_table --time-column created_at \ daily_onedrive_import ... ``` データベースまたはテーブルがTDに存在しない場合、td connector:issueは失敗します。 Treasure Dataのストレージは時間によってパーティション化されているため、--time-columnオプションを指定することをお勧めします([データパーティショニング](https://docs.treasuredata.com/smart/project-product-documentation/data-partitioning-in-treasure-data)を参照)。--time-columnオプションが使用できない場合、データコネクタは最初のlongまたはtimestampカラムをパーティショニング時刻として選択します。--time-columnで指定するカラムの型は、longまたはtimestamp型のいずれかである必要があります(使用可能なカラム名と型を確認するには、プレビュー結果を使用してください)。timeカラムは出力の最後に使用できます。 ``` $ td connector:issue load.yml --database td_sample_db --table td_sample_table \ --time-column created_at ``` データにtimeカラムがない場合は、add_timeフィルタを使用して追加できます。以下のように設定ファイルにadd_timeフィルタを追加することで、「**time**」カラムを追加します。 ```yaml in: type: onedrive ... filters: - type: add_time from_value: mode: upload_time to_column: name: time out: type: td ``` 詳細は[add_timeフィルタプラグイン](https://docs.treasuredata.com/smart/project-product-documentation/add_time-filter-function)を参照してください。 このインテグレーションはサーバー側でレコードをソートしません。時間ベースのパーティショニングを効果的に使用するには、インポートジョブを実行する前にファイル内のレコードをソートしてください。 timeというフィールドがある場合、--time-columnオプションを指定する必要はありません。 ``` $ td connector:issue load.yml --database td_sample_db --table td_sample_table ``` ### スケジュールされた実行 定期的なOneDriveインポートのために、定期的なデータコネクタの実行をスケジュールできます。高可用性を確保するために、スケジューラを慎重に設定しています。この機能を使用することで、ローカルデータセンターにcronデーモンを配置する必要がなくなります。 スケジュールされたインポートでは、OneDrive用データコネクタは**name_match_pattern**パラメータに一致するすべてのオブジェクトをインポートします。**incremental**および**last_modified_time**パラメータは、最後のインポート以降に**folder_path**に更新または追加されたファイルをインポートするために使用されます。[増分ロードの仕組み](https://docs.treasuredata.com/articles/project-integrations/onedrive-import-integration#OneDriveImportIntegration-HowIncrementalLoadingWorks)を参照してください。 以下は、出力に「append」モードを組み合わせた増分モードを使用したseedファイルの例です。 ```yaml in: type: one_drive refresh_token: 'xxxxxxxxxxxxxxxx' client_id: 'xxxxxxxxxx' client_secret: 'xxxxxx' account_type: personal folder_path: /xxx incremental: true decoders: - {type: gzip} parser: charset: UTF-8 newline: CRLF type: csv delimiter: ',' quote: '"' escape: '' skip_header_lines: 1 columns: - name: id type: long - name: company type: string - name: customer type: string - name: created_at type: timestamp format: '%Y-%m-%d %H:%M:%S' out: {mode: append} exec: {} ``` ### スケジュールの作成 td connector:createコマンドを使用して新しいスケジュールを作成できます。以下が必要です: - スケジュールの名前 - cron形式のスケジュール - データが保存されるデータベースとテーブル - Data Connector設定ファイル ``` $ td connector:create \ daily_import \ "10 0 * * *" \ td_sample_db \ td_sample_table \ load.yml ``` Treasure Dataのストレージは通常時間によってパーティション化されているため、--time-columnオプションを指定することを忘れないでください。 ``` $ td connector:create \ daily_import \ "10 0 * * *" \ td_sample_db \ td_sample_table \ load.yml \ --time-column created_at ``` `cron`パラメータは、`@hourly`、`@daily`、`@monthly`の3つの特別なオプションも受け入れます。 デフォルトでは、スケジュールはUTCタイムゾーンで設定されます。-tまたは--timezoneオプションを使用して、タイムゾーンでスケジュールを設定できます。`--timezone`オプションは、「Asia/Tokyo」、「America/Los_Angeles」などの拡張タイムゾーン形式のみをサポートします。PST、CSTなどのタイムゾーンの略語は*サポートされておらず*、予期しないスケジュールにつながる可能性があります。 ## OneDriveからのインポートに関するFAQ **Q: 誰かが私と共有したフォルダをインポートするにはどうすればよいですか?** Business Account Plan: **ドメイン名**、サーバーの**相対パス**、および**フォルダパス**が必要です。ブラウザでShared With Meタブに移動します: ![](/assets/blobid9.1617ba2a0b3addd9f71aec355788d10b94bcb194e0423213103a4d319226c629.f5e2eeff.png) 共有フォルダを選択し、ドメイン名と相対パスで説明されているように、ドメイン名、相対パス、およびフォルダパスをメモします。 Personal Account Plan **This is a shared folder** (**is_shared_folder**)フィールドを**true**に設定し、画像に示すように共有フォルダにドリルダウンする必要があります。 ![](/assets/blobid11.ddec2a852a6f64067e1f603ddb333f42126b25971922e344c8cae3e645c0bc8f.f5e2eeff.png) 共有フォルダ**f1**を選択し、インポートする**f2**ターゲットフォルダに移動します。 ![](/assets/blobid23.7ae69eeb9d77aab553ed08ef0cfd11a75888f2cc19ba8b4edea38283517f1a39.f5e2eeff.png) 図のようにフォルダパスパラメータを入力します: folder_path: **/f1/f2** (注意: フォルダ**f0**は共有されていません) ![](/assets/blobid22.8b2fedb56b7fcb2f12070334fc821fabf195565a21ae6b39fe7b7e3c34c336a1.f5e2eeff.png) **Q: SharePointコレクションからファイルをインポートするにはどうすればよいですか?** SharePointコレクションからファイルをインポートするには、**ドメイン名**、サーバーの**相対パス**、および**フォルダパス**が必要です。ドメイン名と相対パスを参照してください。 **Q: 「Attribute type is required but not set」というエラーが発生したのはなぜですか?** インポートフォルダに空のファイルが含まれているか、ファイルに改行文字がありません。空のファイルを削除し、インポートファイルに少なくとも2行のデータがあることを確認してください。 **Q: アプリにアクセスするためにOneDrive管理者ユーザーから承認を得る必要があります。管理者から承認を得た後、OAuth接続が接続リストに表示されません** これは、コネクタがそのようなOAuthフロー(OAuthで承認を要求する)をサポートしていないためです。したがって、OneDrive管理者ユーザーに代わって認証を作成するよう依頼してください。 ## 付録 ### Outプラグインのモード load.ymlファイルのoutセクションでファイルインポートモードを指定できます。 outセクションは、データがTreasure Dataテーブルにインポートされる方法を制御します。 例えば、データを追加するか、Treasure Dataの既存のテーブルのデータを置き換えるかを選択できます。 出力モードは、データがTreasure Dataに配置される際にデータを変更する方法です。 - **Append** (デフォルト): レコードはターゲットテーブルに追加されます。 - **Replace** (td 0.11.10以降で利用可能): ターゲットテーブルのデータを置き換えます。ターゲットテーブルに対して行われた手動のスキーマ変更はそのまま残ります。 例: ``` in: ... out: mode: append in: ... out: mode: replace ```