ナレッジベース

Jet ベースのデータ ソースでのデータおよびファイル サイズの制限


発行: 11 Apr 2017
最終修正日: 20 Jul 2023

問題

Excel、Access、プレーン テキスト (CSV) ファイルなど、Microsoft Jet データベース エンジンに基づいたデータ ソースに接続しようとすると、Jet データ エンジンの制限に関連した予期しない問題が発生します。Microsoft Jet テクノロジーは、Tableau Desktop 8.2 以前の Excel および CSV ファイルで、または Tableau Desktop 8.2 以降でレガシー接続のオプションを使用している場合に使用されます。

データまたはファイル サイズの既知の制限

  • サイズの大きい CSV ファイルの操作時に問題が発生する。
    明示または文書化されたファイルサイズ制限はありませんが、一般的なガイドラインとして、CSV ファイルのサイズは 4 GB 未満に保持してください。4 GB を超える CSV ファイルに接続可能な場合でも、抽出を行うと、次のようなエラーを招くことがあります。

    Query too complex (クエリが複雑すぎます)

    また、大きな CSV ファイルに接続しようとすると、コンピューターに十分なディスク スペースがある場合でも、十分な一時ディスク スペースがないことを示すエラーが発生する可能性があります。

  • 表のサイズが 255 列 (フィールド) に制限される。通常、Jet は、255 列の制限に達すると失敗します。

  • ユニオンに 255 を超える列 (フィールド) が含まれている。ユニオンに 255 を超える列が含まれていると、次のエラーが発生します。

    Database error 0x800004005: Too many fields defined (データベース エラー 0x800004005: 定義されているフィールドが多すぎます)

    注: カスタム SQL クエリ内で UNION ALL ステートメントを使用すると、ユニオンに 255 を超える列が含まれる場合があります。UNION ALL を使用する場合、ユニオン内の列の合計数は UNION ALL ステートメントが使用されるたびにカウントされる列数と等しくなります。これにより、列数が列制限を超えることがあります。たとえば、それぞれ 102 列の 3 つのテーブルに対して UNION ALL を実行するとします。SELECT * FROM "Table1" UNION ALL SELECT * FROM "Table2" UNION ALL SELECT * FROM “Table3” は 306 列をカウントするため、Jet 列制限を超えます。

  • Access データ ソースのメモ フィールドが 255 文字で切り捨てられる場合がある。

  • 表とファイルの名前が 64 文字に制限される。テーブル名またはファイル名が 64 文字の制限を超えている場合に、Tableau からデータ ソースに接続すると、次のエラー メッセージのいずれかが表示されることがあります。
    • An error occurred while communicating with data source <data-source-file-name>... (データ ソース <data-source-file-name> との通信中にエラーが発生しました。) パーミッションを確認してください。
    • <data-source-file-name> is not a valid file name....(<data-source-file-name> は有効なファイル名ではありません。) ファイル名に句読点やその他の無効な文字がないか確認してください。
    • Unable to open the text file.... (テキスト ファイルを開くことができません。) ファイルの種類とパーミッションを確認してください。
    • The table <table-name> does not exist. (表 <table-name> が存在しません。)
  • フィールド名が 255 文字に制限される。Jet はもっと長い名前のフィールドを読み取ることができますが、それらのフィールドに対してさまざまな操作を実行すると、"不明な" エラーが発生します。この制限により、抽出を作成したときに、何も表示されずにフィールドが消えることもあります。

環境

  • Tableau Desktop
  • Windows
  • Excel
  • Access
  • テキスト ファイル (CSV)

解決策

解決策

  • 列、表、またはファイル名が文字数の制限を超えていることが原因で問題が発生した場合、問題を解決する最も確実な方法は、データ ソース レベルで名前を変更することです。
  • データ ソースに 255 を超える列が含まれる場合や、データ ソースのファイル サイズが非常に大きい場合は、最初に表を小さなセクション (各 255 列未満) に分割すると、Tableau からデータ ソースに正常に接続できる場合があります。その後、Tableau で、複数のテーブルを使用して接続し、結合します。これを行うには、結合するための一意のキーとして使用するフィールドが必要になります。たとえば、文字列データ型に変換した行番号フィールドを作成します。
注: この回避策により、データに接続できたとしても、[データの表示] を選択すると、次のエラーが発生する可能性があります。
Database error 0x800004005: Too many fields defined. (データベース エラー 0x800004005: 定義されているフィールドが多すぎます。)
  • 表に接続した後でパフォーマンスが低下した場合は、抽出の作成が必要になる可能性があります。
  • このエラーが発生した場合は、コンピューターに十分な一時ディスク スペースがない可能性があります。十分なスペースがある場合は、Windows の Temp フォルダーで、名前が JET で始まり、ファイル サイズが約 2 GB の .tmp ファイルがないかどうかを確認してください。

原因

これは、Jet が生成する一時ファイルのサイズ制限が 2 GB であることが原因です。

詳細情報


Jet 制限は、次の場所で発生する場合があります。
  • Tableau Desktop 8.1 以前に作成されたワークブック
  • Excel およびテキスト ファイルのデータ ソース
  • Microsoft Access データ ソース
  • Jet ベースのレガシー接続を使用するワークブック (以下の重要な注を参照)
Jet データベース エンジンの制限を回避するには、Excel やテキスト ファイルのデータ ソースをアップグレードすることを検討してください。

注: "不明な" エラーのもう 1 つの原因として、古いまたは破損した Jet ドライバーが挙げられます。

重要: Tableau 2019.1 以降、Excel またはテキスト ファイルのレガシー接続を新規作成できなくなりました。レガシー接続に対するサポートはすべて終了しますが、これらのレガシー接続で作成された既存のワークブックは 2019.2 まで継続して動作します。レガシー接続を使用した代替手段については、Tableau Community の「Legacy Connection Alternatives」ドキュメントを参照してください。


この記事で問題は解決しましたか?