【发布时间】:2019-03-22 03:57:30
【问题描述】:
背景:
这个问题可能有点宽泛,但希望任何使用关系数据、R、Power BI 或以上所有工具的人都能感兴趣。
我正在尝试为Wickham and Grolemund 的书R for Data Science 中描述的数据集nycflights13 重新创建一个关系模型。我正在尝试同时使用 R 和 Power BI。数据集由airlines、ariports、flights、weather 和planes 5 个表组成。在13.2 nycflights13部分有一段话:
航班通过始发地(位置)和年份连接到天气, 月、日和小时(时间)。
关系如下图所示:
问题 1:如何在 Power BI 中设置此模型?
使用以下 R 脚本将使数据集可用于文件夹 c:/data 中的 Power BI:
# install.packages("tidyverse")
# install.packages("nycflights13")
library(tidyverse)
library(nycflights13)
setwd("C:/data/")
#getwd()
airlines
df_airlines <- data.frame(airlines)
df_airports <- data.frame(airports)
df_planes <- data.frame(planes)
df_weather <- data.frame(weather)
df_flights <- data.frame(flights)
write.csv(df_airlines, file = "C:/data/airlines.txt", row.names = FALSE)
write.csv(df_airports, file = "C:/data/airports.txt", row.names = FALSE)
write.csv(df_planes, file = "C:/data/planes.txt", row.names = FALSE)
write.csv(df_weather, file = "C:/data/weather.txt", row.names = FALSE)
write.csv(df_flights, file = "C:/data/flights.txt", row.names = FALSE)
在 Power BI 中导入表格后,我正在尝试在 Relationships tab 中建立关系:
我可以在某种程度上这样做,但是当我尝试使用例如year 将flights 连接到weather 时,我收到以下错误消息:
您无法在这两个列之间创建关系,因为其中一个 的列必须具有唯一值。
我知道这是因为primary keys must contain unique values and cannot contain null values。但是如何在 Power BI 中建立一个由多个字段组成的主键?
问题 2:如果问题 1 没有答案,那么如何在 R 中做到这一点?
我真的很喜欢这本书,它甚至可能已经被描述过了,但是你如何在 R 中建立这样的关系呢?或者你可能不需要,因为你可以join on multiple columns or composite key using dplyr 根本没有“建立”关系?
换一种说法,就是上图用箭头表示的关系:
在 Power BI 中使用以下行:
只要你有所需的verbs,在 R 中真的没有必要,而且不同表中的数据之间确实存在关联?
问题 3 - 为什么航班表中会突出显示航班:
我认为突出显示的列名表明已在使用该列的表之间建立了连接。但据我所知,这里不是这样,也没有箭头指向它:
它是否可能表明它是flights 表中的主键,与另一个表没有任何连接?
我知道这有点宽泛,但我真的对这些东西很好奇,所以我希望你们中的一些人会觉得它很有趣!
【问题讨论】:
-
嗨。正如我刚刚在an earlier question 上所说:查询不需要FK 和其他约束。他们告诉 DBMS 不允许无效状态。他们建议建立索引以进行优化。一些工具使用它们来自动生成部分查询,因为查询经常使用这些列。 PS 请每个帖子问一个问题。
-
Power BI Developer 实际上没有 CK/PK/FK 的概念。它的“关系”用于构建查询。 FK 确实经常存在从查询结果到基表的地方。请参阅Create and manage relationships in Power BI Desktop 及其开发人员的下载 PDF 链接。所以你的问题真的没有意义。请对其进行编辑以清楚地区分 FK(又名伪 ER“关系”)和 BI“关系”。 PS 是什么生成了椭圆/箭头图?
标签: r dplyr relational-database powerbi