はじめに
PowerBIアドベントカレンダー9日目の記事です。
初めまして、普段PowerBIとSnowflakeを繋いでガチャガチャお仕事をしている@hotate_2235といいます。よろしくお願いします。(こんな記事書いたりしてました。)
お仕事で困ったエラーまとめと知見集
今回の記事では、三週間(+来週分)にわたって記事にしてきた、PowerBIとSnowflakeを繋いで利用した際のエラーとその解消法、知見をまとめていきたいと思います。
ディメンションテーブルを使ったフィルターが安定しない
詳細記事
症状
ディメンションテーブルを元にファクトテーブルへフィルターをかけようとすると、クエリが複雑すぎるから簡単にしてくれというエラーが出る。
状況
- 接続に使うPCのPowerBIライセンス:pro
- 接続時の認証方式:キーペア
- 接続形式:fact、dimどちらもネイティブクエリを用いたdirect query接続
- snowflakeへのクエリ:見たところ異常なし
- フィルターの掛け方:factテーブルに、dimをリレーションして、dimをフィルター項目(+行レベルセキュリティ対象)として利用
- 全てのスライサーを適用ボタンを利用
解決策
ディメンションテーブルをdirect queryではなくimportモードで取り込む
知見
フィルター選択のためのテーブルをdirect queryで取得するようにしていると、うまく機能しないことがあるので、importモードで取り込むことを検討した方がよい。
service版にレポートを発行するとセマンティックモデルが切断された上、接続設定を再入力しても適用できない。
詳細記事
(来週投稿予定)
症状
- レポートをpowerbi serviceに発行すると、セマンティックモデルから切断される
- セマンティックモデルのクラウドデータソース設定をそもそも変更できない
状況
- 接続に使うPCのPowerBIライセンス:pro
- 接続時の認証方式:キーペア
- 接続形式:ネイティブクエリを用いたdirect query接続
- レポート上のテーブルソース:importモードで取り込んだローカルexcelファイルと、direct queryモードで取り込んだsnowflakeテーブルの二種類
解決策
データソースから、ローカルのExcelファイルを削除し、Snowflake側に一元化する。
知見
PowerBI Serviceにおいて、発行するレポートでネイティブクエリを使用している場合、Excelなどのローカルファイルとクラウド上DWHの二種類がデータソースになると、データソース設定が上手くいかない場合がある
取れているはずのデータが表示されない
詳細記事
症状
ネイティブクエリを使ってデータ取得を行なっている際に、別のテーブルとリレーションを結んだ途端、テーブルビジュアルのレコードが表示されなくなる。
状況
- 接続に使うPCのPowerBIライセンス:pro
- 接続時の認証方式:キーペア
- 接続形式:ネイティブクエリを用いたdirect query接続
- snowflakeへのクエリ:見たところ異常なし
- フィルターの掛け方:factテーブルに、dimをリレーションして、dimをフィルター項目として利用(boolean管理)
解決策
ディメンションテーブルにおいて、'boolean'を用いてフラグ管理している部分を、単純なテキストの'0/1'によるフラグ管理に置き換える
知見
PowerBIにおいては、booleanによるフラグ管理は上手くいかない場合があるため、0/1のvarcharで管理する方が良い
テーブルをimportモードでないと読み込めないとエラーが出る
詳細記事
症状
SnowflakeとPowerBIを接続し、キーペア認証をしており、アクセスしたいデータベースとスキーマ、テーブルもプレビュー出来るが、なぜかDirect Queryで接続しようとすると、対応していないクエリと言われ、importモードに置き換えるか?と聞かれ、テーブルのデータを読み込めなくなるエラー
状況
- 接続に使うPCのPowerBIライセンス:pro
- 接続時の認証方式:キーペア
- 接続時のsnowflakeユーザータイプ:service、legacy_service
- 接続時のユーザー権限:読み込みたいテーブルのあるデータベースのみアクセスできる権限を付与(ウェアハウスの権限も付与済み)
- 読み込みたいテーブルのレコード数:200行かない程度
解決策
ネイティブクエリを使用する。
知見
Snowflakeコネクター周りの不備が疑われる場合、 ネイティブなSQLクエリを用いると 、エラーを回避できる可能性がある
終わりに
いかがだったでしょうか。これが誰かのエラー解消に役立てば幸いです。
余談
この中で一番エラー解消に時間がかかったのは、一番最後のimportでしか取り込めない、というエラーになります。
このエラーが発生した当初、Snowflakeでテーブルをとってきただけでだめですと言われてしまい、死ぬほど焦りました。今までSnowflakeとのデータ接続だけで失敗したことがなかったので、本当にわけがわからなくなり、認証方法を変えたりアカウントを変えたりといろいろとやった挙句、偶然ネイティブクエリを入力するという手段を思いつきなんとかなりました。
このエラーについては、現在は解消済みとのことで、いろいろあってバージョンアップできない環境でやっていたために起きました。なので、普通に使う分には特に気にしなくて良いかと思います。(なのでその分へこみました。)
念の為、以下にコミュニティでの報告と、公式ドキュメントをのせておきます。
- Feature update to treat calculated tables as refreshable.
- Resolved an issue where the user sees the "This query contains transformations that can't be used for DirectQuery" error when using the Snowflake connector in DirectQuery mode. Also resolved the "This step results in a query that is not supported in DirectQuery mode. Switch all tables to Import mode" error seen in the Snowflake connector.
