Veri Erişimi raporları

Yönetici API v1 runAccessReport yöntemini kullanarak Veri Erişimi raporları oluşturabilirsiniz. Bu rapor, bir kullanıcının Google Analytics verilerini her okuduğunda size gösterir. Veri erişimi kayıtları 2 yıla kadar saklanır. Veri erişimi raporları yalnızca Yönetici rolüne sahip kullanıcılar tarafından kullanılabilir.

İstemci kitaplığını kullanarak veri erişimi raporu isteme

Veri erişimi raporlarını kullanmaya başlamanın en hızlı yolu istemci kitaplıklarını kullanmaktır.

Google Analytics istemci kitaplıklarının nasıl yükleneceği ve yapılandırılacağıyla ilgili açıklama için Hızlı başlangıç kılavuzuna bakın.

Aşağıda, Python istemci kitaplığını kullanarak bir veri erişimi sorgusu çalıştıran ve yanıtı yazdıran bir örnek verilmiştir.

Python

from datetime import datetime

from google.analytics.admin import AnalyticsAdminServiceClient
from google.analytics.admin_v1alpha.types import (
    AccessDateRange,
    AccessDimension,
    AccessMetric,
    RunAccessReportRequest,
)


def run_sample():
    """Runs the sample."""
    # TODO(developer): Replace this variable with your Google Analytics 4
    #  property ID (e.g. "123456") before running the sample.
    property_id = "YOUR-GA4-PROPERTY-ID"
    run_access_report(property_id)


