Schema for session data tables based on Google Analytics data ("session_streaming")

Important!This algorithm works with Google Analytics Universal data format only.


Streamed data is separated into tables by days, according to a time zone of a Google Analytics view selected during streaming setup.

Tables naming is 'session_streaming_YYYYMMDD'.

Session data are generated within 24 hours (for example data for 13.04.2016 will be available not earlier than 14.04.2016).


Each session is written to a separate row.


The columns within the table are listed below.

Google BigQuery alias Google BigQuery data type Google Analytics dimension or metric
user RECORD  
user.Id STRING User ID STRING available only in Streaming, use parameter &tel=%2B1234567890 STRING available only in Streaming, use parameter &
clientId STRING Client ID
date STRING Record date in "YYYY-MM-DD" format
sessionId STRING Session ID (value of custom dimension chosen on «Settings» tab of your Streaming pipeline)
visitNumber INTEGER Count of Sessions
newVisits INTEGER Visitor type(1 - new || NULL - returned)
device RECORD  
device.deviceCategory STRING deviceCategory
device.browser STRING browser
device.browserVersion STRING browserVersion
device.operatingSystem STRING operatingSystem
device.operatingSystemVersion STRING operatingSystemVersion
device.mobileDeviceInfo STRING Data from mobileDeviceBranding, mobileDeviceModel и mobileDeviceMarketingName.
geoNetwork RECORD STRING city
geoNetwork.region STRING region STRING country
trafficSource RECORD  
trafficSource.source STRING Source
trafficSource.medium STRING Medium
trafficSource.campaign STRING Campaign
trafficSource.keyword STRING Keyword
trafficSource.adContent STRING


trafficSource.channelGrouping STRING channelGrouping
trafficSource.adwordsClickInfo RECORD  
trafficSource.adwordsClickInfo.adNetworkType STRING Ad Distribution Network (adDistributionNetwork)
trafficSource.adwordsClickInfo.adMatchedQuery STRING Search Query (adMatchedQuery)
trafficSource.adCost FLOAT The total sessions cost attributed evenly between sessions according to the UTM tags 'source', 'medium', 'campaign', 'keyword', and 'content' if the tags perfectly match in all sessins
trafficSource.attributedAdCost FLOAT When one or more tags are unknown, the total session cost is attributed evenly between the sessions according to the known tags
More on attributed ad cost
totals RECORD All totals data is taken from GA
totals.hits INTEGER Total number of hits by the session
totals.pageviews INTEGER Total number of pageviews by the session INTEGER Total number of events by the session
totals.transactions INTEGER Total number of transactions by the session
totals.visits INTEGER The total number of visits by the session
totals.screenviews INTEGER Total number of screenviews by the session
totalsStreaming RECORD All streaming totals data is taken from Hit Streaming
totalsStreaming.hits INTEGER SUM(rows) INTEGER SUM(rows) where type='event'
totalsStreaming.transactions INTEGER SUM(rows) where action='purchase'
totalsStreaming.pageviews INTEGER SUM(rows) where type='pageview'
totalsStreaming.screenviews INTEGER SUM(rows) where type='screenview'
hits RECORD  
hits.hitId STRING Hit identifier represented as UUID (version 4)
hits.isEntrance INTEGER The first pageview or screenview hit in the session (1 || NULL)
hits.isExit INTEGER The last pageview or screenview hit in the sesiion (1 || NULL)
hits.time INTEGER Hits time
hits.type STRING The type of hit
hits.pagePath STRING The field is deprecated, please use instead of it.
hits.pageType STRING TThe field is deprecated, please use instead of it.
hits.eCommerceActionType STRING The field is deprecated, please use hits.eCommerceAction.action_type instead of it.
hits.isInteraction BOOLEAN Non-Interaction Hit
hits.currency STRING Currency Code
hits.referer STRING Full Referrer
hits.dataSource STRING Data Source
hits.device RECORD  
hits.device.ip STRING IP Override
hits.contentGroups RECORD  
hits.contentGroups.index INTEGER Page Group XX
hits.contentGroups.value STRING Page Group XX RECORD STRING Social Action STRING Social Source STRING Social Entity RECORD STRING Content grouping or a hit scope custom dimension (to collect the data set a parameter on Page type parameter on «Settings» tab of your Streaming pipeline) STRING Page STRING Hostname STRING Page Title
hits.eCommerceAction RECORD  
hits.eCommerceAction.action_type STRING Product Action
hits.eCommerceAction.option STRING Checkout Options
hits.eCommerceAction.step INTEGER Checkout Step
hits.eCommerceAction.list STRING Product Action List.
A list where an action on product occurred (product.isImpression=FALSE).
hits.experiment RECORD Content experiments
hits.experiment.experimentId STRING Experiment ID
hits.experiment.experimentVariant STRING Experiment variant
hits.product RECORD  
hits.product.isImpression BOOLEAN hits.product.isImpression
hits.product.impressionList STRING Product List Name.
A list where a product was shown (product.isImpression=TRUE).
hits.product.productListName STRING productListName
hits.product.productBrand STRING Product Brand
hits.product.productSku STRING Product SKU
hits.product.productVariant STRING Product Variant
hits.product.productPrice FLOAT Product Price
hits.product.localProductPrice FLOAT Local Product Price converted via Yahoo Currecy Converter
hits.product.productQuantity INTEGER Quantity
hits.product.productCategory STRING Product Category
hits.product.productName STRING Product STRING Product Coupon Code
hits.promotion RECORD  
hits.promotion.promoCreative STRING Internal Promotion Creative
hits.promotion.promoId STRING Internal Promotion ID
hits.promotion.promoName STRING Internal Promotion Name
hits.promotion.promoPosition STRING Internal Promotion Position
hits.promotionActionInfo STRING Promotion Action
hits.transaction RECORD  
hits.transaction.transactionId STRING Transaction ID
hits.transaction.transactionRevenue FLOAT Revenue
hits.transaction.localTransactionRevenue FLOAT Local Revenue converted via Yahoo Currecy Converter
hits.transaction.transactionTax FLOAT Tax
hits.transaction.localTransactionTax FLOAT Local Tax converted via Yahoo Currecy Converter
hits.transaction.transactionShipping FLOAT Shipping
hits.transaction.localTransactionShipping FLOAT Local Shipping converted via Yahoo Currecy Converter
hits.transaction.transactionCoupon STRING Order Coupon Code
hits.transaction.affiliation STRING Affiliation
hits.contentInfo RECORD  
hits.contentInfo.contentDescription STRING Screen Name
hits.appInfo RECORD STRING App Name
hits.appInfo.version STRING App Version STRING App ID
hits.appInfo.installerId STRING App Installer ID
hits.eventInfo RECORD  
hits.eventInfo.eventCategory STRING Event Category
hits.eventInfo.eventAction STRING Event Action
hits.eventInfo.eventLabel STRING Event Label
hits.eventInfo.eventValue INTEGER Event Value
hits.timingInfo RECORD  
hits.timingInfo.timingCategory STRING Timing Category
hits.timingInfo.timingVariable STRING Timing Variable
hits.timingInfo.timingLabel STRING Timing Label
hits.timingInfo.timingValue INTEGER User Timing
hits.timingInfo.pageLoad INTEGER Page Load Time
hits.timingInfo.DNS INTEGER Domain Lookup Time
hits.timingInfo.pageDownload INTEGER Page Download Time
hits.timingInfo.redirectResponse INTEGER Redirection Time
hits.timingInfo.TCPConnect INTEGER Server Connection Time
hits.timingInfo.serverResponse INTEGER Server Response Time
hits.timingInfo.DOMInteractive INTEGER Document Interactive Time
hits.timingInfo.contentLoad INTEGER Document Content Loaded Time

 Tables contain repeated records. When selecting data, tables will be flattened over nested fields. 

Was this article helpful?
2 out of 2 found this helpful
Have more questions? Submit a request


Please sign in to leave a comment.