簡體   English   中英

如何使用 PHP 在 Google Analytics API 中實現 != ?

[英]how to implement != in Google Analytics API using PHP?

我正在使用 Google Analytics API 生成 Google Analytics 報告。

我正在實施過濾器,在過濾器中,我想確保,

ga:contentGroup2!=Answered;ga:pageviews!=0

這是我的代碼,

$processing[1] = str_replace('filters=', '' , $e1_param_url[$i]); //, here $processing[1] will be ga:contentGroup2!=Answered;ga:pageviews!=0
                $e1_filters = explode(';' , $processing[1]);
                for($k_filters =0; $k_filters < count($e1_filters); $k_filters++){
                    $operator = '';
                    for($c_ops =0; $c_ops < count($operators); $c_ops++){

                        $operator = strpos($e1_filters[$k_filters],$operators[$c_ops]) != false ? $operators[$c_ops] : '';
                        if($operator != '') break;
                    }
                    $the_filter = explode($operator , $e1_filters[$k_filters]);

                    if(in_array($the_filter[0],$metrics)){
                        $metricFilter = new Google_Service_AnalyticsReporting_MetricFilter();
                        $metricFilter->setMetricName($the_filter[0]);
                        if(strpos('!',$operator)!= false) 
                            $metricFilter->setNot(true);
                        $metricFilter->setOperator($this->getOperator($operator));
                        $metricFilter->setComparisonValue($the_filter[1]);
                        array_push($metricFilters , $metricFilter);
                    }else{
                        $dimensionFilter = new Google_Service_AnalyticsReporting_DimensionFilter();
                        $dimensionFilter->setDimensionName($the_filter[0]);
                        if(strpos('!',$operator)!= false) 
                            $dimensionFilter->setNot(true);
                        $dimensionFilter->setOperator($this->getOperator($operator));
                        $dimensionFilter->setExpressions(array($the_filter[1]));
                        array_push($dimensionsFilters , $dimensionFilter);
                    }
                }

這是我的 $this->getOperator 函數

    // get this list from: https://developers.google.com/analytics/devguides/reporting/core/v4/rest/v4/reports/batchGet#Operator
function getOperator($operator){
    switch($operator){
        case '==':
            return 'EXACT';
        case '!=':
            return 'EXACT';
        case '>=':
            return 'NUMERIC_GREATER_THAN';
        case '<=':
            return 'NUMERIC_LESS_THAN';
        default:
            return null;
    }
}

所以,在 != 的情況下,我應該返回什么?

根據以下Google 指標過濾器文檔,您的指標過濾器運算符似乎不正確。 你的getOperator()應該看起來像這樣:

function getOperator($operator){
    switch($operator){
        case '==':
            return 'EQUAL';
        case '!=':
            return 'EQUAL';
        case '>=':
            return 'GREATER_THAN';
        case '<=':
            return 'LESS_THAN';
        default:
            return null;
    }
}

對於維度過濾器,由於您的示例需要進行字符串比較,因此您似乎只想要==!=並且您可以省略NUMERIC_GREATER_THANNUMERIC_LESS_THAN 因此,您將始終提供EXACT作為Dimension Filter Operator ,並以與當前相同的方式處理setNot()值。

所以改變這行代碼:

$dimensionFilter->setOperator($this->getOperator($operator));

改為:

$dimensionFilter->setOperator('EXACT');

如果使用Google Analytics ReportingV4,您可以直接通過

$filter = "ga:contentGroup2!=Answered;ga:pageviews!=0";
$ga_report_request->setFiltersExpression($filter);

在此處檢查報告請求對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM