schema-discovery

作成者: microsoft

Power BIセマンティックモデルのスキーマをDAX INFO関数を使用して探索します。段階的なメタデータ発見戦略、スコープ見積もり、および絞り込み手法…

npx skills add https://github.com/microsoft/fabric-apps-analytic-templates --skill schema-discovery

Schema Discovery

Table of Contents

TaskReferenceNotes
Must/Prefer/AvoidSKILL.md: Must/Prefer/AvoidGuardrails for schema discovery
Progressive Discovery StrategySKILL.md: Progressive Schema DiscoveryDecision tree for on-demand metadata fetching
Recommended Discovery OrderSKILL.md: Recommended Discovery OrderStart with scope estimation → tables → columns → measures → relationships
Metadata Object → INFO Function MapSKILL.md: Metadata Object → INFO Function MapTables, columns, measures, relationships, calc groups, calendars, UDFs, variations
Scope Estimation Queriesdiscovery-queries.md: Scope Estimation QueriesProbe table/column/measure/relationship counts before deep discovery
INFO Output Columnsdiscovery-queries.md: INFO Output ColumnsINFO.VIEW.* (read access); INFO.* (may need elevated access)
Narrowing Results (Projection + Filtering)discovery-queries.md: Narrowing ResultsSELECTCOLUMNS + FILTER to reduce output volume
Advanced Metadata (Calc Groups, Calendars, UDFs)discovery-queries.md: Advanced Metadata QueriesINFO.CALCULATIONGROUPS, INFO.CALENDARS, INFO.USERDEFINEDFUNCTIONS, INFO.VARIATIONS
Complete INFO Function Catalogdiscovery-queries.md: Complete INFO Function CatalogDynamic query to enumerate all INFO functions in the engine

Must / Prefer / Avoid

Must

  • Use fully-qualified 'Table'[Column] for column references
  • Use simple [Measure] for measure references

Prefer

  • INFO.VIEW functions for initial metadata discovery (read access, lightweight)
  • Progressive schema discovery over full schema dumps
  • SELECTCOLUMNS + FILTER to narrow INFO results

Avoid

  • Fetching full schema upfront — discover incrementally based on need
  • Re-fetching metadata already discovered in this conversation
  • Using GetSemanticModelSchema or GenerateQuery MCP tools (these are not available)
  • Using DiscoverArtifacts to find a semantic model — that MCP tool is not available; use npx fabric-app-data search (see fabric-cli) instead

Progressive Schema Discovery

Discover metadata incrementally based on what the user actually needs.

Strategy (Decision Tree)

User asks a question
  → Do I know which tables are relevant?
    → NO: Run INFO.VIEW.TABLES() to get table inventory
    → YES: Do I know the columns/measures for those tables?
      → NO: Run filtered INFO.VIEW.COLUMNS() and INFO.VIEW.MEASURES() for those tables
      → YES: Do I need relationships?
        → YES: Run INFO.VIEW.RELATIONSHIPS() filtered to those tables
        → NO: Do I need advanced metadata?
          → Have elevated INFO functions already failed in this session?
            → YES: Skip — assume no permission for all elevated queries
            → NO: Try the relevant elevated query:
              → Calculation groups: INFO.CALCULATIONGROUPS() + INFO.CALCULATIONITEMS()
              → Calendars: INFO.CALENDARS()
              → User-defined functions: INFO.USERDEFINEDFUNCTIONS()
              → Variations: INFO.VARIATIONS()
              → If query fails with permission error: mark elevated access as unavailable
  → Use discovered schema to write DAX queries (see dax-authoring skill)

Rules

  • Start with scope estimation — Run the scope probe query first to understand model size
  • Discover on demand — Only fetch tables/columns/measures relevant to the current user request
  • Use INFO.VIEW functions first (read access) — tables, columns, measures, relationships
  • Use INFO functions (may need elevated access) for: calculation groups, calculation items, variations, user-defined functions, calendars
  • Handle permission failures gracefully — If an elevated INFO function fails but INFO.VIEW.* functions succeeded, assume the user lacks elevated permissions and skip all elevated discoveries entirely
  • Always narrow results — Use SELECTCOLUMNS + FILTER to fetch only needed columns and rows
  • Cache discovered schema mentally — Don't re-fetch what you've already discovered in this conversation

Recommended Discovery Order

  1. Scope estimation — Count tables, columns, measures, relationships
  2. Tables — Get table names, identify relevant ones
  3. Columns — Get columns for relevant tables only
  4. Measures — Get measures (prefer using these over raw aggregations)
  5. Relationships — Get relationships between relevant tables
  6. Advanced metadata (if needed) — Calculation groups, calendars, UDFs, variations

Scope Estimation Query

EVALUATE
ROW(
    "TableCount", COUNTROWS(INFO.VIEW.TABLES()),
    "ColumnCount", COUNTROWS(INFO.VIEW.COLUMNS()),
    "MeasureCount", COUNTROWS(INFO.VIEW.MEASURES()),
    "RelationshipCount", COUNTROWS(INFO.VIEW.RELATIONSHIPS())
)

Metadata Object → INFO Function Map

Metadata ObjectPrimary INFO FunctionsAccess Level
TablesINFO.VIEW.TABLES()Read
ColumnsINFO.VIEW.COLUMNS()Read
MeasuresINFO.VIEW.MEASURES()Read
RelationshipsINFO.VIEW.RELATIONSHIPS()Read
Model configINFO.MODEL()May need elevated
Calculation groupsINFO.CALCULATIONGROUPS(), INFO.CALCULATIONITEMS()May need elevated
CalendarsINFO.CALENDARS(), INFO.CALENDARCOLUMNGROUPS(), INFO.CALENDARCOLUMNREFERENCES()May need elevated
User-defined functionsINFO.USERDEFINEDFUNCTIONS()May need elevated
VariationsINFO.VARIATIONS()May need elevated

For the full query catalog and output column details, see discovery-queries.md.

Running Discovery Queries

Use npx fabric-app-data query <alias> --query '<DAX>' to execute INFO queries against a semantic model. For full CLI options (profiles, file input, result limits), see the fabric-cli skill.

npx fabric-app-data query <alias> --query "EVALUATE INFO.VIEW.TABLES()"

Troubleshooting

ProblemSolution
INFO functions return permission errorsFall back to INFO.VIEW functions; mark elevated access as unavailable for this session
Metadata output too largeUse scope estimation + narrowing patterns from discovery-queries.md

microsoftのその他のスキル

oss-growth
microsoft
OSS成長ハッカーのペルソナ
agent-framework-azure-ai-py
microsoft
Microsoft Agent Framework Python SDK(agent-framework-azure-ai)を使用してAzure AI Foundryエージェントを構築します。AzureAIAgentsProviderを使用した永続的なエージェントの作成、ホスト型ツール(コードインタープリター、ファイル検索、ウェブ検索)の使用、MCPサーバーの統合、会話スレッドの管理、ストリーミング応答の実装時に使用します。関数ツール、構造化出力、マルチツールエージェントをカバーします。
development
airunway-aks-setup
microsoft
AKS上でAI Runwayをセットアップ — ベアクラスターからモデル実行まで。クラスター検証、コントローラーインストール、GPU評価、プロバイダー設定、初回デプロイをカバー。対象: 「AI Runwayのセットアップ」「AKSクラスターのオンボード」「AI Runwayのインストール」「airunway setup」「AKSへのモデルデプロイ」「AKSでのGPU推論」「AKSでのKAITOセットアップ」「AKSでのLLM実行」「AKSでのvLLM」「AKSでのモデルサービング設定」「AI Runwayコントローラー」。
devops
appinsights-instrumentation
microsoft
Azure Application Insightsを使用したWebアプリのインストルメンテーションに関するガイダンス。テレメトリパターン、SDKセットアップ、構成リファレンスを提供します。対象: アプリのインストルメンテーション方法、App Insights SDK、テレメトリパターン、App Insightsとは何か、Application Insightsガイダンス、インストルメンテーション例、APMベストプラクティス。
devops
applicationinsights-web-ts
microsoft
Application Insights JavaScript SDK(@microsoft/applicationinsights-web)を使用してブラウザ/Webアプリを計測します。Real User Monitoring(RUM)— ページビュー、クリック、AJAX/fetch依存関係、例外、カスタムイベント、およびバックエンドのOpenTelemetryトレースに関連付けられたブラウザ側のGenAIエージェントトレースに使用します。SDKローダースクリプトとnpmセットアップ、フレームワーク拡張機能(React、React Native、Angular)、Click Analytics、テレメトリ初期化子、およびブラウザから生成されるエージェント/ツール/モデルスパンのOTel GenAIセマンティック規約をカバーします。
devops
azure-ai-anomalydetector-java
microsoft
Azure AI Anomaly Detector SDK for Javaを使用して異常検出アプリケーションを構築します。単変量/多変量異常検出、時系列分析、またはAIを活用したモニタリングを実装する際に使用します。
development
azure-ai-language-conversations-py
microsoft
azure-ai-language-conversations Python SDKを使用して会話言語理解(CLU)を実装します。ConversationAnalysisClientを使用して会話の意図とエンティティを分析する場合、NLP機能を構築する場合、またはアプリケーションに言語理解を統合する場合に使用します。
development
azure-ai-ml-py
microsoft
Azure Machine Learning SDK v2 for Python。MLワークスペース、ジョブ、モデル、データセット、コンピュート、パイプラインに使用します。 トリガー: 「azure-ai-ml」、「MLClient」、「ワークスペース」、「モデルレジストリ」、「トレーニングジョブ」、「データセット」。
development