次の方法で共有


一般的な問題

Power Query

並べ替えの保持

データを並べ替える場合、ダウンストリームの操作で並べ替え順序が維持されると仮定する場合があります。

たとえば、各店舗の最大売上が最初に表示されるように販売テーブルを並べ替えると、"重複の削除" 操作を実行すると、各店舗の上位売上のみが返される可能性があります。 そして、この操作は実際には機能しているように見えるかもしれません。 ただし、この動作は保証されません。

Power Query では、特定の操作 (スキップやデータ ソースへのオフロードなど) が最適化されるため (独自の順序付け動作が可能)、並べ替え順序は集計 ( Table.Groupなど)、マージ ( Table.NestedJoin など)、重複削除 ( Table.Distinct など) によって保持される保証はありません。

この問題を回避するには、いくつかの方法があります。 いくつかの推奨事項を次に示します。

  • ダウンストリーム操作を適用 した後 、並べ替えを実行します。 たとえば、行をグループ化する場合は、さらに手順を適用する前に、各グループの入れ子になったテーブルを並べ替えます。 この方法を示す M コードのサンプルを次に示します。 Table.Group(Sales_SalesPerson, {"TerritoryID"}, {{"SortedRows", each Table.Sort(_, {"SalesYTD", Order.Descending})}})
  • ダウンストリーム操作を適用する前に、( Table.Bufferを使用して) データをバッファーします。 場合によっては、この操作により、ダウンストリーム操作がバッファー内の並べ替え順序を保持します。
  • ランク付けを使用します。 たとえば、 Table.Distinctを使用する代わりに、重複する値を含む列で並べ替え、タイ ブレーカー列 ( modified_date など) に基づいてランクを付け、ランク 1 行のみを保持するようにフィルター処理することができます。

データ型の推論

Power Query で列のデータ型が正しく検出されない場合があります。 これは、Power Query が最初の 200 行のデータのみを使用してデータ型を推論するためです。 最初の 200 行のデータが行 200 より後のデータと何らかの形で異なる場合、Power Query は間違った種類を選択する可能性があります。 (正しくない型では常にエラーが発生するとは限りません。結果として得られる値が正しくなくなり、問題の検出が困難な場合があります)。

たとえば、最初の 200 行に整数 (ゼロをすべて含むなど) が含まれているが、行 200 より後に 10 進数が含まれている列があるとします。 この場合、Power Query は列のデータ型を整数 (Int64.Type) と推論します。 この推論により、整数以外の数値の小数部が切り捨てられます。

または、最初の 200 行にテキスト形式の日付値を含む列と、行 200 より後の他の種類のテキスト値があるとします。 この場合、Power Query は、列のデータ型を日付と見なします。 この推論により、日付以外のテキスト値が型変換エラーとして扱われます。

型検出は最初の 200 行で機能しますが、データ プロファイルはデータ セット全体で動作できるため、データ プロファイル機能を使用して、クエリ エディターで上位 N 行を超えるエラー (型検出またはその他の任意の数の理由から) を早期に確認することを検討できます。

リモート ホストによって強制的に閉じられた接続

さまざまな API に接続すると、次の警告が表示されることがあります。

Data source error: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host

このエラーが発生した場合は、ネットワークの問題である可能性が最も高くなります。 通常、最初に確認するユーザーは、接続先のデータ ソースの所有者です。 接続を切っているのは自分たちではないと思う場合、途中でプロキシサーバーや中間ルーター/ゲートウェイなどが原因で接続が切れる可能性があります。

これが任意のデータでのみ再現される場合でも、データ サイズが大きい場合でも、ルート上のどこかにネットワーク タイムアウトが発生する可能性があります。 大規模なデータのみを使用する場合は、要求をより小さなチャンクに分割できるように、API でページングがサポートされているかどうかを確認するために、データ ソースの所有者に問い合わせてください。 失敗した場合は、API からデータを抽出する別の方法 (データ ソースのベスト プラクティスに従う) に従う必要があります。

TLS RSA 暗号スイートは非推奨です

2020 年 10 月 30 日より、次の暗号スイートは当社サーバーから非推奨になります。

  • "TLS_RSA_WITH_AES_256_GCM_SHA384"
  • "TLS_RSA_WITH_AES_128_GCM_SHA256"
  • "TLS_RSA_WITH_AES_256_CBC_SHA256"
  • "TLS_RSA_WITH_AES_128_CBC_SHA256"

サポートされている暗号スイートの一覧を次に示します。

  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
  • "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  • "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"
  • "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384"

暗号スイートは、メッセージを暗号化して、クライアント/サーバーと他のサーバー間のネットワーク接続を保護するために使用されます。 現在のセキュリティ プロトコルに準拠するため、上記の暗号スイートのリストを削除します。 2021 年 3 月 1 日以降、お客様は当社の 標準の暗号スイート のみを使用できます。

これらは、接続するサーバーが Power Query Online または Power BI から接続するためにサポートする必要がある暗号スイートです。

Power Query Desktop (Power BI、Excel) では、暗号スイートは制御されません。 Power Platform (Power Platform データフローなど) または Power BI サービスに接続する場合は、OS で有効になっている暗号スイートのいずれかが必要です。 Windows のバージョンをアップグレードするか、Windows TLS レジストリを更新し、サーバー エンドポイントがこれらの暗号の 1 つをサポートしていることを確認します。

サーバーがセキュリティ プロトコルに準拠していることを確認するには、TLS 暗号とスキャナー ツールを使用してテストを実行します。 例として 、SSLLABS があります。

お客様は、2021 年 3 月 1 日までにサーバーをアップグレードする必要があります。 TLS 暗号スイート オーダーの構成についての詳細は、トランスポート層セキュリティ (TLS)をご参照ください。

