3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Data Explorer の埋め込みURLから元のクエリを取り出す

Posted at

概要

Azure Data Explorer (Kusto とも呼びます) は超高速に検索できる強力なデータストアです。お客様と、あるいはチーム内でクエリをシェアするのは、ちょうど数式と解答を一緒に見るのに似ていてとても有用です。

image.png

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 を書いてしまった。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?