2

開発中のアプリケーションのデータ レイクをテストしています。私は U-SQL とデータ レイクを初めて使用し、JSON ファイル内のすべてのレコードに対してクエリを実行しようとしています。現在、1 つのレコードしか返されていませんが、ファイルには約 200 のレコードがあるため、その理由はわかりません。

私のコードは次のとおりです。

DECLARE @input string = @"/MSEStream/output/2016/08/12_0_fc829ede3c1d4cf9a3278d43e7e4e9d0.json";

REFERENCE ASSEMBLY [Newtonsoft.Json];
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];


@allposts = 
EXTRACT 
    id  string
FROM @input 
USING new Microsoft.Analytics.Samples.Formats.Json.JsonExtractor();

@result =
SELECT *
FROM @allposts;

OUTPUT  @result
TO  "/ProcessedQueries/all_posts.csv"
USING Outputters.Csv();

データ例:

{
"id":"398507",
"contenttype":"POST",
"posttype":"post",
"uri":"http://twitter.com/etc",
"title":null,
"profile":{
   "@class":"PublisherV2_0",
   "name":"Company",
   "id":"2163171",
   "profileIcon":"https://pbs.twimg.com/image",
   "profileLocation":{
      "@class":"DocumentLocation",
      "locality":"Toronto",
      "adminDistrict":"ON",
      "countryRegion":"Canada",
      "coordinates":{
         "latitude":43.7217,
         "longitude":-31.432},
         "quadKey":"000000000000000"},
      "displayName":"Name",
      "externalId":"00000000000"},
   "source":{
       "name":"blogs",
       "id":"18",
       "param":"Twitter"},
   "content":{
       "text":"Description of post"},
       "language":{
           "name":"English",
           "code":"en"},
       "abstracttext":"More Text and links",
       "score":{}
   }
}

事前に助けてくれてありがとう

4

2 に答える 2

3

JsonExtractor は、JSON パス式を使用して行にマップされるアイテムまたはオブジェクトを指定できる引数を取ります。何も指定しない場合は、一番上のルート (1 行) が使用されます。

配列内のすべてのアイテムが必要なので、次のように指定します。

USING new Microsoft.Analytics.Samples.Formats.Json.JsonExtractor("[*]");

[*] は JSON パス式で、この場合は最上位の配列である配列のすべての要素を教えてくれます。

于 2016-08-15T20:04:38.323 に答える