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

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

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

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

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

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

Objective-C:

  • // Define a filter.
    KAFilter *filter = [[KAFilter alloc] init];
    [filter addFilter:@"AppVersion"
            withValue:@"9"];
    
    // 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 "UserLevel" dimension to the query.
    [query setGroupingKey:@"UserLevel"];
    // 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:@"AppVersion"
            withValue:@"9"];
    
    // 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 "UserLevel" dimension to the query.
    [query setGroupingKey:@"UserLevel"];
    // 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("AppVersion", withValue: "9")
    
    // 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 "UserLevel" dimension to the query.
    query.groupingKey = "UserLevel"
    // 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)
      // Do something.
    }catch let error as NSError{
      // Handle the error.
      return
    }
  • // Define a filter.
    let filter = KAFilter()
    filter.addFilter("AppVersion", withValue: "9")
    
    // 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 "UserLevel" dimension to the query.
    query.groupingKey = "UserLevel"
    // 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, andBlock:
      { (result: KAGroupedResult?, error: NSError?) -> Void in
        if (error != nil) {
          // Handle the error.
          return
        }
      }
    )

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

  • Name:ディメンション(グルーピングキー)の名前
  • Data:取得した分析結果を保持する JSON 配列
  • PointStart:データ開始日(UNIX 時間、ミリ秒、UTC)
  • PointInterval:データポイントの間隔(ミリ秒)

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