概要
Azure Data Explorer (Kusto とも呼びます) は超高速に検索できる強力なデータストアです。お客様と、あるいはチーム内でクエリをシェアするのは、ちょうど数式と解答を一緒に見るのに似ていてとても有用です。
Data Explorer でリンクをシェアすると以下のようなURLがクリップボードに送られます。
https://dataexplorer.azure.com/clusters/クラスタ名.リージョン/databases/データストア名?query=エンコードされた Kusto クエリ
このURLを開くと、ポータルで Kusto クエリが実行されて結果が表示されます。便利。
クエリ文字列をデコードするコード
URLのクエリ文字列中に埋め込まれた Kusto クエリ(ややこしい)は、元の Kusto クエリを ZIP 圧縮したビット列を BASE64 にエンコードしたものです。この部分を取り出して、元の Kusto クエリを取り出すコードを書いてみます。あまり使うことはないとは思いますが。
簡単なので LINQPad でさっくりと。
var s = "<EMBEDDED QUERY GOES HERE>";
var base64 = HttpUtility.UrlDecode(s);
var buffer = new byte[1024];
string queryString = string.Empty;
var e = Convert.FromBase64String(base64);
using (var gz = new GZipStream(new MemoryStream(e), CompressionMode.Decompress))
{
while (true)
{
var len = gz.Read(buffer, 0, buffer.Length);
queryString += Encoding.UTF8.GetString(buffer, 0, len);
if (len < buffer.Length)
{
break;
}
}
}
queryString.Dump();
おわりに
誰得な TIPS を書いてしまった。