нормализация результатов из графика или fql.query - PullRequest
0 голосов
/ 22 декабря 2011

Я запускаю приложение, которое вызывает и график, и fql.query для получения информации Insights.(Это происходит для олицетворения десятков приложений и получения статистики) Я получаю пару различных форматов при запросах, и мне интересно, есть ли лучший способ «нормализовать» результаты?

Было бы неплохо иметь что-то подобное в SDK, поскольку форматы / данные Facebook постоянно меняются.Где я могу сделать запрос SDK?

Код для получения значения ключа --- [code]

public function saveResults($application = null, $result = array()) 
{
// graph insights are under a data key 
if(isset($result['data'])) {
    $this->saveResults($application, $result['data']);
}
// graph insights are under a values array  
elseif(isset($result['values'])) { 
    foreach($result['values'] as $k => $v) {
        $this->saveResult($application, $result['name'], $v['value'], $result['period'], $v['end_time']); 
    }
}
// fql.query results have a metric and value
elseif(isset($result['metric'])) {
    $this->saveResult($application, $result['metric'], $result['value'], $result['period'], $result['end_time']); 
}
// otherwise save key values 
elseif(is_array($result)) { 
    foreach($result as $key => $val) {
        if(is_numeric($key) && is_array($val)) {
            $this->saveResults($application, $val);
        }
        else {
            $this->saveResult($application, $key, $val); 
        }
    }
}
}

[/ code]

Результаты из fql -

=> Array
        (
            [0] => Array
                (
                    [app_id] => 1248...
                    [api_key] => 1248...
                    [canvas_name] => ABC123
                    [display_name] => ABC123
                    [company_name] => 
                    [developers] => Array
                        (
                        )

                    [restriction_info] => Array
                        (
                        )

                    [daily_active_users] => 0
                    [weekly_active_users] => 0
                    [monthly_active_users] => 8
                )

        )
=> Array
        (
            [0] => Array
                (
                    [metric] => application_canvas_views
                    [value] => 0
                    [period] => 86400
                    [end_time] => 1317538800
                )

        )

Результаты из графика -

 => Array
        (
            [id] => 1248...
            [name] => ABC123
            [picture] => https://fbcdn-profile...
            [link] => http://www.facebook.com/ABC123
            [likes] => 58450
            [category] => Product/service
            [website] => http://www.ABC123..

 => Array
        (
            [data] => Array
                (
                    [0] => Array
                        (
                            [id] => ABC123.../insights/page_like_adds/day
                            [name] => page_like_adds
                            [period] => day
                            [values] => Array
                                (
                                    [0] => Array
                                        (
                                            [value] => 60
                                            [end_time] => 2011-01-01T08:00:00+0000
                                        )

                                    [1] => Array
                                        (
                                            [value] => 15
                                            [end_time] => 2011-01-02T08:00:00+0000
                                        )

                                    [2] => Array
                                        (
                                            [value] => 2

1 Ответ

0 голосов
/ 23 декабря 2011

По моему опыту, нет никакой связи 1: 1 между "свойствами объекта", возвращаемыми из таблиц FQL, и теми из новых объектов API графа. В таблицах FQL гораздо больше свойств, чем в графике из того, что я видел. Попытка связать их - все равно что дать кошке ванну. Это можно сделать, но это будет больно !!

Мои предложения заключаются в том, чтобы определить из требований проекта, что вы пытаетесь выполнить, а затем определить, является ли FQL или Graph API вашим лучшим путем для выполнения каждого требования. Одно требование может быть легче выполнено с помощью графика, а другое - с помощью FQL. Удачи.

...