Microsoft Fabricのグラフには機能的およびパフォーマンス上の制限があります。 この記事では、いくつかの重要な制限事項について説明しますが、完全な一覧ではありません。 定期的に更新プログラムを確認してください。
一般的な問題のヘルプについては、 グラフのトラブルシューティングを参照してください。
グラフ モデルの作成
データ ソース
- OneLake Parquet ファイルと CSV ファイルは、現在サポートされている唯一のデータ ソースです。
- データ ソースとしてのPower BIセマンティック モデルのサポートが開発中です。
- 列レベルと行レベルの OneLake セキュリティ のサポートが開発中です。
データ型
Graph では現在、次のデータ型がサポートされています。
- ブール値 (値は
trueとfalse) - Double (値は 64 ビット浮動小数点数)
- 整数 (値は 64 ビット符号付き整数)
- 文字列 (値は Unicode 文字列)
- ゾーン指定DateTime(値はタイムスタンプとタイムゾーンのシフトを組み合わせたもの)
- 期間 (値は ISO 8601 期間間隔)
次の OneLake 型がサポートされています。
- インテジャータイプ
- LongType
- 文字列型
- ダブルタイプ
- BooleanType
- FloatType
- ByteType
- ArrayType
- デートタイプ
- TimestampNtzType
- TimestampType
エッジの作成
グラフ モデリング中に、異なるグラフ エッジの種類に異なる名前を付けます。
たとえば、ソーシャル メディア データ セットは、"user likes comment" と "user likes post" を表します。グラフ モデルでコメントと投稿に個別のノード タイプが使用されている場合、ユーザー ノード タイプには、コメントと投稿に 2 種類の "いいね" エッジがあります。 これらのエッジに userLikesComment と userLikesPost という名前を付けます。
グラフの作成時間
グラフの作成または更新に 20 分を超える時間がかかる場合、グラフ モデルでは週に 1 回までタイムアウトが発生する可能性があります。 操作は失敗としてマークされます。
ただし、ユーザーはグラフの作成または更新を再開できます。
グラフサイズ
現在一般的に利用可能なSKU構成は、約20億のグラフ要素(ノードとエッジ)を処理できます。 より多くの要素数を持つ大きなグラフや、1つの要素あたりのプロパティペイロードが大きい場合は、プロダクトチームまでお問い合わせください。
グラフモデルの総数
各Fabricワークスペースは最大10のグラフモデルを持てます。
マルチタスク UI
Fabricマルチタスク UI でタブまたはウィンドウを切り替えると、グラフ モデルが消えたり空になったりすることがあります。 製品チームは、この既知の問題の解決に積極的に取り組んでいます。
ノード プロパティの選択
グラフモデルにノードやエッジタイプを追加するときは、ソーステーブルから属性として追加する列を手動で選択してください。 ノードもエッジもプロパティは最初から何も持っておらず、必要なものだけを追加します。
Querying
マルチホップ クエリのホップ数
Graph では現在、可変長パターンで最大 8 ホップがサポートされています。
結果のサイズ
結果のサイズが 128 MB を超えると、集計のパフォーマンスが不安定になる可能性があります。
現在、システムは 64 MB を超える応答を切り捨てます。
Timeout
クエリに 20 分以上かかる場合はタイムアウトになります。
データのエクスポートと視覚化
- グラフ クエリの結果またはグラフ構造のエクスポートは現在サポートされていません。
- 視覚化シナリオのためにグラフにPower BIを直接接続することは現在サポートされていません。
GQL 準拠
ISO/IEC 39075:2024 標準に対してサポートされている GQL 機能 (最小準拠、グループ別のオプション機能、まだサポートされていない機能など) の詳細なマッピングについては、 GQL 標準準拠を参照してください。
GQL 標準への準拠はまだ進行中です。
- 正しい GQL 状態コード
- インデックス付き FOR ステートメント
- 次に
- UNION DISTINCT ステートメント
- 無制限のグラフ パターン量指定子
- ALL SHORTEST パス検索
- ANY パス検索
- ANY SHORTEST パス検索
- データ変換
- スカラー サブクエリ
- PROPERTIES 関数
- RANGE 関数
- 拡張数値関数
- 対数関数
- 三角関数
- パス値の連結
- ラベル テスト述語
- 正規化された述語
- ソース/宛先述語
- INT32 値型
- FLOAT32値の型
- Closed RECORD 値の型
- UINT32 値の型
- ZONED TIME 値の型
- DATE 値の型
- パラメーター渡し
- 無向エッジ
- GQL プリアンブル
- 非ローカル パターン述語
- IS DIRECTED 述語
- REGEXP_CONTAINS述語
- 動的パラメーターの指定
- セッション ユーザー
- BYTES 値型
- DECIMAL 値型
- LOCAL DATETIME 値の型
- LOCAL TIME 値型
- CALL 名前付きプロシージャ ステートメント
- 明示的な NULL 順序付けの ORDER BY
- 表形式 FOR ステートメント
- EXCEPT ALL ステートメント
- EXCEPT DISTINCT ステートメント
- INTERSECT ALL ステートメント
- INTERSECT DISTINCT ステートメント
- OTHERWISE ステートメント
- ワイルドカード
- 緩やかなトポロジの一貫性
- 集計関数PERCENTILE_CONT
- 集計関数PERCENTILE_DISC
- PRODUCT 集計関数
- 集計関数STDDEV_POP
- 集計関数STDDEV_SAMP
- バイト文字列連結
- バイト文字列 TRIM 関数
- TRIM 仕様のシンプルな TRIM 関数
- マルチ文字 TRIM 関数
- バイト文字列長関数
- 濃度
- ALL_DIFFERENT述語
- IS DISTINCT 述語
- SAME 述語
カタログ
Note
グラフ名や制約名は GraphBackend で自動的に生成され、UIやJSONスキーマで指定することはできません。
| カタログエリア | 電流制限/挙動 | 適用状態 | レコメンデーション |
|---|---|---|---|
| カタログIDの基準 | カタログ要素IDは署名入りint32ラッパーで、0は無効なので、各IDファミリーは最大で std::numeric_limits<int32_t>::max() - 1 個の正の非ゼロIDを持ちます(20億個)。 |
実施上限、推奨されるGAクオータではありません | |
| グラフ スキーマ | カタログごとに1種類のグラフタイプ、カタログIDコメントは、カタログが1つのグラフタイプのみを含むことを前提としています。 | 設計上の前提;マルチスキーマのクォータとして暴露されていない | |
| グラフ定義のシリアルサイズ |
GraphProtoには明示的なバイトサイズ上限はありません。繰り返しノードタイプ、エッジタイプ、ラベル、プロパティ名、制約が含まれています。 |
protobuf/gRPC/メモリの下では強制されません。グラフ構築後にカタログオブジェクトカウントチェックが適用されます | |
| グラフ名 | 空でなければならず、明示的な最大バイト長や許容文字リストはありません。 | 非空のみが強制されます | 128 文字 |
| ノードの種類 | 最大20億のノードタイプ。 | 正の非ゼロint32 ID空間を介して CatalogGraphType::Validate によって強制されます |
64k |
| エッジの種類 | 最大20億のエッジタイプ。 | 正の非ゼロint32 ID空間を介して CatalogGraphType::Validate によって強制されます |
64k |
| すべてのノードタイプにおける一意なノードラベル | 最大20億個のユニークなノードラベル。 |
CatalogGraphType::Validateによって強制されます。1つのタイプ内で重複するラベルは拒否されます |
派生 |
| すべてのエッジタイプにおける一意なエッジラベル | 最大20億個のユニークなエッジラベル。 |
CatalogGraphType::Validateによって強制されます。1つのタイプ内で重複するラベルは拒否されます |
派生 |
| すべてのノードおよびエッジタイプにおける一意なプロパティ名 | 最大20億件のユニークな物件名。 |
CatalogGraphType::Validateによって強制されます。プロパティ名は空ではなく、同じタイプ内の重複は拒否されます |
64k * 10 |
| ノード制約の定義 | 最大20億ノードのキー制約定義。 | 正の非ゼロint32 ID空間を介して CatalogGraphType::Validate によって強制されます |
<= ノードの種類 |
| 辺制約の定義 | 最大20億のエッジキー制約定義ですが、エッジキー制約は allow_edge_key_constraints が真でない限りデフォルトで無効化されます。 |
出席者にはカウントが執行される;特徴ゲートはデフォルトでエッジ制約を拒否します | <= 辺の種類 |
| プロパティ名文字/長さ | 非空のプロパティ名やパーサ文法以外に明示的に強制されることはありません。カタログの最大バイト長や文字リストは設定できません。 | 128人のキャラクター | |
| ラベル文字 / 長さ | パーサ文法や制約内の非空ラベル以外に明示的に強制されていない場合;カタログの最大バイト長や文字リストは設定できません。 | 128人のキャラクター | |
| 制約名 文字数 / 長さ | 制約名は空でなければならず、明示的な最大バイト長や許容文字リストはありません。 | 重複/マッチング制約の検証は別々です | 128人のキャラクター |
| ノードタイプごとのプロパティ | ノードタイプに対する明示的な最大プロパティ数はなく、重複した物件名は却下されます。 | 正しさ検証のみ | 256 |
| 辺の種類ごとの性質 | エッジタイプに対する明示的な最大プロパティ数はありません。重複した物件名は却下されます。 | 正しさ検証のみ | 256 |
| ノードタイプごとのラベル | ノードタイプに明示的な最大ラベル数が設定されないこと;重複ラベルは却下されます。 | 正しさ検証のみ | 64 |
| エッジタイプごとのラベル | エッジタイプにラベルの最大数が明示的に設定されていない。重複ラベルは拒否されます。エッジの追加ラベルは却下されます。 | 正しさ検証のみ | 64 |
| 制約ごとの主要な性質 | ノードキーやエッジキー制約における明示的な最大キープロパティ数はありません。個々の物件名は空にはできません。 | 正しさ検証のみ | 16 |
ランタイムの価値
| ランタイムバリュータイプ | バックの表現 / 音域 | 明示的なバリューレベル上限? | 推奨 |
|---|---|---|---|
| ブール | ブール;値 真/偽 | はい、固定ドメインです | |
| INT64 | 符号付き 64 ビット整数 | はい、固定幅です | |
| UINT64 | 符号なしの64ビット整数 | はい、固定幅です | |
| DOUBLE | C++/protobuf double / Arrow DoubleScalar (IEEE-754 binary64);非有限値は によって拒否されません Value::FromProto |
有限のみのチェックはありません | |
| DECIMAL128 | 矢印 Decimal128Scalar;実行時の検証は精度1.38とスケール0.精度、最大38桁の小数点まで可能です |
はい、チェックされた構築やプロトからの使用です | |
| STRING | $ | ノーバリューキャップ | 4MB |
| BYTES |
std::string バイトコンテナとして使用され、 ValueProto.bytes_value |
ノーバリューキャップ | 弦限界 |
| VERTEX_ID | uint64は VertexIdでラップされます;生成されたIDは48ビットシャードローカルIDを使用し、0を無効とします |
Raw Protoは任意のuint64を受け付けます。生成されたIDは制約されています | |
| EDGE_ID | uint64は EdgeIdでラップされます;生成されたIDは48ビットシャードローカルIDを使用し、0を無効とします |
Raw Protoは任意のuint64を受け付けます。生成されたIDは制約されています | |
| ZONED_DATE_TIME |
absl::Time プラスタイムゾーン;Unixの時代からint64ミリ秒とint32 UTCオフセット秒を加えてシリアル化されました。 ミリ秒の範囲は [-9,223,372,036,854,775,808, 9,223,372,036,854,775,807]であり、UTCの瞬間として-292275055-05-16T16:47:04.192+00:00から292278994-08-17T07:12:55.807+00:00まで記録されています。 |
期間は記録されています。オフセットはint32で、レンジチェックされていません Value::FromProto |
|
| 期間 |
absl::Duration;イント64ミリ秒としてシリアル化されていました。 シリアル化の最小最大値は-9,223,372,036,854,775,808msから9,223,372,036,854,775,807ms(約+/-292,277,024.6年)です。 ISOパーサーはより厳格で、+/-9,223,372,035秒(約+/-292.277年)です。 |
プロトパスはint64ミリ秒の全フィールドを受け入れます。パーサーは明示的な上限が狭い | |
| NULL / 型付きnull |
std::monostate または型付きヌルラッパー |
||
| タイプ付きリスト |
std::vector<std::optional<T>>; LIST_NULL は size_tを収納します。 LIST_ANY 店舗 std::vector<Value> |
デフォルトの価値上限はありません | |
| 入れ子になったリスト | 一般的なネストリストはプロトコントラクトではサポートされていません。ランタイムには特別なネストされた LIST_INT64 処理があります |
デフォルトの深さや長さのノルマはありません | |
| PATH | ベクトル内で頂点/辺/頂点のuint64 IDを交互に配置します。有効なパス形状は奇数要素数を持つ | 経路長クォータはありません | |
| レコード |
absl::flat_hash_map<std::string, Value> / プロトブフマップ |
フィールドカウント、キー長、入れ子深度の割り当てはありません | |
| ANY |
Value::DataType()
TYPE_ANYを返すことは期待されていません。動的値は特にLIST_ANYやArrow内で具体的なValueとして保持されます。拡張ストレージは |
サイズや深さのノルマはありません |
その他の制限
- 識別子はアンダースコアで始まることはできません。
- 整数リテラルはデフォルトで符号付き整数として扱われます。
- ANYやレコードタイプの返却はサポートされていません。 一時的な解決策は、
TO_JSON_STRINGでjson化することです。 - 最大ストリングプロパティ長は65535です。 64 KiBを超えるデータはデシリアライザーに到達できません。バッファ全体は依然としてRocksDBに書き込まれています。
-
List<T>プロパティの最大要素数は65535です。 70,000要素のINT64 LISTは4,464要素にデシリアライズされます。 - 最大クエリ応答サイズ(バイト単位)は64MBです。