エラー
Power Query の M 式言語でのエラーは、式を評価するプロセスが値を生成できなかったことを示します。 エラーは、エラー状態を検出した演算子や関数によって、またはerror 式を使用することによって、生成されます。 エラーは try 式を使用して処理されます。 エラーを生成するときは、エラーが発生した理由を示すために使用できる値を指定します。
try 式
try 式では、値とエラーが、try 式によってエラーが処理されたかどうか示すレコード値と、エラーを処理するときに抽出された適切な値またはエラー レコードに変換されます。 たとえば、エラーを発生させてすぐに処理する次の式について考えてみます。
try error "negative unit count"
この式は、前の単位価格の例での [HasError], [Error]
、[Message]
のフィールド参照を説明する、次のような入れ子になったレコード値に評価されます。
エラー レコード
[
HasError = true,
Error =
[
Reason = "Expression.Error",
Message = "negative unit count",
Detail = null
]
]
一般的なケースは、エラーを既定値に置き換えることです。 try 式とオプションの otherwise 句を使用して、コンパクトな形式でそれだけを実現できます。
try error "negative unit count" otherwise 42
// equals 42
エラーの例
let Sales =
[
ProductName = "Fishing rod",
Revenue = 2000,
Units = 1000,
UnitPrice = if Units = 0 then error "No Units"
else Revenue / Units
],
//Get UnitPrice from Sales record
textUnitPrice = try Number.ToText(Sales[UnitPrice]),
Label = "Unit Price: " &
(if textUnitPrice[HasError] then textUnitPrice[Error][Message]
//Continue expression flow
else textUnitPrice[Value])
in
Label
前の例では、Sales[UnitPrice]
フィールドにアクセスし、結果を生成する値を書式設定しています。
"Unit Price: 2"
Units フィールドが 0 の場合、UnitPrice
フィールドでエラーが発生し、try によって処理されます。 結果の値は次のようになります。
"No Units"