def run_access_report(property_id: str, transport: str = None):
    """
    Runs an access report for a Google Analytics property. The report will
    aggregate over dimensions `userEmail`, `accessedPropertyId`,
    `reportType`, `revenueDataReturned`, `costDataReturned`,
    `userIP`, and return the access count, as well as the most recent access
    time for each combination.
    See https://developers.google.com/analytics/devguides/config/admin/v1/access-api-schema
    for the description of each field used in a data access report query.
    Args:
        property_id(str): The Google Analytics Property ID.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    request = RunAccessReportRequest(
        entity=f"properties/{property_id}",
        dimensions=[
            AccessDimension(dimension_name="userEmail"),
            AccessDimension(dimension_name="accessedPropertyId"),
            AccessDimension(dimension_name="reportType"),
            AccessDimension(dimension_name="revenueDataReturned"),
            AccessDimension(dimension_name="costDataReturned"),
            AccessDimension(dimension_name="userIP"),
            AccessDimension(dimension_name="mostRecentAccessEpochTimeMicros"),
        ],
        metrics=[AccessMetric(metric_name="accessCount")],
        date_ranges=[AccessDateRange(start_date="yesterday", end_date="today")],
    )

    access_report = client.run_access_report(request)

    print("Result:")
    print_access_report(access_report)


def print_access_report(response):
    """Prints the access report."""
    print(f"{response.row_count} rows received")
    for dimensionHeader in response.dimension_headers:
        print(f"Dimension header name: {dimensionHeader.dimension_name}")
    for metricHeader in response.metric_headers:
        print(f"Metric header name: {metricHeader.metric_name})")

    for rowIdx, row in enumerate(response.rows):
        print(f"\nRow {rowIdx}")
        for i, dimension_value in enumerate(row.dimension_values):
            dimension_name = response.dimension_headers[i].dimension_name
            if dimension_name.endswith("Micros"):
                # Convert microseconds since Unix Epoch to datetime object.
                dimension_value_formatted = datetime.utcfromtimestamp(
                    int(dimension_value.value) / 1000000
                )
            else:
                dimension_value_formatted = dimension_value.value
            print(f"{dimension_name}: {dimension_value_formatted}")

        for i, metric_value in enumerate(row.metric_values):
            metric_name = response.metric_headers[i].metric_name
            print(f"{metric_name}: {metric_value.value}")

Temel raporlarla paylaşılan özellikler

Veri erişimi raporu istekleri, birçok ortak özellik için temel rapor istekleriyle aynı anlamlara sahiptir. Örneğin, sayfalandırma, boyut filtreleri ve tarih aralıkları her iki rapor türünde de aynı şekilde çalışır.

Data API v1'deki Core raporlarına genel bakış ile ilgili bilgi edinin ve ardından Veri Erişimi raporları hakkında daha fazla bilgi edinmek için bu sayfaya dönün.

Veri erişimi raporu oluşturma

Veri erişimi raporu istemek için runAccessReport yöntemini kullanın.

Raporlama birimi seçme

Data API v1'in temel raporlama işlevine benzer şekilde, Google Analytics Admin API v1'in runAccessReport yöntemi, Google Analytics mülk tanımlayıcısı için URL istek yolunda properties/GA_PROPERTY_ID biçiminde bir değer belirtir. Örneğin:

  POST  https://analyticsadmin.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runAccessReport

Oluşturulan Veri Erişimi raporu, belirtilen Google Analytics mülkünün Google Analytics veri erişimi kayıtlarına göre oluşturulur.

Admin API istemci kitaplıklarından birini kullanıyorsanız istek URL'si yolunu manuel olarak değiştirmeniz gerekmez. Çoğu API istemcisi, properties/GA_PROPERTY_ID biçiminde bir dize bekleyen bir property parametresi sağlar. İstemci kitaplıklarını kullanma örneği için bu sayfanın başındaki kod snippet'ine bakın.

Boyut ve metrikleri seçme

Boyutlar, mülkünüze ait erişim verilerini tanımlar ve gruplandırır. Örneğin, userEmail boyutu, raporlama verilerine erişen kullanıcının e-posta adresini gösterir. Rapor yanıtlarındaki boyut değerleri dizelerdir.

Metrikler, bir raporun nicel ölçümlerini temsil eder. accessCount metriği, veri erişimi kayıtlarının toplam sayısını döndürür.

Veri erişimi rapor isteklerinde kullanılabilen boyut ve metrik adlarının tam listesi için Veri Erişimi Şeması'na bakın.

Raporu isteme

Veri Erişimi raporları istemek için bir RunAccessReportRequest nesnesi oluşturun. Şu istek parametreleriyle başlamanızı öneririz:

  • tarih aralıkları alanında en az bir geçerli giriş olmalıdır.
  • dimensions alanında en az bir geçerli giriş olmalıdır.
  • epochTimeMicros boyutu kullanılmıyorsa bir rapordaki her boyut değeri kombinasyonu için nicel veriler almak üzere metrics alanında en az bir geçerli giriş olmalıdır.

Önerilen alanları içeren örnek bir istek aşağıda verilmiştir. Bu sorgu, kullanıcı e-postalarının listesini, son 7 gün içinde belirtilen mülke en son eriştikleri zamanı ve ilgili erişim sayısını oluşturur.

HTTP

POST https://analyticsadmin.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runAccessReport
{
  "dateRanges": [
    {
      "startDate": "7daysAgo",
      "endDate": "today"
    }
  ],
  "dimensions": [
    {
      "dimensionName": "mostRecentAccessEpochTimeMicros"
    },
    {
      "dimensionName": "userEmail"
    }
  ],
  "metrics": [
    {
      "metricName": "accessCount"
    }
  ]
}

Yanıtı okuyun

Veri Erişimi raporu yanıtı temel olarak bir başlık ve satırlardan oluşur. Üstbilgi, rapordaki sütunları listeleyen AccessDimensionHeaders ve AccessMetricHeaders öğelerinden oluşur.

Her erişim raporu satırı, rapordaki sütunlar için AccessDimensionValues ve AccessMetricValues öğelerinden oluşur. Sütunların sıralaması istek, başlık ve her satırda tutarlı olmalıdır.

Önceki örnek istek için örnek bir yanıt aşağıda verilmiştir:

{
  "dimensionHeaders": [
    {
      "dimensionName": "mostRecentAccessEpochTimeMicros"
    },
    {
      "dimensionName": "userEmail"
    }
  ],
  "metricHeaders": [
    {
      "metricName": "accessCount"
    }
  ],
  "rows": [
    {
      "dimensionValues": [
        {
          "value": "1667591408427733"
        },
        {
          "value": "Bola@example.net"
        }
      ],
      "metricValues": [
        {
          "value": "1238"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "1667710959827161"
        },
        {
          "value": "Alex@example.net"
        }
      ],
      "metricValues": [
        {
          "value": "475"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "1667868650762743"
        },
        {
          "value": "Mahan@example.net"
        }
      ],
      "metricValues": [
        {
          "value": "96"
        }
      ]
    }
  ],
  "rowCount": 3
}

Erişim kayıtlarına göre filtreleme

Rapor yanıtını filtreyle eşleşen belirli boyut değerleriyle kısıtlamak için RunAccessReportRequest nesnesinin dimensionFilter alanını kullanın.

Aşağıdaki örnekte, Alex@example.net e-posta adresine sahip tek bir kullanıcının erişim kayıtlarına göre filtreleme yapılarak bağımsız veri erişimi kayıtlarına dayalı bir rapor oluşturulmaktadır. Raporda her erişim kaydının zamanı, kullanıcının e-posta adresi ve IP adresi yer alır.

HTTP

POST https://analyticsadmin.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runAccessReport
{
  "dateRanges": [
    {
      "startDate": "7daysAgo",
      "endDate": "today"
    }
  ],
  "dimensions": [
    {
      "dimensionName": "epochTimeMicros"
    },
    {
      "dimensionName": "userEmail"
    },
    {
      "dimensionName": "userIP"
    }
  ],
  "dimensionFilter": {
    "accessFilter": {
      "fieldName": "userEmail",
      "stringFilter": {
        "matchType": "EXACT",
        "value": "Alex@example.net"
      }
    }
  }
}

Benzer şekilde, RunAccessReportRequest nesnesinin metricFilter alanı, rapor yanıtını filtreyle eşleşen belirli metrik değerleriyle kısıtlamak için kullanılabilir.

Aşağıdaki örnekte, belirtilen mülke 100'den fazla kez erişen tüm kullanıcıların e-postaları ve erişim sayıları içeren bir rapor oluşturulur.

HTTP

{
  "dateRanges": [
    {
      "startDate": "7daysAgo",
      "endDate": "today"
    }
  ],
  "dimensions": [
    {
      "dimensionName": "userEmail"
    }
  ],
  "metricFilter": {
    "accessFilter": {
      "numericFilter": {
        "operation": "GREATER_THAN",
        "value": {
          "int64Value": 100
        }
      },
      "fieldName": "accessCount"
    }
  },
  "metrics": [
    {
      "metricName": "accessCount"
    }
  ]
}

Örnek raporlar

Deneyebileceğiniz bazı örnek raporlar aşağıda verilmiştir.

En son erişim

runAccessReport kullanılarak oluşturulabilecek aşağıdaki örnek erişim raporu:

Dönemde son erişimden beri geçen süre (mikrosaniye) Kullanıcı e-posta adresi Erişim sayısı
1525220215025371 Bola@example.net 5
1525220215028361 Alex@example.net 36
1525220215027671 Charlie@example.net 1153
1525220215027341 Mahan@example.net 1

Bu rapor, boyutlar mostRecentAccessEpochTimeMicros, userEmail ve accessCount metriği sorgulanarak oluşturulabilir. Rapor her kullanıcı için bir satır içerir: mostRecentAccessEpochTimeMicros boyutu, mülke erişen her kullanıcının veri erişim kayıtlarını toplar ve her satır için son erişim zamanını (Unix başlangıç zamanından itibaren mikrosaniye cinsinden) döndürür.

Kullanıcı erişimi dökümü

Kullanıcı erişimlerinin erişim mekanizmasına (ör.Google Analytics kullanıcı arayüzü, API vb.) göre dökümünü içeren raporlar da faydalı raporlara örnek gösterilebilir.

Dönemde son erişimden beri geçen süre (mikrosaniye) Kullanıcı e-posta adresi Erişim mekanizması Erişim sayısı
1525220215028367 Alex@example.net Firebase 31
1525220215555778 Alex@example.net Google Analytics Kullanıcı Arayüzü 1
1525220215022378 Bola@example.net Google Analytics Kullanıcı Arayüzü 65
1525220215026389 Bola@example.net Google Analytics API 894
1525220215025631 Charlie@example.net Google Analytics API 67
1525220215068325 Mahan@example.net Google Ads 3

Bu rapor, mostRecentAccessEpochTimeMicros, userEmail, accessMechanism boyutları ve accessCount metriği sorgulanarak oluşturulabilir.

Rapor, her kullanıcı/erişim mekanizması kombinasyonu için bir satır içerir. mostRecentAccessEpochTimeMicros boyutu, kullanıcının belirtilen erişim mekanizmasını kullanarak mülke en son ne zaman eriştiğini içerir.

Mülk erişimine genel bakış

Bir mülk için tek tek kullanıcılara göre döküm oluşturmadan rapor oluşturabilirsiniz. Örneğin, aşağıdaki raporda bir mülke farklı erişim mekanizmaları kullanılarak ne sıklıkta erişildiği belirtilmektedir:

Erişilen mülkün kimliği Erişilen mülkün adı Erişim mekanizması Erişim sayısı
12345678 DemoApp Firebase 31
12345678 DemoApp Google Analytics Kullanıcı Arayüzü 624
12345678 DemoApp Google Ads 83
12345678 DemoApp Google Analytics API 1744

Bu rapor, accessedPropertyId, accessedPropertyName, accessMechanism boyutları ve accessCount metriği sorgulanarak oluşturulabilir.

Rapor, her mülk kimliği/erişim mekanizması kombinasyonu için bir satır içerir.

Bireysel veri erişimi

Her satırın ayrı bir veri erişimi kaydını temel aldığı bir rapor oluşturmak için mostRecentAccessEpochTimeMicros boyutunu sorgudan çıkarın ve bunun yerine epochTimeMicros boyutunu kullanın. Raporun her satırı tek bir veri erişimi olayı hakkında bilgi içerdiğinden accessCount metriğini sorgulamak gerekmez.

Aşağıdaki rapor, bir kullanıcının belirtilen tesise her erişiminin ayrıntılı bilgilerini içerir.

Unix epoch zamanı (mikrosaniye) Kullanıcı e-posta adresi Erişilen mülkün kimliği Erişilen mülkün adı Kullanıcının IP adresi Erişim mekanizması Döndürülen maliyet verileri Döndürülen gelir verileri
1525220215025371 Bola@example.net 12345678 DemoApp 1.2.3.1 Google Analytics Kullanıcı Arayüzü true true
1525220645645645 Mahan@example.net 12345678 DemoApp 1.2.3.5 Google Analytics Kullanıcı Arayüzü yanlış yanlış
1525220211312322 Bola@example.net 12345678 DemoApp 11.22.33.11 Google Ads true yanlış
1525220210234221 Alex@example.net 12345678 DemoApp 11.22.33.22 Firebase yanlış yanlış
1525220215028368 Alex@example.net 12345678 DemoApp 1.2.3.2 Google Ads yanlış yanlış
1525220214234231 Mahan@example.net 12345678 DemoApp 11.22.33.55 Google Ads true true
1525220423423452 Charlie@example.net 12345678 DemoApp 1.2.3.3 Google Analytics API true yanlış
1525220132312333 Mahan@example.net 12345678 DemoApp 1.2.3.5 Google Ads true true

Bu rapor, epochTimeMicros, userEmail, accessedPropertyId, accessedPropertyName, userIP, accessMechanism, costDataReturned, revenueDataReturned boyutlarını sorgulayarak oluşturulabilir.