次の方法で共有


ODBC ベースのコネクタのテストとトラブルシューティング

ODBC ベースのコネクタを構築している間、時々コネクタのテストとトラブルシューティングを行うことをお勧めします。 このセクションでは、いくつかのテストおよびトラブルシューティング ツールをセットアップして使用する方法について説明します。

Power BI Desktop のトレース ツールを使用する

ODBC ベースのコネクタのテストとトラブルシューティングのための基本的なツールの 1 つは、Power BI Desktop でトレースを使用して、エラーが発生する理由を判断する機能です。

Power BI Desktop でトレースを有効にするには:

  1. [移動] > [オプションと設定] > [オプション] に移動します。
  2. [診断] タブを選択します。
  3. [トレースを有効にする] オプションを選びます。
  4. [トレース フォルダーを開く] リンクを選びます (%LOCALAPPDATA%/Microsoft/Power BI Desktop/Traces になっているはずです)。
  5. 既存のトレース ファイルを削除します。
  6. テストを行ってください。
  7. Power BI Desktop を閉じて、すべてのログ ファイルがディスクにフラッシュされるようにします。

次に示すのは、Power BI Desktop で最初のテストを行う手順です。

  1. Power BI Desktop を閉じます。
  2. トレース ディレクトリをクリアします。
  3. Power BI Desktop を開き、トレースを有効にします。
  4. データ ソースに接続し、直接クエリ モードを選びます。
  5. ナビゲーターでテーブルを選んで、[編集] を選びます。
  6. 次のようなさまざまな方法でクエリを操作します。
    • 最初の N 行を取得します (例: 10)。
    • さまざまなデータ型 (int、string、bool など) に等値フィルターを設定します。
    • 他の範囲フィルター (より大きい、より小さい) を設定します。
    • NULL/NOT NULL でフィルター処理します。
    • 列のサブセットを選択します。
    • さまざまな列の組み合わせで集計やグループ化します。
    • 他の列から計算される列を追加します ([C] = [A] + [B])。
    • 1 つの列または複数の列で並べ替えます。
  7. フォールディングが失敗する式では、警告バーが表示されます。 エラーを記録し、ステップを削除して、次のテスト ケースに移動します。 エラーの原因に関する詳細は、トレース ログに出力されているはずです。
  8. Power BI Desktop を閉じます。
  9. トレース ファイルを新しいディレクトリにコピーします。
  10. 選択したテキスト エディタでトレース ファイルを開きます。
  11. トレース ファイルで OdbcQuery/FoldingWarningエントリを検索します。 これらのエントリには、クエリ エンジンがこの操作ではクエリの折りたたみが不可能であると判断する理由に関する詳細情報が含まれている必要があります。

単純なクエリが機能するようになったら、DirectQuery シナリオ (レポート ビューでのレポートの構築など) を試すことができます。 DirectQuery モードで生成されるクエリは非常に複雑です (つまり、副選択、COALESCE ステートメント、集計が使用されます)。

DirectQuery モードでの文字列の連結

クエリ フォールディング ロジックの一部として、M エンジンにより基本的な型サイズ制限の検証が行われます。 基になるデータベース タイプの最大サイズをオーバーフローする可能性がある 2 つの文字列を連結しようとすると、折りたたみエラーが発生する場合は、次のようにします。

  1. 文字列連結のオーバーフローが発生した場合に、データベースが CLOB 型へのアップコンバートをサポートできることを確認してください。
  2. Odbc.DataSourceから trueTolerateConcatOverflow オプションを設定します。

Note

DAX CONCATENATE 関数 は現在、Power Query/ODBC 拡張機能ではサポートされていません。 拡張機能の作成者は、計算列 ([stringCol1] & [stringCol2]) を追加することで、クエリ エディターで文字列の連結が機能するようにする必要があります。 将来的に CONCATENATE 操作をフォールディングする機能が追加されるときは、既存の拡張機能とシームレスに動作するはずです。