API での分析結果詳細の取得

iOS SDK は、分析結果詳細を取得するための API を提供しています。

分析結果取得の際には、以下の情報を指定します。

  • ディメンション(グルーピングキー):どのディメンションで分割した結果を取得するか?指定を省略した場合は、デフォルトビュー(分割なし)の結果を取得します。
  • フィルター: 適用するフィルターを指定します。複数のフィルターが指定可能です。複数指定した場合は、指定内容を AND 結合したフィルターが適用されます。
  • 取得対象データのレンジ。

取得対象メトリクスの指定は、開発者ポータルに表示されたルールの ID で行います。またディメンションおよびフィルターの指定は、分析対象データを定義した際に "Name" としてセットした名前で行います。

以下に、SDK 経由で分析結果を取得するサンプルコードを挙げます。

Objective-C:

  • // Define a filter.
    KAFilter *filter = [[KAFilter alloc] init];
    [filter addFilter:@"location"
            withValue:@"UK"];
    
    // Define a data range.
    NSDate *start = [NSDate dateWithTimeIntervalSinceNow:-1*60*60*24*7]; // One week ago
    NSDate *end = [NSDate date]; // Now
    KADateRange *range = [KADateRange rangeWithStart:start
                                              andEnd:end];
    
    // Create a query.
    KAResultQuery *query = [[KAResultQuery alloc] init];
    // Set the "gender" dimension to the query.
    [query setGroupingKey:@"gender"];
    // Set the filter to the query.
    [query setFilter:filter];
    // Set the date range to the query.
    [query setDateRange:range];
    
    NSString *aggregationID = @"22";
    
    // Get snapshots.
    NSError *error;
    KAGroupedResult *results = [KiiAnalytics getResultSynchronousWithID:aggregationID
                                                               andQuery:query
                                                               andError:&error];
    if (error != nil) {
      // Handle the error.
      return;
    }
  • // Define a filter.
    KAFilter *filter = [[KAFilter alloc] init];
    [filter addFilter:@"location"
            withValue:@"UK"];
    
    // Define a data range.
    NSDate *start = [NSDate dateWithTimeIntervalSinceNow:-1*60*60*24*7]; // One week ago
    NSDate *end = [NSDate date]; // Now
    KADateRange *range = [KADateRange rangeWithStart:start
                                              andEnd:end];
    
    // Create a query.
    KAResultQuery *query = [[KAResultQuery alloc] init];
    // Set the "gender" dimension to the query.
    [query setGroupingKey:@"gender"];
    // Set the filter to the query.
    [query setFilter:filter];
    // Set the date range to the query.
    [query setDateRange:range];
    
    NSString *aggregationID = @"22";
    
    // Get snapshots.
    [KiiAnalytics getResultWithID:aggregationID
                         andQuery:query
                         andBlock:^(KAGroupedResult *results, NSError *error) {
      if (error != nil) {
        // Handle the error.
        return;
      }
    }];

Swift:

  • // Define a filter.
    let filter = KAFilter()
    filter.addFilter("location", withValue: "UK")
    
    // Define a data range.
    let start = NSDate(timeIntervalSinceNow: -1*60*60*24*7)
    let end = NSDate()
    let range = KADateRange(start: start, andEnd: end)
    
    // Create a query.
    let query = KAResultQuery()
    // Set the "gender" dimension to the query.
    query.groupingKey = "gender"
    // Set the filter to the query.
    query.filter = filter
    // Set the date range to the query.
    query.dateRange = range
    
    let aggregationID = "22"
    
    // Get snapshots.
    do{
      let result: KAGroupedResult! = try KiiAnalytics.getResultSynchronousWithID(aggregationID, andQuery: query)
    }catch let error as NSError{
      // Handle the error.
    }
  • // Define a filter.
    let filter = KAFilter()
    filter.addFilter("location", withValue: "UK")
    
    // Define a data range.
    let start = NSDate(timeIntervalSinceNow: -1*60*60*24*7)
    let end = NSDate()
    let range = KADateRange(start: start, andEnd: end)
    
    // Create a query.
    let query = KAResultQuery()
    // Set the "gender" dimension to the query.
    query.groupingKey = "gender"
    // Set the filter to the query.
    query.filter = filter
    // Set the date range to the query.
    query.dateRange = range
    
    let aggregationID = "22"
    
    // Get snapshots.
    KiiAnalytics.getResultWithID(aggregationID, andQuery: query) {
      (result : KAGroupedResult?, error : NSError?) -> Void in
      if (error != nil) {
        // Handle the error.
        return
      }
    }

分析結果は KAGroupedResult のオブジェクトとして返されます。このオブジェクトの snapshots プロパティには KAGroupedSnapShot の NSArray が入っています。 各 KAGroupedSnapShot は、以下のプロパティにより構成されています。

  • Name:ディメンション(グルーピングキー)のラベル(Aggregation Rule を定義した際に "Label" としてセットした値。"Label" のセットを省略した場合は "Name" としてセットした値)
  • Data:取得した分析結果を保持する JSON 配列
  • PointStart:データ開始日(UNIX 時間、ミリ秒、UTC)
  • PointInterval:データポイントの間隔(ミリ秒)

GroupSnapShot の解釈方法については appledoc を参照してください。