分区表中的分区日期范围

时间:2020-03-24 18:58:07

标签: sql google-bigquery

是否可以基于同一GBQ表中的其他日期选择分区日期范围?

_partitiondate的数据类型为时间戳

purchase_date的数据类型为字符串

下面是我想做的事-

_PARTITIONDATE < DATE(CAST(purchase_date as TIMESTAMP))
and _PARTITIONDATE >= date_add(date(CAST(purchase_date as TIMESTAMP)), interval -30 day)

我收到以下错误-

Cannot query over table 'project.dataset.table' without a filter over column(s) '_PARTITION_LOAD_TIME', '_PARTITIONDATE', '_PARTITIONTIME' that can be used for partition elimination

1 个答案:

答案 0 :(得分:1)

据记载,这是可能的(有关更多详细信息,请参见Querying partitions using pseudo colums),下面是文档中建议的结构:

Internal Server Error: /videos/upload/
Traceback (most recent call last):
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/django/views/generic/base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/rest_framework/views.py", line 505, in dispatch
    response = self.handle_exception(exc)
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/rest_framework/views.py", line 465, in handle_exception
    self.raise_uncaught_exception(exc)
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/rest_framework/views.py", line 476, in raise_uncaught_exception
    raise exc
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/rest_framework/views.py", line 502, in dispatch
    response = handler(request, *args, **kwargs)
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/rest_framework/generics.py", line 242, in post
    return self.create(request, *args, **kwargs)
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/rest_framework/mixins.py", line 19, in create
    self.perform_create(serializer)
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/rest_framework/mixins.py", line 24, in perform_create
    serializer.save()
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/rest_framework/serializers.py", line 213, in save
    self.instance = self.create(validated_data)
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/rest_framework/serializers.py", line 932, in create
    instance = ModelClass._default_manager.create(**validated_data)
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/django/db/models/query.py", line 422, in create
    obj.save(force_insert=True, using=self.db)
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/django/db/models/base.py", line 741, in save
    force_update=force_update, update_fields=update_fields)
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/django/db/models/base.py", line 790, in save_base
    update_fields=update_fields, raw=raw, using=using,
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/django/dispatch/dispatcher.py", line 175, in send
    for receiver in self._live_receivers(sender)
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/django/dispatch/dispatcher.py", line 175, in <listcomp>
    for receiver in self._live_receivers(sender)
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/videos/signals.py", line 10, in create_gif_from_video
    instance.gif = VideoFileClip(instance.video.name).subclip(0,2).write_gif("myGif.gif")
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/moviepy/video/io/VideoFileClip.py", line 91, in __init__
    fps_source=fps_source)
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/moviepy/video/io/ffmpeg_reader.py", line 33, in __init__
    fps_source)
  File "/home/ac3l1k/Desktop/PROJECT/djangoProject/env/lib/python3.6/site-packages/moviepy/video/io/ffmpeg_reader.py", line 276, in ffmpeg_parse_infos
    "path.")%filename)
OSError: MoviePy error: the file Videos/2020-03-25-16-16-21-524_JTyCYlg.mp4 could not be found!
Please check that you entered the correct path.

_PARTITIONDATE >= "2018-01-29" AND _PARTITIONDATE < "2018-01-30"

问题是,正如您正确建议的那样,比较值应为TIMESTAMP数据类型,因此可以采用另一种方法:

_PARTITIONDATE BETWEEN '2016-01-01' AND '2016-01-02'

我认为类似以下的方法应该起作用:

_PARTITIONDATE < TIMESTAMP(purchase_date)
and _PARTITIONDATE >= TIMESTAMP_ADD(TIMESTAMP(purchase_date), interval -30 day)
相关问题