証明書の失効

今後のバージョンの Power BI Desktop では、SSL チェーン内の証明書に証明書失効状態がない場合に、デスクトップからの SSL 接続エラーが発生します。 これは現在の状態からの変更であり、証明書が明示的に取り消された場合にのみ、失効によって接続エラーが発生しました。 その他の証明書の問題には、無効な署名や証明書の有効期限が含まれる場合があります。

会社のプロキシ サーバーなど、失効状態が削除される可能性がある構成があるため、失効情報のない証明書を無視する別のオプションを提供します。 このオプションを使用すると、特定の場合に失効情報が削除されるが、セキュリティを完全に下げて作業を続けたくない状況が可能になります。

これはお勧めしませんが、ユーザーは引き続き失効チェックを完全にオフにできます。

エラー: 評価が取り消されました

Power Query は、バックグラウンド分析を無効にし、クエリの更新処理中にクエリを切り替えたり、クエリ エディターを閉じたりすると、"評価は取り消されました" というメッセージを返します。

エラー: キーがテーブル内の行と一致しませんでした

Power Query で 、キーがテーブル内の行と一致しなかったというエラーが返される理由は多数あります。 このエラーが発生すると、マッシュアップ エンジンは検索対象のテーブル名を見つけることができません。 このエラーが発生する理由は次のとおりです。

  • データ ソース自体など、テーブル名が変更されました。
  • テーブルへのアクセスに使用されるアカウントには、テーブルを読み取るために十分な特権がありません。
  • 1 つのデータ ソースに対して複数の資格情報を使用できます。 これは、個人用クラウド接続を使用する場合、Power BI サービスではサポートされていません。 このエラーは、たとえば、データ ソースがクラウド データ ソースであり、複数のアカウントを使用して異なる資格情報で同時にデータ ソースにアクセスしている場合に発生する可能性があります。 データ ソースがオンプレミスの場合は、オンプレミス データ ゲートウェイを使用する必要があります。

制限事項: Windows 認証を使用する場合のゲートウェイ マシンのドメイン参加要件

オンプレミス ゲートウェイで Windows 認証を使用するには、ゲートウェイ マシンをドメインに参加させる必要があります。 これは、"ゲートウェイ経由の Windows 認証* で設定されたすべての接続に適用されます。 データ ソースへのアクセスに使用される Windows アカウントでは、Windows ディレクトリとゲートウェイのインストール内の共有コンポーネントへの読み取りアクセスが必要になる場合があります。

制限事項: テナント間の OAuth2 更新は Power BI サービスではサポートされていません

OAuth2 を使用して Power BI サービスからデータ ソースに接続する場合、データ ソースは Power BI サービスと同じテナント内にある必要があります。 現在、マルチテナント接続シナリオは OAuth2 ではサポートされていません。

制限事項: カスタム AD FS 認証エンドポイントは Power BI サービスではサポートされていません

カスタム Active Directory フェデレーション サービス (AD FS) 認証エンドポイントを使用する機能は、Power BI サービスではサポートされていません。 ユーザーが次のエラーを発生する可能性があります。 リソースによって報告されたトークン サービスが信頼されていません

制限事項: ゲスト アカウントはサポートされていません

Power Query コネクタを使用してテナントのゲスト アカウントを使用してデータに接続することは現在サポートされていません。

Expression.Error: 評価でスタック オーバーフローが発生し、続行できません

スタック オーバーフロー エラーは、M コードのバグによって発生する可能性があります。 たとえば、次の関数は、何らかの終了条件なしで繰り返しそれ自体を呼び出すので、スタック オーバーフローを生成します。 このような関数自体を呼び出す関数は、"再帰" 関数と呼ばれます。

let f = (x) => @f(x + 1) in f(0)

M コードのスタック オーバーフローを解決する一般的な方法を次に示します。

  • 予期される終了条件に達したときに、再帰関数が実際に終了することを確認します。
  • 再帰をイテレーションに置き換えます (たとえば、List.Transform、List.GenerateList.Accumulate などの関数を使用します)。

Expression.Error: 評価でメモリが不足し、続行できません

"メモリ不足" エラー (または OOM) は、非常に大きなテーブルに対してメモリを大量に消費する操作が多すぎることが原因で発生する可能性があります。 たとえば、次の M コードでは、10 億行を一度にメモリに読み込もうとするため、OOM が生成されます。

Table.Buffer(Table.FromList({1..1000000000}, Splitter.SplitByNothing()))

メモリ不足エラーを解決するには、並べ替えや結合、グループ化、重複排除などのメモリ集約型操作を、ソースに統合するか、可能な場合は削除することで最適化します。 たとえば、並べ替えは多くの場合不要です。

プライベート エンドポイントがストレージに構成されている場合、Power Query Online はパブリック エンドポイント経由で接続できません

ストレージ アカウントへのプライベート エンドポイントが構成されている場合、Power Query Online は常にプライベート リンク アドレスを解決し、プライベート エンドポイント構成でパブリック アクセスが "許可" に設定されている場合でも、パブリック インターネット経由で接続することはできません。

この動作は、プライベート エンドポイントがパブリック接続よりも優先されるために発生します。 その結果、ゲートウェイなしで接続しようとすると失敗します。

Dataflows

データフローの更新を取り消す

場合によっては、データフローの更新を開始しますが、開始した後、データを更新する前にもう 1 つ変更する必要がある場合があります。 その場合は、更新が完了するまで待つ必要があります。 プロセスが既にデータの取得に取り組んでおり、ワークスペースまたは環境内のテーブルの更新中に更新を停止することは現在サポートされていません。

今後、データフローの更新を取り消すサポートを追加する予定です。