Power BI 面接の質問
文責 Aaron Cao · 更新

Power BI の面接は、DAX の評価コンテキスト、データモデリング、更新アーキテクチャに集中します。メジャーと計算列の違いを説明し、フィルターコンテキストと行コンテキストを説明し、スタースキーマを選ぶ理由を述べ、Import と DirectQuery のどちらを選ぶか判断し、行レベルセキュリティを設定できることが求められます。
どの面接でも出る DAX の質問とは?
動くレポートを作れても、DAX の質問で詰まることがあります。面接では関数の一覧ではなく、評価モデルそのものが問われるからです。このセクションでは、ほぼすべての Power BI 面接で出る DAX の質問と、優れた回答に含めるべき内容を扱います。
- メジャーと計算列の違いは何ですか? 計算列は更新時に行ごとに計算され、モデルに格納されるためメモリを消費します。メジャーはクエリ実行時に現在のフィルターコンテキストに対して計算され、何も保存しません。「片方は動的」というだけでなく、メモリと計算のタイミングまで説明しましょう。
- 行コンテキストとフィルターコンテキストを説明してください。 行コンテキストは反復処理中の現在の行、フィルターコンテキストはスライサーやビジュアル、DAX によって適用されるフィルターの集合です。紛らわしい結果のほとんどは、片方を期待していたのにもう片方が返ってくることから生じます。
- CALCULATE は何をしますか? 変更されたフィルターコンテキストで式を評価し、行コンテキストをフィルターコンテキストに変換します。面接官が聞きたいのは後半部分です。
SUMXのようなイテレーターが必要なのはどんなときですか? 集計の前に行ごとに計算が必要な場合です。たとえば単価×数量のように、積を格納した列がない場合です。ALLは何をしますか、なぜ CALCULATE と組み合わせるのですか? フィルターを取り除きます。これが構成比メジャーを作る方法です。RELATEDとRELATEDTABLEの違いを説明してください。 方向が重要です。一方は「一」側に渡り、もう一方は「多」側の行を返します。
面接全体を通じて役立つ習慣があります。DAX の回答があいまいになってきたら、コンテキストに立ち返ることです。ほとんどの深掘り質問は、どのコンテキストが有効で、何がそれを変えたかに帰着します。
データモデリングの質問にはどう答えるべきか?
モデリングの質問は、レポートを作るだけの人とデータセットを本当に管理できる人を見分けます。ここで求められるのはディメンショナルな語彙です。
- スタースキーマとスノーフレーク、どちらを選びますか、その理由は? クエリパフォーマンスと DAX のシンプルさのため、非正規化したディメンションを持つスタースキーマを選びます。スノーフレークは、あるディメンションが本当に大きい、または共有されている場合に限ります。単一のフラットテーブルという答えは、そこで面接が早々に終わる答えです。
- ファクトテーブルとディメンションテーブルとは何ですか? ファクトは定められた粒度で測定可能なイベントを保持し、ディメンションはスライスに使う属性を保持します。
- リレーションシップのカーディナリティとクロスフィルターの方向がなぜ重要なのですか? 単一方向の一対多がデフォルトなのには理由があります。双方向フィルターはあいまいさを生み、誤った合計を出すことがあります。
- 多対多のリレーションシップはどう扱いますか? ブリッジテーブルを使い、その後の合計が何を意味するのかを説明します。
- 専用の日付テーブルがなぜ必要なのですか? タイムインテリジェンス関数には連続してマークされた日付テーブルが必要で、それがないと年初来や前年同期のメジャーが正しく動作しません。
- この変換は Power Query と DAX のどちらで行いますか? 可能な限り Power Query で整形します。そこでの変換は毎回のクエリではなく、更新のたびに一度だけ実行されるためです。
ある小売レポーティングチームの面接を受けた BI アナリストは、なぜ売上合計が製品別では正しいのに地域別では間違っているのかを問われました。面接パネルが求めていたのはモデリング面の答え、つまり双方向のリレーションシップがあいまいなフィルターパスを生んでいるという説明であり、DAX の書き換えではありませんでした。まずモデル層で診断する姿勢こそが試されています。
職種別のその他の質問集は職種別の面接質問にまとめています。
更新、セキュリティ、デプロイについては何を聞かれるのか?
これらの質問は BI 開発者やアナリティクスエンジニアの面接で登場し、Power BI Desktop だけで作業してきた候補者が話すことに困る部分でもあります。
- Import、DirectQuery、Composite のどれを選びますか? Import はクエリが最も速いですが、メモリと更新のタイミングに制約されます。DirectQuery はデータを最新に保ちますが、負荷をソース側に押し付け、DAX に制限があります。Composite はこれらを組み合わせます。トレードオフと、それを決める一つの条件を挙げましょう。
- オンプレミスデータゲートウェイは何のためにありますか? 企業ネットワークの内側にあるソースへ、スケジュール更新や DirectQuery のためにクラウドサービスを接続するためです。
- 増分更新はどのように機能しますか? 日付範囲でパーティション分割し、最近のパーティションだけが再読み込みされるようにします。この機能が求める範囲パラメーターで設定します。
- 行レベルセキュリティはどのように実装しますか? ディメンションテーブルに DAX のフィルター式を持つロールを設定し、ログインユーザー関数を使ってマッピングテーブルからユーザーを検索する動的セキュリティを組み合わせます。
- ワークスペース、アプリ、データセット、レポートはどう関係していますか? サービスに関する基本的な知識であり、Desktop でしか作業したことがない人が落としやすい単純な質問です。
- 動作の遅いレポートはどう改善しますか? ページごとのビジュアル数を減らし、計算列よりメジャーを優先し、リレーションシップ列のカーディナリティを下げ、パフォーマンスアナライザーで調査します。
経験がすべて Desktop に限られている場合は、それを正直に伝え、何を学ぶ必要があるかを説明しましょう。面接官は明言されたギャップは受け入れますが、次の深掘りで崩れるような作り話のデプロイ経験は受け入れません。
Power BI の面接はどう練習すればいいのか?
Power BI の回答は、独特な形で崩れます。候補者は違いを理解していても、それをクリックで示すことしかしてこなかったために、説明が堂々巡りになるのです。質問集を読むと「見覚えがある」という感覚は得られますが、その感覚は見知らぬ相手に問われて答えを待たれた瞬間に崩れます。
上記の中から一番聞かれたくない五つの質問を選び、画面を見ずに九十秒以内で声に出して答えてみましょう。CALCULATE が何をするか、図を描かずに説明できないなら、面接の場でも説明できません。深掘りしてくる AI 面接官を相手に同じ質問を繰り返し練習するほうが、ノートを読み返すより実際の会話に近く、これはまさに模擬面接モードが作られた理由です。
SubcueAI の創業者である Aaron Cao は、この練習モードをコンテンツの提供ではなく、繰り返し声に出すことを中心に設計しました。質問リストは豊富にある一方で、声に出す練習の回数は不足しがちだからです。本番の面接では、デスクトップアプリとブラウザ拡張機能のサイドパネルが、面接官が話している間に構造を表示でき、すでに知っている内容ほど役立ちます。セットアップ手順はチュートリアルページにあります。